From 8a2351485d4494d8bc476910aab5daba39b8ed60 Mon Sep 17 00:00:00 2001 From: Matisse Chenavas Date: Thu, 20 Jun 2024 18:06:29 +0200 Subject: [PATCH 01/20] WIP loadbalancing --- src/Common.cpp | 13 ++++++- src/Common.hpp | 19 +++++++++- src/Server.cpp | 101 ++++++++++++++++++++++++++++++++++++++++++++----- src/Server.hpp | 20 +++++++--- src/Worker.cpp | 77 +++++++++++++++++++------------------ src/Worker.hpp | 20 ++++++---- 6 files changed, 183 insertions(+), 67 deletions(-) diff --git a/src/Common.cpp b/src/Common.cpp index 665707b..f1f0f04 100644 --- a/src/Common.cpp +++ b/src/Common.cpp @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* Common.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: agaley +#+ +:+ +#+ */ +/* By: mchenava +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/24 11:06:33 by mchenava #+# #+# */ -/* Updated: 2024/06/17 19:39:18 by agaley ### ########lyon.fr */ +/* Updated: 2024/06/20 17:21:31 by mchenava ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,3 +48,12 @@ std::string generateSessionId(void) { } return sessionId; } + +bool isInSet(int fd, std::set& listenSockets) { + for (std::set::iterator it = listenSockets.begin(); it != listenSockets.end(); ++it) { + if (it->socket == fd) { + return true; + } + } + return false; +} diff --git a/src/Common.hpp b/src/Common.hpp index 76e49c1..97503d3 100644 --- a/src/Common.hpp +++ b/src/Common.hpp @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* Common.hpp :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: agaley +#+ +:+ +#+ */ +/* By: mchenava +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/24 11:09:02 by mchenava #+# #+# */ -/* Updated: 2024/06/17 19:44:02 by agaley ### ########lyon.fr */ +/* Updated: 2024/06/20 17:29:09 by mchenava ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,9 +15,24 @@ #include #include +#include "Config.hpp" int set_non_blocking(int sockfd); void signalHandler(int signum); std::string generateSessionId(void); +typedef struct s_listen_socket { + int socket; + ListenConfig config; + bool operator<(const s_listen_socket& rhs) const { + return socket < rhs.socket; + } + bool isIn(int fd) const { + return socket == fd; + } +} t_listen_socket; + +bool isInSet(int fd, std::set& listenSockets); + + #endif diff --git a/src/Server.cpp b/src/Server.cpp index f60aff3..ca972a8 100644 --- a/src/Server.cpp +++ b/src/Server.cpp @@ -14,17 +14,18 @@ #include "Common.hpp" #include "ConfigManager.hpp" #include "Utils.hpp" +#include Server* Server::_instance = NULL; Server::Server() : _config(ConfigManager::getInstance().getConfig()), _log(Logger::getInstance()), - _workerIndex(0), _activeWorkers(0) { - _setupWorkers(); + _setupEpoll(); _setupServerSockets(); + _setupWorkers(); pthread_mutex_init(&_mutex, NULL); pthread_cond_init(&_cond, NULL); } @@ -63,11 +64,50 @@ void Server::start() { _activeWorkers++; pthread_mutex_unlock(&_mutex); } - pthread_mutex_lock(&_mutex); - while (_activeWorkers > 0) { - pthread_cond_wait(&_cond, &_mutex); + // pthread_mutex_lock(&_mutex); + // while (_activeWorkers > 0) { + // pthread_cond_wait(&_cond, &_mutex); + // } + // pthread_mutex_unlock(&_mutex); + while (true) { + struct epoll_event events[MAX_EVENTS]; + int nfds = epoll_wait(_epollSocket, events, MAX_EVENTS, -1); + for (int i = 0; i < nfds; i++) { + _log.info("SERVER: Dispatching event" + Utils::to_string(events[i].data.fd)); + _dispatchEvent(events[i]); + } } - pthread_mutex_unlock(&_mutex); +} + +void Server::_dispatchEvent(struct epoll_event event) { + Worker* bestChoice = NULL; + int lowestLoad = INT_MAX; + + // Parcourir tous les workers pour trouver le meilleur choix + std::vector::iterator it; + for (it = _workers.begin(); it != _workers.end(); ++it) { + int workerLoad = (*it)->getLoad(); + + // Si un worker avec une charge de 0 est trouvé, sélectionnez-le immédiatement + if (workerLoad == 0) { + bestChoice = *it; + break; // Arrêtez la recherche car vous avez trouvé le worker idéal + } + + // Sinon, continuez à chercher le worker avec la charge minimale + if (workerLoad < lowestLoad) { + lowestLoad = workerLoad; + bestChoice = *it; + } + } + + // Si un worker a été sélectionné, lui assigner l'événement + if (bestChoice != NULL) { + bestChoice->pushEvent(event); + _log.info("SERVER: Dispatched event to worker with load " + Utils::to_string(lowestLoad) + " for fd " + Utils::to_string(event.data.fd)); + } else { + _log.error("SERVER: No available worker to dispatch event for fd " + Utils::to_string(event.data.fd)); + } } void Server::stop(int signum) { @@ -81,10 +121,37 @@ void Server::stop(int signum) { void Server::_setupWorkers() { for (int i = 0; i < _config.worker_processes; i++) { - _workers.push_back(new Worker()); + _workers.push_back(new Worker(_epollSocket, _listenSockets)); } } +void Server::_setupEpoll() { + _epollSocket = epoll_create1(0); + if (_epollSocket == -1) { + _log.error("Failed to create epoll socket"); + throw std::runtime_error("Failed to create epoll socket"); + } +} + +std::vector Server::_setupAssociateVirtualServers( + const ListenConfig& listenConfig) { + std::vector virtualServers; + + for (std::vector::iterator it = _config.servers.begin(); + it != _config.servers.end(); ++it) { + for (std::vector::iterator lit = it->listen.begin(); + lit != it->listen.end(); ++lit) { + if (*lit == listenConfig) { + _log.info("WORKER: Associate VirtualServer to a conn: " + + it->server_names[0] + "\n"); + virtualServers.push_back(new VirtualServer(*it)); + break; + } + } + } + return virtualServers; +} + void Server::_setupServerSockets() { const std::set& uniqueConfigs = _config.unique_listen_configs; @@ -179,8 +246,22 @@ void Server::_setupServerSockets() { close(sock); continue; } - _listenSockets[listenConfig] = sock; - _workers[_workerIndex]->assignConnection(sock, listenConfig); - _workerIndex = (_workerIndex + 1) % _config.worker_processes; + + struct epoll_event event; + event.data.fd = sock; + event.events = EPOLLIN | EPOLLET; + if (epoll_ctl(_epollSocket, EPOLL_CTL_ADD, sock, &event) == -1) { + close(sock); + _log.error(std::string("WORKER (assign conn): Failed \"epoll_ctl\": ") + + strerror(errno) + " (" + Utils::to_string(sock) + ")"); + continue; + } + t_listen_socket listenSocket = {sock, listenConfig}; + _listenSockets.insert(listenSocket); + virtualServers[listenSocket.socket] = _setupAssociateVirtualServers(listenSocket.config); } } + +std::vector Server::getVirtualServer(int fd) { + return _instance->virtualServers[fd]; +} diff --git a/src/Server.hpp b/src/Server.hpp index 872338d..9c93a1c 100644 --- a/src/Server.hpp +++ b/src/Server.hpp @@ -6,7 +6,7 @@ /* By: mchenava +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/04/28 15:34:01 by agaley #+# #+# */ -/* Updated: 2024/06/20 15:31:20 by mchenava ### ########.fr */ +/* Updated: 2024/06/20 17:18:16 by mchenava ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,8 +21,10 @@ #include #include "Config.hpp" +#include "Common.hpp" #include "Logger.hpp" #include "Worker.hpp" +#include class Worker; @@ -32,20 +34,26 @@ class Server { Config& _config; Logger& _log; std::vector _workers; - int _workerIndex; - std::map _listenSockets; + std::set _listenSockets; pthread_mutex_t _mutex; pthread_cond_t _cond; - int _activeWorkers; + int _epollSocket; + int _activeWorkers; + void _setupServerSockets(); void _setupWorkers(); - static void _signalHandler(int signum); - + void _setupEpoll(); + void _dispatchEvent(struct epoll_event event); + std::vector _setupAssociateVirtualServers( + const ListenConfig& listenConfig); public: + std::map > virtualServers; + Server(); static Server& getInstance(); + static std::vector getVirtualServer(int fd); void workerFinished(); ~Server(); diff --git a/src/Worker.cpp b/src/Worker.cpp index 30b90bf..10c1eae 100644 --- a/src/Worker.cpp +++ b/src/Worker.cpp @@ -15,19 +15,26 @@ #include "ConfigManager.hpp" #include "Server.hpp" -Worker::Worker() +Worker::Worker(int epollSocket, std::set& listenSockets) : _config(ConfigManager::getInstance().getConfig()), _log(Logger::getInstance()), - _maxConnections(_config.worker_connections), - _currentConnections(0), + // _maxConnections(_config.worker_connections), + // _currentConnections(0), + _epollSocket(epollSocket), + _listenSockets(listenSockets), + _events(), _shouldStop(false) { _log.info("Worker constructor called"); - _setupEpoll(); + pthread_mutex_init(&_queueMutex, NULL); + _events.push(epoll_event()); + _events.pop(); + _log.info("WORKER: event queue size: " + Utils::to_string(_events.size())); } Worker::~Worker() { // _stop(); + pthread_mutex_destroy(&_queueMutex); // pthread_mutex_destroy(&_stopMutex); } @@ -71,46 +78,37 @@ std::vector Worker::_setupAssociateVirtualServer( return virtualServers; } -void Worker::assignConnection(int clientSocket, - const ListenConfig& listenConfig) { - struct epoll_event event; - event.data.fd = clientSocket; - event.events = EPOLLIN | EPOLLET; - - if (_currentConnections >= _maxConnections) { - _log.error("WORKER: Max connections reached"); - close(clientSocket); - } else { - if (epoll_ctl(_epollSocket, EPOLL_CTL_ADD, clientSocket, &event) == -1) { - close(clientSocket); - _log.error(std::string("WORKER (assign conn): Failed \"epoll_ctl\": ") + - strerror(errno) + " (" + Utils::to_string(clientSocket) + ")"); - return; - } - _listenSockets.push_back(clientSocket); - _listenConfigs[clientSocket] = listenConfig; - _virtualServers[clientSocket] = _setupAssociateVirtualServer(listenConfig); - _currentConnections++; - } + +void Worker::pushEvent(struct epoll_event event) { + pthread_mutex_lock(&_queueMutex); + _events.push(event); + pthread_mutex_unlock(&_queueMutex); + _log.info("WORKER: Pushed event to queue"); +} + +int Worker::getLoad() { + pthread_mutex_lock(&_queueMutex); + int load = _events.size(); + pthread_mutex_unlock(&_queueMutex); + return load; } void Worker::_runEventLoop() { - struct epoll_event events[MAX_EVENTS]; - int nfds; while (!_shouldStop) { - nfds = epoll_wait(_epollSocket, events, MAX_EVENTS, -1); - if (nfds <= 0) { - _log.error("Erreur lors de l'attente des événements epoll"); + pthread_mutex_lock(&_queueMutex); + if (_events.empty()) { + usleep(1000); + pthread_mutex_unlock(&_queueMutex); continue; } - - for (int n = 0; n < nfds; ++n) { - if (std::find(_listenSockets.begin(), _listenSockets.end(), - events[n].data.fd) != _listenSockets.end()) - _acceptNewConnection(events[n].data.fd); - else - _handleIncomingConnection(events[n]); - } + pthread_mutex_unlock(&_queueMutex); + struct epoll_event event = _events.front(); + _events.pop(); + pthread_mutex_unlock(&_queueMutex); + if (isInSet(event.data.fd, _listenSockets)) + _acceptNewConnection(event.data.fd); + else + _handleIncomingConnection(event); } } @@ -139,8 +137,9 @@ void Worker::_acceptNewConnection(int fd) { continue; } event.events = EPOLLIN | EPOLLET | EPOLLONESHOT; + std::vector virtualServers = Server::getVirtualServer(fd); ConnectionHandler* handler = new ConnectionHandler( - new_socket, _epollSocket, /*_listenConfigs[fd],*/ _virtualServers[fd]); + new_socket, _epollSocket, virtualServers); _handlers[new_socket] = handler; event.data.ptr = handler; if (epoll_ctl(_epollSocket, EPOLL_CTL_ADD, new_socket, &event) < 0) { diff --git a/src/Worker.hpp b/src/Worker.hpp index 1717b23..6e92b77 100644 --- a/src/Worker.hpp +++ b/src/Worker.hpp @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* Worker.hpp :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: mchenava < mchenava@student.42lyon.fr> +#+ +:+ +#+ */ +/* By: mchenava +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/05/22 12:06:51 by mchenava #+# #+# */ -/* Updated: 2024/06/11 15:53:12 by mchenava ### ########.fr */ +/* Updated: 2024/06/20 17:15:34 by mchenava ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,10 +21,12 @@ #include #include #include +#include #include "ConnectionHandler.hpp" #include "Logger.hpp" #include "Utils.hpp" +#include "Common.hpp" #include "VirtualServer.hpp" #define MAX_EVENTS 10 @@ -38,13 +40,14 @@ class Worker { Config& _config; Logger& _log; std::map _handlers; - std::map _listenConfigs; std::map > _virtualServers; int _epollSocket; - std::vector _listenSockets; - int _maxConnections; - int _currentConnections; + std::set _listenSockets; + std::queue _events; + // int _maxConnections; + // int _currentConnections; bool _shouldStop; + pthread_mutex_t _queueMutex; static void* _workerRoutine(void* ref); @@ -56,11 +59,12 @@ class Worker { void _handleIncomingConnection(struct epoll_event& event); public: - Worker(); + Worker(int epollSocket, std::set& listenSockets); ~Worker(); - void assignConnection(int clientSocket, const ListenConfig& listenConfig); void stop(); void start(); + void pushEvent(struct epoll_event event); + int getLoad(); }; #endif From dd7b22cd3d2b3c05574f0511543a7d1a158ab724 Mon Sep 17 00:00:00 2001 From: ZEDIUM-Off Date: Fri, 21 Jun 2024 16:04:19 +0200 Subject: [PATCH 02/20] WIP epoll verif --- NXtest_conf.conf | 34 + local.conf | 78 + siege-4.1.6/AUTHORS | 15 + siege-4.1.6/COPYING | 674 + siege-4.1.6/ChangeLog | 363 + siege-4.1.6/INSTALL | 221 + siege-4.1.6/Makefile | 792 + siege-4.1.6/Makefile.am | 34 + siege-4.1.6/Makefile.in | 792 + siege-4.1.6/PLATFORM | 1 + siege-4.1.6/README.md | 141 + siege-4.1.6/acinclude.m4 | 6879 +++++++ siege-4.1.6/aclocal.m4 | 1040 + siege-4.1.6/acspecific.m4 | 1050 ++ siege-4.1.6/config.status | 1389 ++ siege-4.1.6/configure | 23038 +++++++++++++++++++++++ siege-4.1.6/configure.ac | 533 + siege-4.1.6/doc/Makefile | 573 + siege-4.1.6/doc/Makefile.am | 83 + siege-4.1.6/doc/Makefile.in | 573 + siege-4.1.6/doc/bombardment.1 | 173 + siege-4.1.6/doc/bombardment.1.in | 173 + siege-4.1.6/doc/bombardment.pod | 42 + siege-4.1.6/doc/siege.1 | 581 + siege-4.1.6/doc/siege.1.in | 581 + siege-4.1.6/doc/siege.config.1 | 183 + siege-4.1.6/doc/siege.config.1.in | 183 + siege-4.1.6/doc/siege.config.pod | 48 + siege-4.1.6/doc/siege.pod | 460 + siege-4.1.6/doc/siege2csv.1 | 173 + siege-4.1.6/doc/siege2csv.1.in | 173 + siege-4.1.6/doc/siege2csv.pod | 42 + siege-4.1.6/doc/siegerc | 634 + siege-4.1.6/doc/siegerc.in | 634 + siege-4.1.6/doc/urls.txt | 27 + siege-4.1.6/html/Makefile | 450 + siege-4.1.6/html/Makefile.am | 35 + siege-4.1.6/html/Makefile.in | 450 + siege-4.1.6/html/README | 15 + siege-4.1.6/html/basic.php | 26 + siege-4.1.6/html/cache-control.php | 16 + siege-4.1.6/html/cookie-expire.php | 17 + siege-4.1.6/html/etag.php | 30 + siege-4.1.6/html/login.php | 92 + siege-4.1.6/include/Makefile | 640 + siege-4.1.6/include/Makefile.am | 30 + siege-4.1.6/include/Makefile.in | 640 + siege-4.1.6/include/config.h | 288 + siege-4.1.6/include/config.h.in | 287 + siege-4.1.6/include/joedog/Makefile | 505 + siege-4.1.6/include/joedog/Makefile.am | 26 + siege-4.1.6/include/joedog/Makefile.in | 505 + siege-4.1.6/include/joedog/boolean.h | 34 + siege-4.1.6/include/joedog/defs.h | 65 + siege-4.1.6/include/joedog/getopt.h | 171 + siege-4.1.6/include/joedog/path.h | 32 + siege-4.1.6/include/stamp-h1 | 1 + siege-4.1.6/install-sh | 401 + siege-4.1.6/libtool | 7574 ++++++++ siege-4.1.6/src/Makefile | 659 + siege-4.1.6/src/Makefile.am | 73 + siege-4.1.6/src/Makefile.in | 659 + siege-4.1.6/src/ansidecl.h | 434 + siege-4.1.6/src/array.c | 235 + siege-4.1.6/src/array.h | 50 + siege-4.1.6/src/auth.c | 1190 ++ siege-4.1.6/src/auth.h | 57 + siege-4.1.6/src/base64.c | 174 + siege-4.1.6/src/base64.h | 43 + siege-4.1.6/src/browser.c | 1114 ++ siege-4.1.6/src/browser.h | 46 + siege-4.1.6/src/cache.c | 244 + siege-4.1.6/src/cache.h | 51 + siege-4.1.6/src/cfg.c | 236 + siege-4.1.6/src/cfg.h | 31 + siege-4.1.6/src/cookie.c | 511 + siege-4.1.6/src/cookie.h | 52 + siege-4.1.6/src/cookies.c | 408 + siege-4.1.6/src/cookies.h | 26 + siege-4.1.6/src/creds.c | 153 + siege-4.1.6/src/creds.h | 42 + siege-4.1.6/src/crew.c | 335 + siege-4.1.6/src/crew.h | 50 + siege-4.1.6/src/data.c | 274 + siege-4.1.6/src/data.h | 79 + siege-4.1.6/src/date.c | 590 + siege-4.1.6/src/date.h | 50 + siege-4.1.6/src/eval.c | 115 + siege-4.1.6/src/eval.h | 34 + siege-4.1.6/src/ftp.c | 377 + siege-4.1.6/src/ftp.h | 42 + siege-4.1.6/src/getopt.c | 1060 ++ siege-4.1.6/src/getopt1.c | 191 + siege-4.1.6/src/handler.c | 86 + siege-4.1.6/src/handler.h | 32 + siege-4.1.6/src/hash.c | 489 + siege-4.1.6/src/hash.h | 51 + siege-4.1.6/src/http.c | 728 + siege-4.1.6/src/http.h | 55 + siege-4.1.6/src/init.c | 714 + siege-4.1.6/src/init.h | 31 + siege-4.1.6/src/load.c | 373 + siege-4.1.6/src/load.h | 32 + siege-4.1.6/src/log.c | 225 + siege-4.1.6/src/log.h | 35 + siege-4.1.6/src/main.c | 614 + siege-4.1.6/src/md5.c | 440 + siege-4.1.6/src/md5.h | 154 + siege-4.1.6/src/memory.c | 163 + siege-4.1.6/src/memory.h | 36 + siege-4.1.6/src/notify.c | 178 + siege-4.1.6/src/notify.h | 50 + siege-4.1.6/src/page.c | 127 + siege-4.1.6/src/page.h | 18 + siege-4.1.6/src/parser.c | 366 + siege-4.1.6/src/parser.h | 32 + siege-4.1.6/src/perl.c | 222 + siege-4.1.6/src/perl.h | 40 + siege-4.1.6/src/response.c | 685 + siege-4.1.6/src/response.h | 141 + siege-4.1.6/src/setup.h | 234 + siege-4.1.6/src/siege | Bin 0 -> 665784 bytes siege-4.1.6/src/sock.c | 814 + siege-4.1.6/src/sock.h | 142 + siege-4.1.6/src/ssl.c | 275 + siege-4.1.6/src/ssl.h | 57 + siege-4.1.6/src/stralloc.c | 51 + siege-4.1.6/src/stralloc.h | 29 + siege-4.1.6/src/timer.c | 63 + siege-4.1.6/src/timer.h | 30 + siege-4.1.6/src/url.c | 1343 ++ siege-4.1.6/src/url.h | 147 + siege-4.1.6/src/util.c | 417 + siege-4.1.6/src/util.h | 53 + siege-4.1.6/src/version.c | 15 + siege-4.1.6/src/version.h | 10 + siege-4.1.6/utils/Makefile | 472 + siege-4.1.6/utils/Makefile.am | 61 + siege-4.1.6/utils/Makefile.in | 472 + siege-4.1.6/utils/bombardment | 105 + siege-4.1.6/utils/bombardment.in | 105 + siege-4.1.6/utils/bootstrap | 17 + siege-4.1.6/utils/compile | 347 + siege-4.1.6/utils/config.guess | 1462 ++ siege-4.1.6/utils/config.sub | 1823 ++ siege-4.1.6/utils/install-sh | 401 + siege-4.1.6/utils/ltmain.sh | 6911 +++++++ siege-4.1.6/utils/manifier | 14 + siege-4.1.6/utils/mdate-sh | 92 + siege-4.1.6/utils/missing | 215 + siege-4.1.6/utils/mkinstalldirs | 158 + siege-4.1.6/utils/mkstamp | 9 + siege-4.1.6/utils/siege.config | 671 + siege-4.1.6/utils/siege.config.in | 32 + siege-4.1.6/utils/siege2csv.in | 242 + siege-4.1.6/utils/siege2csv.pl | 242 + siege-latest.tar.gz | Bin 0 -> 527103 bytes site/long.html | 6448 +++++++ src/Common.cpp | 12 +- src/Common.hpp | 16 +- src/ConnectionHandler.cpp | 8 +- src/ConnectionHandler.hpp | 8 +- src/Server.cpp | 77 +- src/Server.hpp | 11 +- src/Worker.cpp | 60 +- src/Worker.hpp | 12 +- 166 files changed, 94620 insertions(+), 105 deletions(-) create mode 100644 NXtest_conf.conf create mode 100644 local.conf create mode 100644 siege-4.1.6/AUTHORS create mode 100644 siege-4.1.6/COPYING create mode 100644 siege-4.1.6/ChangeLog create mode 100644 siege-4.1.6/INSTALL create mode 100644 siege-4.1.6/Makefile create mode 100644 siege-4.1.6/Makefile.am create mode 100644 siege-4.1.6/Makefile.in create mode 100644 siege-4.1.6/PLATFORM create mode 100644 siege-4.1.6/README.md create mode 100644 siege-4.1.6/acinclude.m4 create mode 100644 siege-4.1.6/aclocal.m4 create mode 100644 siege-4.1.6/acspecific.m4 create mode 100644 siege-4.1.6/config.status create mode 100644 siege-4.1.6/configure create mode 100644 siege-4.1.6/configure.ac create mode 100644 siege-4.1.6/doc/Makefile create mode 100644 siege-4.1.6/doc/Makefile.am create mode 100644 siege-4.1.6/doc/Makefile.in create mode 100644 siege-4.1.6/doc/bombardment.1 create mode 100644 siege-4.1.6/doc/bombardment.1.in create mode 100644 siege-4.1.6/doc/bombardment.pod create mode 100644 siege-4.1.6/doc/siege.1 create mode 100644 siege-4.1.6/doc/siege.1.in create mode 100644 siege-4.1.6/doc/siege.config.1 create mode 100644 siege-4.1.6/doc/siege.config.1.in create mode 100644 siege-4.1.6/doc/siege.config.pod create mode 100644 siege-4.1.6/doc/siege.pod create mode 100644 siege-4.1.6/doc/siege2csv.1 create mode 100644 siege-4.1.6/doc/siege2csv.1.in create mode 100644 siege-4.1.6/doc/siege2csv.pod create mode 100644 siege-4.1.6/doc/siegerc create mode 100644 siege-4.1.6/doc/siegerc.in create mode 100644 siege-4.1.6/doc/urls.txt create mode 100644 siege-4.1.6/html/Makefile create mode 100644 siege-4.1.6/html/Makefile.am create mode 100644 siege-4.1.6/html/Makefile.in create mode 100644 siege-4.1.6/html/README create mode 100644 siege-4.1.6/html/basic.php create mode 100644 siege-4.1.6/html/cache-control.php create mode 100644 siege-4.1.6/html/cookie-expire.php create mode 100644 siege-4.1.6/html/etag.php create mode 100644 siege-4.1.6/html/login.php create mode 100644 siege-4.1.6/include/Makefile create mode 100644 siege-4.1.6/include/Makefile.am create mode 100644 siege-4.1.6/include/Makefile.in create mode 100644 siege-4.1.6/include/config.h create mode 100644 siege-4.1.6/include/config.h.in create mode 100644 siege-4.1.6/include/joedog/Makefile create mode 100644 siege-4.1.6/include/joedog/Makefile.am create mode 100644 siege-4.1.6/include/joedog/Makefile.in create mode 100644 siege-4.1.6/include/joedog/boolean.h create mode 100644 siege-4.1.6/include/joedog/defs.h create mode 100644 siege-4.1.6/include/joedog/getopt.h create mode 100644 siege-4.1.6/include/joedog/path.h create mode 100644 siege-4.1.6/include/stamp-h1 create mode 100644 siege-4.1.6/install-sh create mode 100644 siege-4.1.6/libtool create mode 100644 siege-4.1.6/src/Makefile create mode 100644 siege-4.1.6/src/Makefile.am create mode 100644 siege-4.1.6/src/Makefile.in create mode 100644 siege-4.1.6/src/ansidecl.h create mode 100644 siege-4.1.6/src/array.c create mode 100644 siege-4.1.6/src/array.h create mode 100644 siege-4.1.6/src/auth.c create mode 100644 siege-4.1.6/src/auth.h create mode 100644 siege-4.1.6/src/base64.c create mode 100644 siege-4.1.6/src/base64.h create mode 100644 siege-4.1.6/src/browser.c create mode 100644 siege-4.1.6/src/browser.h create mode 100644 siege-4.1.6/src/cache.c create mode 100644 siege-4.1.6/src/cache.h create mode 100644 siege-4.1.6/src/cfg.c create mode 100644 siege-4.1.6/src/cfg.h create mode 100644 siege-4.1.6/src/cookie.c create mode 100644 siege-4.1.6/src/cookie.h create mode 100644 siege-4.1.6/src/cookies.c create mode 100644 siege-4.1.6/src/cookies.h create mode 100644 siege-4.1.6/src/creds.c create mode 100644 siege-4.1.6/src/creds.h create mode 100644 siege-4.1.6/src/crew.c create mode 100644 siege-4.1.6/src/crew.h create mode 100644 siege-4.1.6/src/data.c create mode 100644 siege-4.1.6/src/data.h create mode 100644 siege-4.1.6/src/date.c create mode 100644 siege-4.1.6/src/date.h create mode 100644 siege-4.1.6/src/eval.c create mode 100644 siege-4.1.6/src/eval.h create mode 100644 siege-4.1.6/src/ftp.c create mode 100644 siege-4.1.6/src/ftp.h create mode 100644 siege-4.1.6/src/getopt.c create mode 100644 siege-4.1.6/src/getopt1.c create mode 100644 siege-4.1.6/src/handler.c create mode 100644 siege-4.1.6/src/handler.h create mode 100644 siege-4.1.6/src/hash.c create mode 100644 siege-4.1.6/src/hash.h create mode 100644 siege-4.1.6/src/http.c create mode 100644 siege-4.1.6/src/http.h create mode 100644 siege-4.1.6/src/init.c create mode 100644 siege-4.1.6/src/init.h create mode 100644 siege-4.1.6/src/load.c create mode 100644 siege-4.1.6/src/load.h create mode 100644 siege-4.1.6/src/log.c create mode 100644 siege-4.1.6/src/log.h create mode 100644 siege-4.1.6/src/main.c create mode 100644 siege-4.1.6/src/md5.c create mode 100644 siege-4.1.6/src/md5.h create mode 100644 siege-4.1.6/src/memory.c create mode 100644 siege-4.1.6/src/memory.h create mode 100644 siege-4.1.6/src/notify.c create mode 100644 siege-4.1.6/src/notify.h create mode 100644 siege-4.1.6/src/page.c create mode 100644 siege-4.1.6/src/page.h create mode 100644 siege-4.1.6/src/parser.c create mode 100644 siege-4.1.6/src/parser.h create mode 100644 siege-4.1.6/src/perl.c create mode 100644 siege-4.1.6/src/perl.h create mode 100644 siege-4.1.6/src/response.c create mode 100644 siege-4.1.6/src/response.h create mode 100644 siege-4.1.6/src/setup.h create mode 100644 siege-4.1.6/src/siege create mode 100644 siege-4.1.6/src/sock.c create mode 100644 siege-4.1.6/src/sock.h create mode 100644 siege-4.1.6/src/ssl.c create mode 100644 siege-4.1.6/src/ssl.h create mode 100644 siege-4.1.6/src/stralloc.c create mode 100644 siege-4.1.6/src/stralloc.h create mode 100644 siege-4.1.6/src/timer.c create mode 100644 siege-4.1.6/src/timer.h create mode 100644 siege-4.1.6/src/url.c create mode 100644 siege-4.1.6/src/url.h create mode 100644 siege-4.1.6/src/util.c create mode 100644 siege-4.1.6/src/util.h create mode 100644 siege-4.1.6/src/version.c create mode 100644 siege-4.1.6/src/version.h create mode 100644 siege-4.1.6/utils/Makefile create mode 100644 siege-4.1.6/utils/Makefile.am create mode 100644 siege-4.1.6/utils/Makefile.in create mode 100644 siege-4.1.6/utils/bombardment create mode 100644 siege-4.1.6/utils/bombardment.in create mode 100644 siege-4.1.6/utils/bootstrap create mode 100644 siege-4.1.6/utils/compile create mode 100644 siege-4.1.6/utils/config.guess create mode 100644 siege-4.1.6/utils/config.sub create mode 100644 siege-4.1.6/utils/install-sh create mode 100644 siege-4.1.6/utils/ltmain.sh create mode 100644 siege-4.1.6/utils/manifier create mode 100644 siege-4.1.6/utils/mdate-sh create mode 100644 siege-4.1.6/utils/missing create mode 100644 siege-4.1.6/utils/mkinstalldirs create mode 100644 siege-4.1.6/utils/mkstamp create mode 100644 siege-4.1.6/utils/siege.config create mode 100644 siege-4.1.6/utils/siege.config.in create mode 100644 siege-4.1.6/utils/siege2csv.in create mode 100644 siege-4.1.6/utils/siege2csv.pl create mode 100644 siege-latest.tar.gz create mode 100644 site/long.html diff --git a/NXtest_conf.conf b/NXtest_conf.conf new file mode 100644 index 0000000..97a738b --- /dev/null +++ b/NXtest_conf.conf @@ -0,0 +1,34 @@ +server { + listen 8080; + server_name test.local; + + root /var/www/YoupiBanane; + index index.html; + # cgi on; + + location / { + # autoindex on; + limit_except GET { deny all; } + } + + location /put_test/ { + limit_except PUT { deny all; } + } + + # location ~ \.bla$ { + # limit_except POST { deny all; } + # include /etc/nginx/fastcgi_params; + # fastcgi_pass unix:/var/run/cgi_test.sock; + # } + + location /post_body { + limit_except POST { deny all; } + client_max_body_size 100; + } + + location /directory/ { + limit_except GET { deny all; } + autoindex on; + index youpi.bad_extension; + } +} diff --git a/local.conf b/local.conf new file mode 100644 index 0000000..26814fa --- /dev/null +++ b/local.conf @@ -0,0 +1,78 @@ +# NGINX Compatible conf (no cgi or upload) +worker_processes 2; + +server { + listen 8080; + server_name example.co example.fr; + + # Default error pages + # error_page 403 /errors/403.html; + # error_page 500 /errors/500.html; + error_page 404 /errors/404_main.html; + + # Client body size limit (in bytes) + client_max_body_size 1048576; # 1MB + + # root /var/www/html; # Root directory for the server + root /mnt/e/webserv/site; + autoindex on; + # index index.html; + + # Routes configuration + location / { + autoindex on; + index i-index.html; # Default file if request is a directory + limit_except GET POST { deny all; } # Allowed HTTP methods + client_max_body_size 123; + } + + location /dir/ { + error_page 404 /errors/404_api.html; + limit_except GET POST { deny all; } # Allowed HTTP methods + } + + location /site/ { + limit_except GET POST { deny all; } # Allowed HTTP methods + } + + # location /upload/ { + # limit_except POST { deny all; } # Allowed HTTP methods + # accept_upload on; + # } + + location /cgi/ { + cgi on; + limit_except GET POST { deny all; } # Allowed HTTP methods + } + + location /cgi/off/ { + cgi off; + limit_except GET POST { deny all; } # Allowed HTTP methods + } + + location /redirect/ { + return 301 http://anotherdomain.com; + return 200 blabla; # Should be ignored + limit_except GET { deny all; } # Allowed HTTP methods + } +} + +# Additional server instance (example of multiple server configurations) +server { + listen 8081; + server_name another.local; + + # Default error pages + error_page 404 /errors/404.html; + error_page 500 /errors/500.html; + + # Client body size limit (in bytes) + client_max_body_size 2048000; # 2MB + + location /files/ { + root /var/www/files; + index index.html; + limit_except GET POST { deny all; } + autoindex off; + } +} diff --git a/siege-4.1.6/AUTHORS b/siege-4.1.6/AUTHORS new file mode 100644 index 0000000..3ece909 --- /dev/null +++ b/siege-4.1.6/AUTHORS @@ -0,0 +1,15 @@ +AUTHORS OF SIEGE +---------------- + +Jeffrey Fulmer +Designed and wrote Siege in his position as +Webmaster for Armstrong World Industries; he is the +primary author and maintainer of the application. + + +http://www.joedog.org/siege-home/ + +---------------------------------------------------- +Other contributions are attributed in the ChangeLog. + + diff --git a/siege-4.1.6/COPYING b/siege-4.1.6/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/siege-4.1.6/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/siege-4.1.6/ChangeLog b/siege-4.1.6/ChangeLog new file mode 100644 index 0000000..3ca0e11 --- /dev/null +++ b/siege-4.1.6/ChangeLog @@ -0,0 +1,363 @@ +To email a contributor remove "DELETE" from the email address. +(The DELETEs are necessary as this list is published online.) + +2023/01/05 Jeffrey Fulmer https://www.joedog.org/support/ + * src/version.c Version increment: 4.1.6 + +2022/12/27 Jeffrey Fulmer https://www.joedog.org/support/ + * src/cookies.c Retrieve cookies in -p/--print mode (bug fix) + * src/sock.c More verbose message on resolution failures + * src/version.c Version increment: 4.1.6-b2 + +2022/10/03 Jeffrey Fulmer https://www.joedog.org/support/ + * src/log.c Print warning to stderr to elude > capture + * src/version.c Version increment: 4.1.6-b1 + +2022/08/02 Jeffrey Fulmer https://www.joedog.org/support/ + * src/browser.c Corrected deferred + * src/version. Version increment 4.1.5 + * utils/Makefile.am Added manifier to the distro + +2022/07/31 Jeffrey Fulmer https://www.joedog.org/support/ + * src/browser.c Made all threads cancel deferred + * src/ftp.c Catch 421: server accepts but doesn't handle + * src/timer.c Added a second to account for spool up + * src/version.c Version increment: 4.1.4 + +2022/04/18 Jeffrey Fulmer https://www.joedog.org/support/ + * src/memory.c Added xstrncpy, xstrncat + * src/memory.h Added xstrncpy, xstrncat + * src/cookies.c Implemented new x* functions + * src/ssl.c Silenced compiler warning + * src/main.c Added xstrncpy to silence warnings + * src/version.c Version increment: 4.1.3 + +2022/04/18 Frank Ledo via https://github.com/FrankLedo + * doc/siege.pod Fixed a typo in the man page + +2022/04/08 barryhunter via https://github.com/barryhunter + * src/parser.c Refined match for META redirect + +2022/03/21 cui fliter https://github.com/cuishuang + * src/browser.c Fixed typos + * src/date.c Fixed typos + * src/url.c Fixed typos + * utils/siege2csv.in Fixed typos + +2022/03/17 Jeffrey Fulmer https://www.joedog.org/support/ + * src/main.c Silenced statistics output on -g/--get + * src/cookies.c Improved domain matching, added my.get + * src/ssl.c Silenced a compiler warning + * src/version.c Version increment: 4.1.2 + +2021/07/14 Jeffrey Fulmer https://www.joedog.org/support/ + * src/browser.c Added HTTP response 201 handler + * src/response.c Added Content-Location handler + * src/response.h Added CONTENT_LOCATION value + * src/http.c Added Content-Location parser + * src/cfg.c Added an escape handler for $ in URLs + * src/eval.c Added function escape(str) to remove '\' + * src/ssl.c Put ERR_remove_state inside ssl version + * src/url.c Added fix for null path checking + * src/util.c Fixed np_phtread_usleep for Solaris + * src/version.c Version increment: 4.1.1 + +2021/07/07 Jeffrey Fulmer https://www.joedog.org/support/ + * src/url.c Removed leading / from ftp paths + +2021/07/07 midchildan https://github.com/midchildan + * src/browser.c fixed: "--reps=once" + * src/main.c fixed: "--reps=once" + +2021/07/04 Jeffrey Fulmer http://www.joedog.org/support/ + * src/init.c Fixed password parsing # can be in pwd + * src/auth.c Prettified credentials output for siege -C + * src/version.c Version increment: 4.1.0 + +2021/04/17 Jeffrey Fulmer http://www.joedog.org/support/ + * src/cookie.c Added NULL checks for getters + * version.c Version increment: 4.0.9 + +2021/04/17 Vedran Miletic https://github.com/vedranmiletic + * src/main.c Prettified json + +2021/03/17 Jeffrey Fulmer http://www.joedog.org/support/ + * src/hash.c Added explicit include of sys/types.h + * src/version.c Version increment: 4.0.8; Copyright 2021 + +2021/03/16 Zosecer https://github.com/zosecer + * src/parser.c Added handling for null pointer detection + +2020/07/11 Jeffrey Fulmer http://www.joedog.org/support/ + * src/cookie.c Fixed an issue with expires + * src/cookies.c Fixed an issue with persistence + * src/version.c Version increment: 4.0.7 + +2020/07/11 Jeffrey Fulmer http://www.joedog.org/support/ + * src/init.c Minor bug fix + * src/auth.c Fixed initialization error + * src/version.c Version increment: 4.0.6 + +2020/07/10 Jeffrey Fulmer http://www.joedog.org/support/ + * src/creds.c Fixed an initialization problem + * src/cookies.c Fixed locking issue + * src/url.c Fixed an initialization problem + * src/init.c Fixed an initialization problem + * src/memory.c Formatting change + * src/version.c Version increment: 4.0.5 + +2020/02/10 Ben Baker-Smith + * src/main.c Added -j/--json-output + * src/init.c Added -j/--json-output - force quiet mode + * src/setup.h Added variable for json output + * doc/siegerc.in Added documentation to the config file + +2018/02/18 Benjamin Pearson + * src/url.c Adding DELETE and OPTIONS support. + * src/browser.c Adding DELETE and OPTIONS support. + +2018/02/18 "Mr. Baileys" + * src/http.c Correct capitalization for Content-Type & Content-Length + +2018/02/18 root + * src/response.c Handle case of incorrect server response header + +2018/02/18 Viktor Szepe + * README.md Make readme's title nice + +2018/02/18 Michael McConville + * src/page.c Remove needless memset(2) + +2018/02/18 James Wang + * src/cookies.c Bug fix - prevent segfault when getenv(HOME) is null + +2017/09/13 Jeffrey Fulmer http://www.joedog.org/support/ + * src/load.c Bug fix - allow content-type override at cmd line + * src/version.c Version increment: 4.0.4r3 + +2017/09/13 Florin Papa + * src/url.c Skipped URL escaping for the host and port + * src/version.c Version increment: 4.0.4r2 + +2017/09/11 Florin Papa + * src/sock.c Added support for IPv6 + * src/url.c Added support for parsing IPv6 addresses + * src/version.c Version increment: 4.0.4r1 + +2017/09/05 Jeffrey Fulmer http://www.joedog.org/support/ + * src/perl.c Added integrity checks + * src/version.c Version increment: 4.0.3rc6 + +2017/07/11 Matijs van Zuijlen https://github.com/mvz + * src/ssl.c mvz:fix-crash + * src/version.c Version increment: 4.0.3rc5 + +2016/11/02 Jeffrey Fulmer http://www.joedog.org/support/ + * doc/siegerc.in Changed the default delay to zero point zero + * src/cache.c Implement disable cache option + * src/browser.c Reduce dependence on hash lookups + * src/version.c Version increment: 4.0.3rc4 + +2016/11/02 Jeffrey Fulmer http://www.joedog.org/support/ + * src/load.c Fixed a bug in content-type selection + * src/util.c Formatting enhancements + * src/version.c Version increment: 4.0.3rc3 + +Anton Blanchard https://github.com/antonblanchard + * util/config.guess Updated to the latest upstream version + * util/config.sub Updated to the latest upstream version + +2016/10/20 David Morán https://github.com/david-moran + * src/browser.c Added PATCH conditionals + * src/url.h Added PATCH to enum + * src/url.c Added PATCH parsing + * src/version.c Version increment: 4.0.3rc2 + +2016/10/20 Jeffrey Fulmer http://www.joedog.org/support/ + * src/setup.h Added my.print, my.nofollow, my.noparser + * src/main.c Added --print, --no-follow, --no-parser + * src/browser.c Added support for new cmd line options + * src/http.c Added support for new cmd line options + +2016/09/10 Jeffrey Fulmer http://www.joedog.org/support/ + * Based on a bug report from Lennart Braun + * src/response.c Added integrity checks in success|failure + * src/http.c Added handling for non-HTTP servers + * src/browser.c Added handling for non-HTTP servers + * src/version.c Version increment: 4.0.3rc1 + +2016/08/29 Jeffrey Fulmer http://www.joedog.org/support/ +2016/08/29 Aaron Peschel https://github.com/apeschel +2016/08/29 Wuvist https://github.com/Wuvist +2016/08/29 Christian Blades + * src/parser.c Added a check to ensure aid is not NULL + * utils/bombardment.in Switched to BSD date format + * doc/siegerc.in Fixed typo in the config file template + * src/browser.c Enable payload for PUT request + +2016/05/07 Jeffrey Fulmer + * SIEGE RELEASE RELEASE_4-0-2-MAY-20-2016 + * src/version.c Version increment: 4.0.2 + +2016/05/20 Danylo Hlynskyi + * doc/siege.pod Documentation improvements + +2016/05/07 Jeffrey Fulmer + * SIEGE RELEASE RELEASE_4-0-2-beta2-MAY-07-2016 + * lib/joedog Moved to src + * src/perl.c Moved from lib/joedog + * src/perl.h Moved from lib/joedog + * src/memory.c Moved from lib/joedog + * src/memory.h Moved from lib/joedog + * src/notify.c Moved from lib/joedog + * src/notify.h Moved from lib/joedog + * src/*.c *.h Decoupled lib/joedog.la + * src/version.c Version increment: 4.0.2-beta2 + +2016/04/23 Valery Levental + * src/browser.c Fixed issue with Content-length: 0 + * src/http.c Improved handling of chunked transfers + * src/parser.c Improved handling of data URI scheme + * src/sock.c Code optimization + +2016/03/26 Warren Young + * src/cookie.c Fixed delimiter handling in cookie expiration + Suppressed cookie time zone offsetting for GMT/UTC + * src/cookies.c Convert now to GMT for expires check + +2016/03/26 Jeffrey Fulmer + * src/response.c Transfer-ecoding parse (stupid akamai) + * src/version.c Version increment: 4.0.1 + +2016/03/15 Niklas Hambüchen + * src/http.c Improved efficiency for chunked reads + +2016/02/19 Jeffrey Fulmer + * SIEGE RELEASE RELEASE_4-0-0-Mar-10-2016 + * doc/siegerc.in Set parser to true by default + * src/version.c Version increment: 4.0.0 + +2016/03/09 vfilanovsky + * SIEGE BETA RELEASE_4-0-0_beta9-Mar-09-2016 + * src/http.c Expanded request size + * src/version.c Version increment: 4.0.0-beta9 + * src/Makefile.am Removed KNOWNBUGS README.https from distro + +2016/02/26 Trent Oswald + * src/load.c Added: .csv .ico .md .svg .yml + +2016/02/19 Jeffrey Fulmer + * SIEGE BETA RELEASE_4-0-0_beta8-Feb-19-2016 + * INSTALL Updated for 4.0.0 + * KNOWNBUGS Removed - tracked elsewhere + * NEWS Removed - tracked elsewhere + * README.https Removed - redundant + * src/version.c Version increment: 4.0.0-beta8 + +2016/02/18 Jeffrey Fulmer + * SIEGE BETA RELEASE_4-0-0_beta7-Feb-18-2016 + * src/auth.c Wrapped __mkhash with HAVE_SSL + * src/http.c Wrapped libz functions with HAVE_ZLIB + * src/ssl.c Wrapped ssl functions with HAVE_SSL + * src/version.c Version increment: 4.0.0-beta7 + +2016/02/09 Jeffrey Fulmer + * SIEGE BETA RELEASE_4-0-0_beta6_FEB_10_2016 + * doc/siege.pod Added to the distribution + * doc/siege.config.pod Added to the distribution + * doc/bombardment.pod Added to the distribution + * doc/siege2csv.pod Added to the distribution + * src/init.c Formatting changes + * src/main.c Completely silenced the program with -q + +2016/02/04 Jeffrey Fulmer + * SIEGE BETA RELEASE_4-0-0_beta5_FEB_04_2016 + * doc/siegerc.in Added instructions for color = on | off + * lib/notify.c Added options (-1) to turn off color + * src/cfg.c Improved the urls.txt comment parser + * src/ftp.c Fixed a bug with unique file names + * src/init.c Added my.color to conf file parser + * src/url.c On POST/PUT changed path/file assignment + * src/init.c Added my.color on|off to my.config + +2016/01/31 Jeffrey Fulmer + * include/config.h.in Added HAVE_LOCALTIME_R + * src/date.c Changed Daniels tm_year; added date_expired + * src/cache.c Added is_cached; logical enhancements + * src/cache.h Added is_cached + * src/cient.c Added check for cached items + * src/http.c Parse expires and last-modified + * src/parser.c Minor refinements + +2016/01/28 Jeffrey Fulmer + * src/Makefile.am Added cache.c and cache.h + * src/cache.c Added to the distribution + * src/cache.h Added to the distribution + * src/date.c Overhauled as an object + * src/date.c Updated prototypes + * src/eval.c Updated for new hash API + * src/hash.c Added hash_remove, hash_remover + * src/hash.h Changed hash_lookup to hash_contains + * src/http.c Implemented cache for entity tags + * src/http.h Removed old headers struct + * src/sock.h Added cache to the CONN struct + * src/url.c Removed cache indicators + * src/url.h Removed prototypes associated with cache + * src/version.c Copyright update; version increment: 4.0.0-beta5 + +2016/01/23 Jeffrey Fulmer + * SIEGE BETA RELEASE_4-0-0_beta4_JAN_23_2016 + * src/Makefile.am Added response.c response.h + * src/response.c Response headers, added to project + * src/response.h Added to the project + * src/http.c Parse headers with response + * src/sock.h Moved TE enum into response.h + * src/client.c Changed calls to response + * src/hash.c Changed value type to void* + * src/hash.h Changed value type to void* + * src/cookies.c Changed to use new hash object + * src/eval.c Changed to use new hash object + * src/init.c Changed to use new hash object + * src/main.c Changed to use new hash object + * src/parser.c Various logical improvements + * include/boolean.h Minor cleanup + * include/joedog.h Added ISALPHA + * src/version.c Version increment: 4.0.0-beta4 + +2016/01/16 Jeffrey Fulmer + * SIEGE BETA RELEASE_4-0-0-beta3_JAN_16_2016 + * ChangeLog Pruned to 4.x.x + * doc/siegerc.in Setting logging to false by default + * src/http.c Completely overhauled http_read + * src/parser.c Revised the page check + * src/url.c Added default http scheme + * src/util.c Added stristr (portable strcasestr) + * src/client.c Refined condition for requesting elements + * src/version.c Version increment: 4.0.0-beta3 + +2016/01/01 Jeffrey Fulmer + * SIEGE BETA RELEASE_4-0-0-beta2_JAN_01_2016 + * src/client.c Added logic for HTML redirect + * src/parser.c De-objectified the parser + * src/url.c Added url_set_scheme + * src/url.h Added url_set_scheme + * src/setup.h Added BOOLEAN parser + * src/init.c Parses 'parser' from siegerc + * src/util.c Added BOOLEAN endswith + * src/util.h Added BOOLEAN endswith + * doc/siegerc.in Added parser = true|false + * src/version.c Version increment: 4.0.0-beta2 + +2015/12/25 Jeffrey Fulmer + * SIEGE BETA RELEASE_4-0-0-beta1_DEC_25_2015 + * configure.ac Added a test for zlib + * src/page.c Added to the distribution + * src/page.h Added to the distribution + * src/parser.c Added to the distribution + * src/parser.h Added to the distribution + * src/client.c Added calls to parser + * src/http.c Download content to page; deflate + * src/main.c Improved memory management + * src/init.c Revamped file reader to eliminiate leak + * src/version.c Version increment: 4.0.0-beta1 + diff --git a/siege-4.1.6/INSTALL b/siege-4.1.6/INSTALL new file mode 100644 index 0000000..d992ced --- /dev/null +++ b/siege-4.1.6/INSTALL @@ -0,0 +1,221 @@ + + INSTALLATION PROCEDURE & PLATFORM INFORMATION + + +Siege was originally built and tested on GNU/Linux. It has been ported +to other platforms. See the MACHINES document for more details. + +This program was built using the GNU autoconf mechanism. If you are +familiar with GNU applications, then siege should present few problems +especially on the above mentioned platforms. For best results, use gcc. + +IMPORTANT: If you are upgrading from an earlier version, you MUST delete +the older version before installing this one. The simplest way to remove +the older version to run "make uninstall" in the old source directory. +If you no longer have the old source, you can configure the new version +to be installed in the same place as the old version. Then BEFORE you +run "make install", run "make uninstall" first. + +"Hey! I'm impatient, I only read these things when things go wrong!" +If that is the case, then follow the steps in item #1 below... + + XXX: If you pulled this code from github.com then you won't have a + configure script. You'll need to build one. How do you do that? In + the top level source directory run this: + $ utils/bootstrap + + NOTE: the bootstrap requires GNU autotools in order to run. You'll + need autoconf, automake and libtool installed on your computer + +1. In a nutshell, to install the application in the default directory, + ( /usr/local ), run the following commands: + $ ./configure (IMPORTANT: see step 2 for enabling https support) + $ make + $ make uninstall (if you have an older version installed in PREFIX) + $ make install + + This will install the application ( siege ) in the default directory + /usr/local/bin. If that directory is in your PATH, then to run siege + and view the online help type: + $ siege --help + + To learn more about siege, make sure /usr/local/man is in your + MANPATH and type: + $ man siege + + For more detailed information about running siege and stress testing + HTTP servers, type: + $ man layingsiege + + For more details, read on. Especially if you want to install siege + in a directory other that /usr/local/bin + +2. Configuration + The configure script attempts to guess the values which are set + on your platform. If all goes well, you should only have to run it + with some preferred arguments. The more notable ones are listed + below: + --help prints the configure script's help section + --prefix=/some/dir installs the files in /some/dir + --bindir=/some/bin installs the executable in /some/bin + --mandir=/some/man installs the man page in /some/man + --with-ssl=/some/dir where dir is where you installed ssl, this + flag is used to enable https protocol. + + + Since siege is a pretty esoteric program, I prefer to install it in + my home directory. For this reason, I run configure with my home + directory as the prefix. + + $ ./configure --prefix=/export/home/jdfulmer + + If you don't already, make sure $HOME/bin and $HOME/man are set + appropriately in your .profile. In my case, I set them like this: + + # jdfulmer's profile + PATH=/export/home/jdfulmer/bin:$PATH + MANPATH=/export/home/jdfulmer/man:$MANPATH + + export PATH MANPATH + ~ + ~ + + To reload your profile without logging out, do this: + + $ . .profile + + If it runs successfully, the configure script creates the Makefiles + which lets you build the program. After you configure your + environment, the next step is to build siege. If that step fails, you + may have to return to this step. Reasons for reconfiguring are + mentioned below. If configure failed to create Makefiles, then you + have problems which may be beyond the scope of this document, such as + no compiler ( you'll have to get one ), no libraries (again, an + acquisition on your part). + + HTTPS support + To enable https, you must have ssl installed on your system. Get the + latest version from http://www.openssl.org. AFTER ssl is installed, + then you have to configure siege to use it: + $ ./configure --prefix=/some/dir --with-ssl=/ssl/install/dir + + The openssl default installation is /usr/local/ssl. If you installed + openssl in that directory, then you would configure siege like this: + $ ./configure --prefix=/some/dir --with-ssl=/usr/local/ssl + $ make + $ make uninstall (if you have a previous version already installed) + $ make install + +3. Compilation + To compile the program, execute the second step of the nutshell + version mentioned in item #1: type "make" and hope for the best. + If your environment was configured without errors, then configure + should have generated the Makefiles that will enable this step to + work. + + The make command will invoke your compiler and build siege. If you + are using gcc on any of the platforms mentioned above, then you + should not have problems. In general, any ANSI C compiler should + work. + + Some systems may require options that were not set by the configure + script. You can set them using the configure step mentioned above: + $ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + + You can also set them by editing the Makefiles that were created as + a result of running configure, but this is not preferred. + +4. Installation + If the program compiled successfully, follow the third nutshell step + and type "make install" This will install the package in the + directories that you've selected in the configuration step. If they + are not already, make sure PREFIX/bin and PREFIX/man are in your PATH + and MANPATH respectively. This process is described in detail above. + + Files installed: + siege --> SIEGE_HOME/bin/siege + bombardment --> SIEGE_HOME/bin/bombardment + siege2csv --> SIEGE_HOME/bin/siege2csv + siege.config --> $HOME/.siege/siege.config + cookies.txt --> $HOME/.siege/cookies.txt + siege.1 --> SIEGE_HOME/man/man1/siege.1 + bombardment.1 --> SIEGE_HOME/man/man1/bombardment.1 + siege2csv.1 --> SIEGE_HOME/man/man1/siege2csv.1 + +5. Uninstall + To remove the package, type "make uninstall" To make the source + directory completely clean, type "make distclean". There are + differences of opinion regarding this option. Some people claim that + it should not be available as it depends the original Makefiles from + the source directory. Since I tend to hoard all source code, I like + this feature. + + The point is, if you've installed one version of siege in /usr/local + and another version in $HOME, then make uninstall is obviously not + going to work in both locations. The safest thing to do is manually + remove the files which were installed by make install. The files and + their locations are described in item #4. + +6. Read the documentation + The online help is pretty straight forward ( siege --help ): + Usage: siege [options] + Options: + -V, --version VERSION, prints the version number. + -h, --help HELP, prints this section. + -C, --config CONFIGURATION, show the current config. + -v, --verbose VERBOSE, prints notification to screen. + -q, --quiet QUIET turns verbose off and suppresses output. + -g, --get GET, pull down HTTP headers and display the + transaction. Great for application debugging. + -c, --concurrent=NUM CONCURRENT users, default is 10 + -r, --reps=NUM REPS, number of times to run the test. + -t, --time=NUMm TIMED testing where "m" is modifier S, M, or H + ex: --time=1H, one hour test. + -d, --delay=NUM Time DELAY, random delay before each request + -b, --benchmark BENCHMARK: no delays between requests. + -i, --internet INTERNET user simulation, hits URLs randomly. + -f, --file=FILE FILE, select a specific URLS FILE. + -R, --rc=FILE RC, specify an siegerc file + -l, --log[=FILE] LOG to FILE. If FILE is not specified, the + default is used: PREFIX/var/siege.log + -m, --mark="text" MARK, mark the log file with a string. + between .001 and NUM. (NOT COUNTED IN STATS) + -H, --header="text" Add a header to request (can be many) + -A, --user-agent="text" Sets User-Agent in request + -T, --content-type="text" Sets Content-Type in request + + For more detailed information, consult the man pages: + $ man siege + $ man siege.config + + All the siege man pages are also available online: + http://www.joedog.org/siege/ + + OR, read the manual online: + http://www.joedog.org/siege/manual.html + +7. Edit the .siege/siege.config file in your home directory. This file + contains runtime directives for siege. Each directive is well + documented with comments. Some directives exist ONLY in this file; + they don't have a command line option. If you are upgrading from an + earlier version, your original version is kept and a new resource + file is installed as .siegerc.new. In order to take advantage of any + new directives, you might want to use this new file instead. + +-- + +Please consult the file, COPYING for complete license information. + +Copyright (C)2000-2016 Jeffrey Fulmer , et al. + +Permission is granted to anyone to make or distribute verbatim +copies of this document as received, in any medium, provided that +the copyright notice and this permission notice are preserved, thus +giving the recipient permission to redistribute in turn. + +Permission is granted to distribute modified versions of this +document, or of portions of it, under the above conditions, +provided also that they carry prominent notices stating who last +changed them. + + diff --git a/siege-4.1.6/Makefile b/siege-4.1.6/Makefile new file mode 100644 index 0000000..b0433eb --- /dev/null +++ b/siege-4.1.6/Makefile @@ -0,0 +1,792 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/siege +pkgincludedir = $(includedir)/siege +pkglibdir = $(libdir)/siege +pkglibexecdir = $(libexecdir)/siege +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +subdir = . +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/configure $(am__configure_deps) \ + $(top_srcdir)/utils/mkinstalldirs \ + $(top_srcdir)/utils/ltmain.sh $(top_srcdir)/utils/config.guess \ + $(top_srcdir)/utils/config.sub AUTHORS COPYING ChangeLog \ + INSTALL install-sh $(top_srcdir)/utils/install-sh \ + $(top_srcdir)/utils/missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing aclocal-1.13 +ALLOCA = +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTHOR = Jeffrey Fulmer, et al. +AUTOCONF = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoconf +AUTOHEADER = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoheader +AUTOMAKE = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CC_R = +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = -I/include/zlib -I/include +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=none +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DATE = June-18-2024 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EMAIL = jeff@joedog.org +EXEEXT = +F77 = +FFLAGS = +GREP = /usr/bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LDL = -ldl +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LN_S = cp -pR +LTLIBOBJS = +MAKEINFO = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = siege +PACKAGE_BUGREPORT = +PACKAGE_NAME = siege +PACKAGE_STRING = siege 4.1.6 +PACKAGE_TARNAME = siege +PACKAGE_URL = +PACKAGE_VERSION = 4.1.6 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PLATFORM = pc-x86_64-linux-gnu +PROGRAM = siege +PTHREAD_CFLAGS = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +PTHREAD_LDFLAGS = -lpthread +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +SSL_CFLAGS = +SSL_INCLUDE = +SSL_LDFLAGS = +SSL_LIBS = +STRIP = strip +VERSION = 4.1.6 +WARN_CFLAGS = -W -Wall -Wunused-value +Z_CFLAGS = +Z_INCLUDE = -I/include/zlib -I/include +Z_LDFLAGS = -L/usr/lib +Z_LIBS = -lz +abs_builddir = /mnt/e/webserv/siege-4.1.6 +abs_srcdir = /mnt/e/webserv/siege-4.1.6 +abs_top_builddir = /mnt/e/webserv/siege-4.1.6 +abs_top_srcdir = /mnt/e/webserv/siege-4.1.6 +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = +top_builddir = . +top_srcdir = . +AUTOMAKE_OPTIONS = foreign no-dependencies +AM_CFLAGS = $(WARN_CFLAGS) +SUBDIRS = . include src utils doc html +DIST_SUBDIRS = $(SUBDIRS) +EXTRA_DIST = README.md acspecific.m4 aclocal.m4 acinclude.m4 +all: all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip distcheck distclean distclean-generic \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/Makefile.am b/siege-4.1.6/Makefile.am new file mode 100644 index 0000000..6c96b34 --- /dev/null +++ b/siege-4.1.6/Makefile.am @@ -0,0 +1,34 @@ +## +## Makefile.am +## +## Copyright (C) 2000-2015 by +## Jeffrey Fulmer - , et al. +## This file is distributed as part of Siege +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License along +## with this program; if not, write to the Free Software Foundation, Inc., +## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +## + +AUTOMAKE_OPTIONS = foreign no-dependencies + +WARN_CFLAGS = @WARN_CFLAGS@ + +AM_CFLAGS = $(WARN_CFLAGS) + +SUBDIRS = . include src utils doc html + +DIST_SUBDIRS = $(SUBDIRS) + +EXTRA_DIST = README.md acspecific.m4 aclocal.m4 acinclude.m4 + diff --git a/siege-4.1.6/Makefile.in b/siege-4.1.6/Makefile.in new file mode 100644 index 0000000..ff7bd5a --- /dev/null +++ b/siege-4.1.6/Makefile.in @@ -0,0 +1,792 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = . +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/configure $(am__configure_deps) \ + $(top_srcdir)/utils/mkinstalldirs \ + $(top_srcdir)/utils/ltmain.sh $(top_srcdir)/utils/config.guess \ + $(top_srcdir)/utils/config.sub AUTHORS COPYING ChangeLog \ + INSTALL install-sh $(top_srcdir)/utils/install-sh \ + $(top_srcdir)/utils/missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTHOR = @AUTHOR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CC_R = @CC_R@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMAIL = @EMAIL@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LDL = @LDL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PLATFORM = @PLATFORM@ +PROGRAM = @PROGRAM@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SSL_CFLAGS = @SSL_CFLAGS@ +SSL_INCLUDE = @SSL_INCLUDE@ +SSL_LDFLAGS = @SSL_LDFLAGS@ +SSL_LIBS = @SSL_LIBS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +Z_CFLAGS = @Z_CFLAGS@ +Z_INCLUDE = @Z_INCLUDE@ +Z_LDFLAGS = @Z_LDFLAGS@ +Z_LIBS = @Z_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = foreign no-dependencies +AM_CFLAGS = $(WARN_CFLAGS) +SUBDIRS = . include src utils doc html +DIST_SUBDIRS = $(SUBDIRS) +EXTRA_DIST = README.md acspecific.m4 aclocal.m4 acinclude.m4 +all: all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip distcheck distclean distclean-generic \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/PLATFORM b/siege-4.1.6/PLATFORM new file mode 100644 index 0000000..469f924 --- /dev/null +++ b/siege-4.1.6/PLATFORM @@ -0,0 +1 @@ +pc-x86_64-linux-gnu diff --git a/siege-4.1.6/README.md b/siege-4.1.6/README.md new file mode 100644 index 0000000..25a85e9 --- /dev/null +++ b/siege-4.1.6/README.md @@ -0,0 +1,141 @@ +# Siege + +WHAT IS IT? +----------- +Siege is an open source regression test and benchmark utility. +It can stress test a single URL with a user defined number of +simulated users, or it can read many URLs into memory and +stress them simultaneously. The program reports the total +number of hits recorded, bytes transferred, response time, +concurrency, and return status. Siege supports HTTP/1.0 and 1.1 +protocols, the GET and POST directives, cookies, transaction +logging, and basic authentication. Its features are configurable +on a per user basis. + +Most features are configurable with command line options which +also include default values to minimize the complexity of the +program's invocation. Siege allows you to stress a web server +with n number of users t number of times, where n and t are +defined by the user. It records the duration time of the test +as well as the duration of each single transaction. It reports +the number of transactions, elapsed time, bytes transferred, +response time, transaction rate, concurrency and the number of +times the server responded OK, that is status code 200. + +Siege was designed and implemented by Jeffrey Fulmer in his +position as Webmaster for Armstrong World Industries. It was +modeled in part after Lincoln Stein's torture.pl and it's data +reporting is almost identical. But torture.pl does not allow +one to stress many URLs simultaneously; out of that need siege +was born.... + +When a HTTP server is being hit by the program, it is said to be +"under siege." + + +WHY DO I NEED IT? +----------------- +Siege was written for both web developers and web systems admin- +istrators. It allows those individuals to test their programs +and their systems under duress. As a web professional, you are +responsible for the intregrity of your product, yet you have no +control over who accesses it. Traffic spikes can occur at any +moment. How do you know if you're prepared? + +Siege will allow you to place those programs under duress, to +allow you to better understand the load that they can with +stand. You'll sleep better knowing your site can withstand the +weight of 400 simultaneous transactions if your site currently +peaks at 250. + +A transaction is characterized by the server opening a socket +for the client, handling a request, serving data over the wire +and closing the socket upon completion. It is important to note +that HUMAN internet users take time to digest the data which +comes back to them. Siege users do not. In practice I've found +that 400 simultaneous siege users translates to at least five +times that amount in real internet sessions. This is why siege +allows you to set a delay ( --delay=NUM ). When set, each siege +user sleeps for a random number of seconds between 1 and NUM. +Through your server logs you should be able to get the average +amount of time spent on a page. It is recommended that you use +that number for your delay when simulating internet activity. + + +WHERE IS IT? +------------ +The latest version of siege can be obtained via anonymous FTP: +http://download.joedog.org/siege/siege-latest.tar.gz + +The source repository is located on GitHub: +git clone https://github.com/JoeDog/siege.git + +You can view in your browser here: +https://github.com/JoeDog/siege + +Updates and announcements are distributed via JoeDog: +http://www.joedog.org/ + + + +INSTALLATION +------------ +Siege was built with GNU autoconf. If you are familiar with +GNU software, then you should be comfortable installing siege +Please consult the file INSTALL for more details. + +PREREQUISITES +------------- +To enable HTTPS support, you must install both openssl and +openssl-devel on your system. + +To enable gzip transfer encoding, you will need both zlib and +zlib-devel installed on your system. + +All prerequisites must be installed at compile time. If you add +the libraries after siege has been compiled, you will have to +run ./configure, make and make install again. + +Siege prereqs are not dependencies. If these libraries are not +present, the application will still compile and function. It +simply won't contain these functionalities. + + +DOCUMENTATION +------------- +Documentation is available in man pages siege(1) layingsiege(1) +An html manual is included with this distribution: manual.html + +Complete documentation for siege can be found at www.joedog.org + + +LICENSE +------- +Consult the file COPYING for complete license information. + +Copyright (C) 2000-2023 by Jeffrey Fulmer + +Permission is granted to anyone to make or distribute verbatim +copies of this document as received, in any medium, provided +that the copyright notice and this permission notice are +preserved, thus giving the recipient permission to redistribute +in turn. + +Permission is granted to distribute modified versions of this +document, or of portions of it, under the above conditions, +provided also that they carry prominent notices stating who last +changed them. + +In addition, as a special exception, the copyright holders give +permission to link the code of portions of this program with the +OpenSSL library under certain conditions as described in each +individual source file, and distribute linked combinations +including the two. + +You must obey the GNU General Public License in all respects +for all of the code used other than OpenSSL. If you modify +file(s) with this exception, you may extend this exception to +your version of the file(s), but you are not obligated to do so. +If you do not wish to do so, delete this exception statement +from your version. If you delete this exception statement from +all source files in the program, then also delete it here. diff --git a/siege-4.1.6/acinclude.m4 b/siege-4.1.6/acinclude.m4 new file mode 100644 index 0000000..7763b81 --- /dev/null +++ b/siege-4.1.6/acinclude.m4 @@ -0,0 +1,6879 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +## Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +## Free Software Foundation, Inc. +## Originally by Gordon Matzigkeit , 1996 +## +## This file is free software; the Free Software Foundation gives +## unlimited permission to copy and/or distribute it, with or without +## modifications, as long as this notice is preserved. + +# serial 7 AC_LIB_LTDL +# serial 48 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE([AC_LANG_PROGRAM],[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# ------------------ +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# --------------------------------------------------------------------- +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ---------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 DLLs +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +# set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +# (note the single quotes!). If your package is not flat and you're not +# using automake, define top_builddir and top_srcdir appropriately in +# the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# and an installed libltdl is not found, it is assumed to be `libltdl'. +# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and top_srcdir +# appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# ------------------ +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# ------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF + +# Report which library types will actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + ;; + *) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` +gcc_ver=\`gcc -dumpversion\` + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=\`echo $lt_[]_LT_AC_TAGVAR(predep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=\`echo $lt_[]_LT_AC_TAGVAR(postdep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=\`echo $lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +]) +## ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- +## Copyright (C) 1999-2000 Free Software Foundation, Inc. +## +## This file is free software; the Free Software Foundation gives +## unlimited permission to copy and/or distribute it, with or without +## modifications, as long as this notice is preserved. + +# AC_WITH_LTDL +# ------------ +# Clients of libltdl can use this macro to allow the installer to +# choose between a shipped copy of the ltdl sources or a preinstalled +# version of the library. +AC_DEFUN([AC_WITH_LTDL], +[AC_REQUIRE([AC_LIB_LTDL]) +AC_SUBST([LIBLTDL]) +AC_SUBST([INCLTDL]) + +# Unless the user asks us to check, assume no installed ltdl exists. +use_installed_libltdl=no + +AC_ARG_WITH([included_ltdl], + [ --with-included-ltdl use the GNU ltdl sources included here]) + +if test "x$with_included_ltdl" != xyes; then + # We are not being forced to use the included libltdl sources, so + # decide whether there is a useful installed version we can use. + AC_CHECK_HEADER([ltdl.h], + [AC_CHECK_LIB([ltdl], [lt_dlcaller_register], + [with_included_ltdl=no], + [with_included_ltdl=yes]) + ]) +fi + +if test "x$enable_ltdl_install" != xyes; then + # If the user did not specify an installable libltdl, then default + # to a convenience lib. + AC_LIBLTDL_CONVENIENCE +fi + +if test "x$with_included_ltdl" = xno; then + # If the included ltdl is not to be used. then Use the + # preinstalled libltdl we found. + AC_DEFINE([HAVE_LTDL], [1], + [Define this if a modern libltdl is already installed]) + LIBLTDL=-lltdl +fi + +# Report our decision... +AC_MSG_CHECKING([whether to use included libltdl]) +AC_MSG_RESULT([$with_included_ltdl]) + +AC_CONFIG_SUBDIRS([libltdl]) +])# AC_WITH_LTDL + + +# AC_LIB_LTDL +# ----------- +# Perform all the checks necessary for compilation of the ltdl objects +# -- including compiler checks and header checks. +AC_DEFUN([AC_LIB_LTDL], +[AC_PREREQ(2.50) +AC_REQUIRE([AC_PROG_CC]) +AC_REQUIRE([AC_C_CONST]) +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([AC_HEADER_DIRENT]) +AC_REQUIRE([_LT_AC_CHECK_DLFCN]) +AC_REQUIRE([AC_LTDL_ENABLE_INSTALL]) +AC_REQUIRE([AC_LTDL_SHLIBEXT]) +AC_REQUIRE([AC_LTDL_SHLIBPATH]) +AC_REQUIRE([AC_LTDL_SYSSEARCHPATH]) +AC_REQUIRE([AC_LTDL_OBJDIR]) +AC_REQUIRE([AC_LTDL_DLPREOPEN]) +AC_REQUIRE([AC_LTDL_DLLIB]) +AC_REQUIRE([AC_LTDL_SYMBOL_USCORE]) +AC_REQUIRE([AC_LTDL_DLSYM_USCORE]) +AC_REQUIRE([AC_LTDL_SYS_DLOPEN_DEPLIBS]) +AC_REQUIRE([AC_LTDL_FUNC_ARGZ]) + +AC_CHECK_HEADERS([assert.h ctype.h errno.h malloc.h memory.h stdlib.h \ + stdio.h unistd.h]) +AC_CHECK_HEADERS([dl.h sys/dl.h dld.h mach-o/dyld.h]) +AC_CHECK_HEADERS([string.h strings.h], [break]) + +AC_CHECK_FUNCS([strchr index], [break]) +AC_CHECK_FUNCS([strrchr rindex], [break]) +AC_CHECK_FUNCS([memcpy bcopy], [break]) +AC_CHECK_FUNCS([memmove strcmp]) +AC_CHECK_FUNCS([closedir opendir readdir]) +])# AC_LIB_LTDL + + +# AC_LTDL_ENABLE_INSTALL +# ---------------------- +AC_DEFUN([AC_LTDL_ENABLE_INSTALL], +[AC_ARG_ENABLE([ltdl-install], + [AC_HELP_STRING([--enable-ltdl-install], [install libltdl])]) + +AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno) +AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno) +])# AC_LTDL_ENABLE_INSTALL + + +# AC_LTDL_SYS_DLOPEN_DEPLIBS +# -------------------------- +AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_CACHE_CHECK([whether deplibs are loaded by dlopen], + [libltdl_cv_sys_dlopen_deplibs], + [# PORTME does your system automatically load deplibs for dlopen? + # or its logical equivalent (e.g. shl_load for HP-UX < 11) + # For now, we just catch OSes we know something about -- in the + # future, we'll try test this programmatically. + libltdl_cv_sys_dlopen_deplibs=unknown + case "$host_os" in + aix3*|aix4.1.*|aix4.2.*) + # Unknown whether this is true for these versions of AIX, but + # we want this `case' here to explicitly catch those versions. + libltdl_cv_sys_dlopen_deplibs=unknown + ;; + aix[[45]]*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + darwin*) + # Assuming the user has installed a libdl from somewhere, this is true + # If you are looking for one http://www.opendarwin.org/projects/dlcompat + libltdl_cv_sys_dlopen_deplibs=yes + ;; + gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) + # GNU and its variants, using gnu ld.so (Glibc) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + hpux10*|hpux11*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + interix*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + irix[[12345]]*|irix6.[[01]]*) + # Catch all versions of IRIX before 6.2, and indicate that we don't + # know how it worked for any of those versions. + libltdl_cv_sys_dlopen_deplibs=unknown + ;; + irix*) + # The case above catches anything before 6.2, and it's known that + # at 6.2 and later dlopen does load deplibs. + libltdl_cv_sys_dlopen_deplibs=yes + ;; + netbsd*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + openbsd*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + osf[[1234]]*) + # dlopen did load deplibs (at least at 4.x), but until the 5.x series, + # it did *not* use an RPATH in a shared library to find objects the + # library depends on, so we explicitly say `no'. + libltdl_cv_sys_dlopen_deplibs=no + ;; + osf5.0|osf5.0a|osf5.1) + # dlopen *does* load deplibs and with the right loader patch applied + # it even uses RPATH in a shared library to search for shared objects + # that the library depends on, but there's no easy way to know if that + # patch is installed. Since this is the case, all we can really + # say is unknown -- it depends on the patch being installed. If + # it is, this changes to `yes'. Without it, it would be `no'. + libltdl_cv_sys_dlopen_deplibs=unknown + ;; + osf*) + # the two cases above should catch all versions of osf <= 5.1. Read + # the comments above for what we know about them. + # At > 5.1, deplibs are loaded *and* any RPATH in a shared library + # is used to find them so we can finally say `yes'. + libltdl_cv_sys_dlopen_deplibs=yes + ;; + solaris*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + esac + ]) +if test "$libltdl_cv_sys_dlopen_deplibs" != yes; then + AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], + [Define if the OS needs help to load dependent libraries for dlopen().]) +fi +])# AC_LTDL_SYS_DLOPEN_DEPLIBS + + +# AC_LTDL_SHLIBEXT +# ---------------- +AC_DEFUN([AC_LTDL_SHLIBEXT], +[AC_REQUIRE([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) +AC_CACHE_CHECK([which extension is used for loadable modules], + [libltdl_cv_shlibext], +[ +module=yes +eval libltdl_cv_shlibext=$shrext_cmds + ]) +if test -n "$libltdl_cv_shlibext"; then + AC_DEFINE_UNQUOTED([LTDL_SHLIB_EXT], ["$libltdl_cv_shlibext"], + [Define to the extension used for shared libraries, say, ".so".]) +fi +])# AC_LTDL_SHLIBEXT + + +# AC_LTDL_SHLIBPATH +# ----------------- +AC_DEFUN([AC_LTDL_SHLIBPATH], +[AC_REQUIRE([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) +AC_CACHE_CHECK([which variable specifies run-time library path], + [libltdl_cv_shlibpath_var], [libltdl_cv_shlibpath_var="$shlibpath_var"]) +if test -n "$libltdl_cv_shlibpath_var"; then + AC_DEFINE_UNQUOTED([LTDL_SHLIBPATH_VAR], ["$libltdl_cv_shlibpath_var"], + [Define to the name of the environment variable that determines the dynamic library search path.]) +fi +])# AC_LTDL_SHLIBPATH + + +# AC_LTDL_SYSSEARCHPATH +# --------------------- +AC_DEFUN([AC_LTDL_SYSSEARCHPATH], +[AC_REQUIRE([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) +AC_CACHE_CHECK([for the default library search path], + [libltdl_cv_sys_search_path], + [libltdl_cv_sys_search_path="$sys_lib_dlsearch_path_spec"]) +if test -n "$libltdl_cv_sys_search_path"; then + sys_search_path= + for dir in $libltdl_cv_sys_search_path; do + if test -z "$sys_search_path"; then + sys_search_path="$dir" + else + sys_search_path="$sys_search_path$PATH_SEPARATOR$dir" + fi + done + AC_DEFINE_UNQUOTED([LTDL_SYSSEARCHPATH], ["$sys_search_path"], + [Define to the system default library search path.]) +fi +])# AC_LTDL_SYSSEARCHPATH + + +# AC_LTDL_OBJDIR +# -------------- +AC_DEFUN([AC_LTDL_OBJDIR], +[AC_CACHE_CHECK([for objdir], + [libltdl_cv_objdir], + [libltdl_cv_objdir="$objdir" + if test -n "$objdir"; then + : + else + rm -f .libs 2>/dev/null + mkdir .libs 2>/dev/null + if test -d .libs; then + libltdl_cv_objdir=.libs + else + # MS-DOS does not allow filenames that begin with a dot. + libltdl_cv_objdir=_libs + fi + rmdir .libs 2>/dev/null + fi + ]) +AC_DEFINE_UNQUOTED([LTDL_OBJDIR], ["$libltdl_cv_objdir/"], + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# AC_LTDL_OBJDIR + + +# AC_LTDL_DLPREOPEN +# ----------------- +AC_DEFUN([AC_LTDL_DLPREOPEN], +[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) +AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen], + [libltdl_cv_preloaded_symbols], + [if test -n "$lt_cv_sys_global_symbol_pipe"; then + libltdl_cv_preloaded_symbols=yes + else + libltdl_cv_preloaded_symbols=no + fi + ]) +if test x"$libltdl_cv_preloaded_symbols" = xyes; then + AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1], + [Define if libtool can extract symbol lists from object files.]) +fi +])# AC_LTDL_DLPREOPEN + + +# AC_LTDL_DLLIB +# ------------- +AC_DEFUN([AC_LTDL_DLLIB], +[LIBADD_DL= +AC_SUBST(LIBADD_DL) +AC_LANG_PUSH([C]) + +AC_CHECK_FUNC([shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.])], + [AC_CHECK_LIB([dld], [shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LIBADD_DL="$LIBADD_DL -ldld"], + [AC_CHECK_LIB([dl], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DL="-ldl" libltdl_cv_lib_dl_dlopen="yes"], + [AC_TRY_LINK([#if HAVE_DLFCN_H +# include +#endif + ], + [dlopen(0, 0);], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) libltdl_cv_func_dlopen="yes"], + [AC_CHECK_LIB([svld], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DL="-lsvld" libltdl_cv_func_dlopen="yes"], + [AC_CHECK_LIB([dld], [dld_link], + [AC_DEFINE([HAVE_DLD], [1], + [Define if you have the GNU dld library.]) + LIBADD_DL="$LIBADD_DL -ldld"], + [AC_CHECK_FUNC([_dyld_func_lookup], + [AC_DEFINE([HAVE_DYLD], [1], + [Define if you have the _dyld_func_lookup function.])]) + ]) + ]) + ]) + ]) + ]) +]) + +if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes +then + lt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBADD_DL" + AC_CHECK_FUNCS([dlerror]) + LIBS="$lt_save_LIBS" +fi +AC_LANG_POP +])# AC_LTDL_DLLIB + + +# AC_LTDL_SYMBOL_USCORE +# --------------------- +# does the compiler prefix global symbols with an underscore? +AC_DEFUN([AC_LTDL_SYMBOL_USCORE], +[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) +AC_CACHE_CHECK([for _ prefix in compiled symbols], + [ac_cv_sys_symbol_underscore], + [ac_cv_sys_symbol_underscore=no + cat > conftest.$ac_ext < $ac_nlist) && test -s "$ac_nlist"; then + # See whether the symbols have a leading underscore. + if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then + ac_cv_sys_symbol_underscore=yes + else + if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then + : + else + echo "configure: cannot find nm_test_func in $ac_nlist" >&AC_FD_CC + fi + fi + else + echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC + fi + else + echo "configure: failed program was:" >&AC_FD_CC + cat conftest.c >&AC_FD_CC + fi + rm -rf conftest* + ]) +])# AC_LTDL_SYMBOL_USCORE + + +# AC_LTDL_DLSYM_USCORE +# -------------------- +AC_DEFUN([AC_LTDL_DLSYM_USCORE], +[AC_REQUIRE([AC_LTDL_SYMBOL_USCORE]) +if test x"$ac_cv_sys_symbol_underscore" = xyes; then + if test x"$libltdl_cv_func_dlopen" = xyes || + test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then + AC_CACHE_CHECK([whether we have to add an underscore for dlsym], + [libltdl_cv_need_uscore], + [libltdl_cv_need_uscore=unknown + save_LIBS="$LIBS" + LIBS="$LIBS $LIBADD_DL" + _LT_AC_TRY_DLOPEN_SELF( + [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes], + [], [libltdl_cv_need_uscore=cross]) + LIBS="$save_LIBS" + ]) + fi +fi + +if test x"$libltdl_cv_need_uscore" = xyes; then + AC_DEFINE([NEED_USCORE], [1], + [Define if dlsym() requires a leading underscore in symbol names.]) +fi +])# AC_LTDL_DLSYM_USCORE + +# AC_LTDL_FUNC_ARGZ +# ----------------- +AC_DEFUN([AC_LTDL_FUNC_ARGZ], +[AC_CHECK_HEADERS([argz.h]) + +AC_CHECK_TYPES([error_t], + [], + [AC_DEFINE([error_t], [int], + [Define to a type to use for `error_t' if it is not otherwise available.])], + [#if HAVE_ARGZ_H +# include +#endif]) + +AC_CHECK_FUNCS([argz_append argz_create_sep argz_insert argz_next argz_stringify]) +])# AC_LTDL_FUNC_ARGZ + +AC_DEFUN([AC_PROG_SHELL], + [AC_MSG_CHECKING(for a POSIX-compliant shell) + AC_CACHE_VAL(ac_cv_path_shell, + [ac_cv_path_shell=no + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy=/bin:/usr/bin:/usr/bin/posix:/usr/xpg4/bin:$PATH + for ac_dir in $ac_dummy; do + for ac_base in sh bash ksh sh5; do + case "$ac_dir" in + /*) + if ("$ac_dir/$ac_base" -c ' + + # Test the noclobber option, + # using the portable POSIX.2 syntax. + set -C + rm -f conftest.c || exit + >conftest.c || exit + >|conftest.c || exit + !>conftest.c || exit + + ') 2>/dev/null; then + ac_cv_path_shell="$ac_dir/$ac_base" + break + fi + ;; + esac + done + if test "$ac_cv_path_shell" != no; then + break + fi + done + IFS="$ac_save_ifs"]) + AC_MSG_RESULT($ac_cv_path_shell) + SHELL=$ac_cv_path_shell + if test "$SHELL" = no; then + SHELL=/bin/sh + AC_MSG_WARN(Using $SHELL, even though it is not POSIX-compliant) + fi + AC_SUBST(SHELL)]) diff --git a/siege-4.1.6/aclocal.m4 b/siege-4.1.6/aclocal.m4 new file mode 100644 index 0000000..fba5389 --- /dev/null +++ b/siege-4.1.6/aclocal.m4 @@ -0,0 +1,1040 @@ +# generated automatically by aclocal 1.13.4 -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# 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. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.13' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.13.4], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.13.4])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([acinclude.m4]) diff --git a/siege-4.1.6/acspecific.m4 b/siege-4.1.6/acspecific.m4 new file mode 100644 index 0000000..0071304 --- /dev/null +++ b/siege-4.1.6/acspecific.m4 @@ -0,0 +1,1050 @@ +# This file is part of Autoconf. -*- Autoconf -*- +# Macros that test for specific features. +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +# +# As a special exception, the Free Software Foundation gives unlimited +# permission to copy, distribute and modify the configure scripts that +# are the output of Autoconf. You need not follow the terms of the GNU +# General Public License when using or distributing such scripts, even +# though portions of the text of Autoconf appear in them. The GNU +# General Public License (GPL) does govern all other use of the material +# that constitutes the Autoconf program. +# +# Certain portions of the Autoconf source text are designed to be copied +# (in certain cases, depending on the input) into the output of +# Autoconf. We call these the "data" portions. The rest of the Autoconf +# source text consists of comments plus executable code that decides which +# of the data portions to output in any given case. We call these +# comments and executable code the "non-data" portions. Autoconf never +# copies any of the non-data portions into its output. +# +# This special exception to the GPL applies to versions of Autoconf +# released by the Free Software Foundation. When you make and +# distribute a modified version of Autoconf, you may extend this special +# exception to the GPL to apply to your modified version as well, *unless* +# your modified version has the potential to copy into its output some +# of the text that was the non-data portion of the version that you started +# with. (In other words, unless your change moves or copies text from +# the non-data portions to the data portions.) If your modification has +# such potential, you must delete any notice of this special exception +# to the GPL from your modified version. +# +# Written by David MacKenzie, with help from +# Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor, +# Roland McGrath, Noah Friedman, david d zuhn, and many others. + + +## --------------------- ## +## Checks for programs. ## +## --------------------- ## + + +# _AC_PROG_ECHO +# ------------- +# Check whether to use -n, \c, or newline-tab to separate +# checking messages from result messages. +# Don't try to cache, since the results of this macro are needed to +# display the checking message. In addition, caching something used once +# has little interest. +# Idea borrowed from dist 3.0. Use `*c*,', not `*c,' because if `\c' +# failed there is also a new-line to match. +m4_define([_AC_PROG_ECHO], +[case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac +AC_SUBST(ECHO_C)dnl +AC_SUBST(ECHO_N)dnl +AC_SUBST(ECHO_T)dnl +])# _AC_PROG_ECHO + + +# AC_PROG_MAKE_SET +# ---------------- +# Define SET_MAKE to set ${MAKE} if make doesn't. +AC_DEFUN([AC_PROG_MAKE_SET], +[AC_MSG_CHECKING([whether ${MAKE-make} sets \${MAKE}]) +set dummy ${MAKE-make}; ac_make=`echo "$[2]" | sed 'y,./+-,__p_,'` +AC_CACHE_VAL(ac_cv_prog_make_${ac_make}_set, +[cat >conftest.make <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make])dnl +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + AC_MSG_RESULT([yes]) + SET_MAKE= +else + AC_MSG_RESULT([no]) + SET_MAKE="MAKE=${MAKE-make}" +fi +AC_SUBST([SET_MAKE])dnl +])# AC_PROG_MAKE_SET + + +# AC_PROG_RANLIB +# -------------- +AC_DEFUN([AC_PROG_RANLIB], +[AC_CHECK_TOOL(RANLIB, ranlib, :)]) + + +# Check for mawk first since it's generally faster. +AC_DEFUN([AC_PROG_AWK], +[AC_CHECK_PROGS(AWK, mawk gawk nawk awk, )]) + + +# AC_PROG_YACC +# ------------ +AC_DEFUN([AC_PROG_YACC], +[AC_CHECK_PROGS(YACC, 'bison -y' byacc, yacc)]) + + +# AC_PROG_LEX +# ----------- +# Look for flex or lex. Set its associated library to LEXLIB. +# Check if lex declares yytext as a char * by default, not a char[]. +AC_DEFUN_ONCE([AC_PROG_LEX], +[AC_CHECK_PROGS(LEX, flex lex, :) +if test -z "$LEXLIB" +then + AC_CHECK_LIB(fl, yywrap, LEXLIB="-lfl", + [AC_CHECK_LIB(l, yywrap, LEXLIB="-ll")]) +fi +AC_SUBST(LEXLIB) +if test "x$LEX" != "x:"; then + _AC_DECL_YYTEXT +fi]) + + +# _AC_DECL_YYTEXT +# --------------- +# Check if lex declares yytext as a char * by default, not a char[]. +m4_define([_AC_DECL_YYTEXT], +[AC_CACHE_CHECK(lex output file root, ac_cv_prog_lex_root, +[# The minimal lex program is just a single line: %%. But some broken lexes +# (Solaris, I think it was) want two %% lines, so accommodate them. +echo '%% +%%' | $LEX +if test -f lex.yy.c; then + ac_cv_prog_lex_root=lex.yy +elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy +else + AC_MSG_ERROR([cannot find output from $LEX; giving up]) +fi]) +LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root +AC_SUBST(LEX_OUTPUT_ROOT)dnl + +AC_CACHE_CHECK(whether yytext is a pointer, ac_cv_prog_lex_yytext_pointer, +[# POSIX says lex can declare yytext either as a pointer or an array; the +# default is implementation-dependent. Figure out which it is, since +# not all implementations provide the %pointer and %array declarations. +ac_cv_prog_lex_yytext_pointer=no +echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c +ac_save_LIBS=$LIBS +LIBS="$LIBS $LEXLIB" +AC_LINK_IFELSE([`cat $LEX_OUTPUT_ROOT.c`], ac_cv_prog_lex_yytext_pointer=yes) +LIBS=$ac_save_LIBS +rm -f "${LEX_OUTPUT_ROOT}.c" +]) +dnl +if test $ac_cv_prog_lex_yytext_pointer = yes; then + AC_DEFINE(YYTEXT_POINTER, 1, + [Define if `lex' declares `yytext' as a `char *' by default, + not a `char[]'.]) +fi +])# _AC_DECL_YYTEXT + + +# Require AC_PROG_LEX in case some people were just calling this macro. +AU_DEFUN([AC_DECL_YYTEXT], +[AC_PROG_LEX]) + + +# AC_PROG_INSTALL +# --------------- +AC_DEFUN([AC_PROG_INSTALL], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +AC_MSG_CHECKING([for a BSD compatible install]) +if test -z "$INSTALL"; then +AC_CACHE_VAL(ac_cv_path_install, +[ ac_save_IFS=$IFS; IFS=$ac_path_separator + for ac_dir in $PATH; do + IFS=$ac_save_IFS + # Account for people who put trailing slashes in PATH elements. + case $ac_dir/ in + / | ./ | .// | /[cC]/* \ + | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ + | /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if AS_EXECUTABLE_P(["$ac_dir/$ac_prog"]); then + if test $ac_prog = install && + grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done +])dnl + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +dnl We do special magic for INSTALL instead of AC_SUBST, to get +dnl relative paths right. +AC_MSG_RESULT([$INSTALL]) + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' +AC_SUBST(INSTALL_PROGRAM)dnl + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' +AC_SUBST(INSTALL_SCRIPT)dnl + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +AC_SUBST(INSTALL_DATA)dnl +])# AC_PROG_INSTALL + + +# AC_PROG_LN_S +# ------------ +AC_DEFUN([AC_PROG_LN_S], +[AC_MSG_CHECKING([whether ln -s works]) +AC_SUBST([LN_S], [$as_ln_s])dnl +if test "$LN_S" = "ln -s"; then + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no, using $LN_S]) +fi +])# AC_PROG_LN_S + + +# AC_RSH +# ------ +# I don't know what it used to do, but it no longer does. +AU_DEFUN([AC_RSH], +[AC_DIAGNOSE([obsolete], [$0: is no longer supported. +Remove this warning when you adjust the code.])]) + + + +## ------------------------- ## +## Checks for declarations. ## +## ------------------------- ## + + +# AC_DECL_SYS_SIGLIST +# ------------------- +AC_DEFUN([AC_DECL_SYS_SIGLIST], +[AC_CACHE_CHECK([for sys_siglist declaration in signal.h or unistd.h], + ac_cv_decl_sys_siglist, +[AC_COMPILE_IFELSE( +[AC_LANG_PROGRAM([#include +#include +/* NetBSD declares sys_siglist in unistd.h. */ +#if HAVE_UNISTD_H +# include +#endif +], [char *msg = *(sys_siglist + 1);])], + [ac_cv_decl_sys_siglist=yes], + [ac_cv_decl_sys_siglist=no])]) +if test $ac_cv_decl_sys_siglist = yes; then + AC_DEFINE(SYS_SIGLIST_DECLARED, 1, + [Define if `sys_siglist' is declared by or .]) +fi +])# AC_DECL_SYS_SIGLIST + + + + +## -------------------------------------- ## +## Checks for operating system services. ## +## -------------------------------------- ## + + +# AC_SYS_INTERPRETER +# ------------------ +AC_DEFUN([AC_SYS_INTERPRETER], +[AC_CACHE_CHECK(whether @%:@! works in shell scripts, ac_cv_sys_interpreter, +[echo '#! /bin/cat +exit 69 +' >conftest +chmod u+x conftest +(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null) +if test $? -ne 69; then + ac_cv_sys_interpreter=yes +else + ac_cv_sys_interpreter=no +fi +rm -f conftest]) +interpval=$ac_cv_sys_interpreter +]) + + +AU_DEFUN([AC_HAVE_POUNDBANG], +[AC_SYS_INTERPRETER +AC_DIAGNOSE([obsolete], +[$0: Remove this warning when you adjust your code to use + `AC_SYS_INTERPRETER'.])]) + + +AU_DEFUN([AC_ARG_ARRAY], +[AC_DIAGNOSE([obsolete], +[$0: no longer implemented: don't do unportable things +with arguments. Remove this warning when you adjust your code.])]) + + +# _AC_SYS_LARGEFILE_TEST_INCLUDES +# ------------------------------- +m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], +[@%:@include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +@%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]];[]dnl +]) + + +# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, +# CACHE-VAR, +# DESCRIPTION, +# [INCLUDES], [FUNCTION-BODY]) +# ---------------------------------------------------------- +m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], +[AC_CACHE_CHECK([for $1 value needed for large files], [$3], +[while :; do + $3=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$5], [$6])], + [break]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([@%:@define $1 $2 +$5], [$6])], + [$3=$2; break]) + break +done]) +if test "$$3" != no; then + AC_DEFINE_UNQUOTED([$1], [$$3], [$4]) +fi +rm -f conftest*[]dnl +])# _AC_SYS_LARGEFILE_MACRO_VALUE + + +# AC_SYS_LARGEFILE +# ---------------- +# By default, many hosts won't let programs access large files; +# one must use special compiler options to get large-file access to work. +# For more details about this brain damage please see: +# http://www.sas.com/standards/large.file/x_open.20Mar96.html +AC_DEFUN([AC_SYS_LARGEFILE], +[AC_ARG_ENABLE(largefile, + [ --disable-largefile omit support for large files]) +if test "$enable_largefile" != no; then + + AC_CACHE_CHECK([for special C compiler options needed for large files], + ac_cv_sys_largefile_CC, + [ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) + AC_COMPILE_IFELSE([], [break]) + CC="$CC -n32" + AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi]) + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, + ac_cv_sys_file_offset_bits, + [Number of bits in a file offset, on hosts where this is settable.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES]) + _AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, + ac_cv_sys_large_files, + [Define for large files, on AIX-style hosts.], + [_AC_SYS_LARGEFILE_TEST_INCLUDES]) +fi +])# AC_SYS_LARGEFILE + + +# AC_SYS_LONG_FILE_NAMES +# ---------------------- +# Security: use a temporary directory as the most portable way of +# creating files in /tmp securely. Removing them leaves a race +# condition, set -C is not portably guaranteed to use O_EXCL, so still +# leaves a race, and not all systems have the `mktemp' utility. We +# still test for existence first in case of broken systems where the +# mkdir succeeds even when the directory exists. Broken systems may +# retain a race, but they probably have other security problems +# anyway; this should be secure on well-behaved systems. In any case, +# use of `mktemp' is probably inappropriate here since it would fail in +# attempting to create different file names differing after the 14th +# character on file systems without long file names. +AC_DEFUN([AC_SYS_LONG_FILE_NAMES], +[AC_CACHE_CHECK(for long file names, ac_cv_sys_long_file_names, +[ac_cv_sys_long_file_names=yes +# Test for long file names in all the places we know might matter: +# . the current directory, where building will happen +# $prefix/lib where we will be installing things +# $exec_prefix/lib likewise +# eval it to expand exec_prefix. +# $TMPDIR if set, where it might want to write temporary files +# if $TMPDIR is not set: +# /tmp where it might want to write temporary files +# /var/tmp likewise +# /usr/tmp likewise +if test -n "$TMPDIR" && test -d "$TMPDIR" && test -w "$TMPDIR"; then + ac_tmpdirs=$TMPDIR +else + ac_tmpdirs='/tmp /var/tmp /usr/tmp' +fi +for ac_dir in . $ac_tmpdirs `eval echo $prefix/lib $exec_prefix/lib` ; do + test -d $ac_dir || continue + test -w $ac_dir || continue # It is less confusing to not echo anything here. + ac_xdir=$ac_dir/cf$$ + (umask 077 && mkdir $ac_xdir 2>/dev/null) || continue + ac_tf1=$ac_xdir/conftest9012345 + ac_tf2=$ac_xdir/conftest9012346 + (echo 1 >$ac_tf1) 2>/dev/null + (echo 2 >$ac_tf2) 2>/dev/null + ac_val=`cat $ac_tf1 2>/dev/null` + if test ! -f $ac_tf1 || test "$ac_val" != 1; then + ac_cv_sys_long_file_names=no + rm -rf $ac_xdir 2>/dev/null + break + fi + rm -rf $ac_xdir 2>/dev/null +done]) +if test $ac_cv_sys_long_file_names = yes; then + AC_DEFINE(HAVE_LONG_FILE_NAMES, 1, + [Define if you support file names longer than 14 characters.]) +fi +]) + + +# AC_SYS_RESTARTABLE_SYSCALLS +# --------------------------- +# If the system automatically restarts a system call that is +# interrupted by a signal, define `HAVE_RESTARTABLE_SYSCALLS'. +AC_DEFUN([AC_SYS_RESTARTABLE_SYSCALLS], +[AC_DIAGNOSE([obsolete], +[$0: System call restartability is now typically set at runtime. +Remove this `AC_SYS_RESTARTABLE_SYSCALLS' +and adjust your code to use `sigaction' with `SA_RESTART' instead.])dnl +AC_REQUIRE([AC_HEADER_SYS_WAIT])dnl +AC_CHECK_HEADERS(unistd.h) +AC_CACHE_CHECK(for restartable system calls, ac_cv_sys_restartable_syscalls, +[AC_RUN_IFELSE([AC_LANG_SOURCE( +[/* Exit 0 (true) if wait returns something other than -1, + i.e. the pid of the child, which means that wait was restarted + after getting the signal. */ + +#include +#include +#if HAVE_UNISTD_H +# include +#endif +#if HAVE_SYS_WAIT_H +# include +#endif + +/* Some platforms explicitly require an extern "C" signal handler + when using C++. */ +#ifdef __cplusplus +extern "C" void ucatch (int dummy) { } +#else +void ucatch (dummy) int dummy; { } +#endif + +int +main () +{ + int i = fork (), status; + + if (i == 0) + { + sleep (3); + kill (getppid (), SIGINT); + sleep (3); + exit (0); + } + + signal (SIGINT, ucatch); + + status = wait (&i); + if (status == -1) + wait (&i); + + exit (status == -1); +}])], + [ac_cv_sys_restartable_syscalls=yes], + [ac_cv_sys_restartable_syscalls=no])]) +if test $ac_cv_sys_restartable_syscalls = yes; then + AC_DEFINE(HAVE_RESTARTABLE_SYSCALLS, 1, + [Define if system calls automatically restart after interruption + by a signal.]) +fi +])# AC_SYS_RESTARTABLE_SYSCALLS + + +# AC_SYS_POSIX_TERMIOS +# -------------------- +AC_DEFUN([AC_SYS_POSIX_TERMIOS], +[AC_CACHE_CHECK([POSIX termios], ac_cv_sys_posix_termios, +[AC_TRY_LINK([#include +#include +@%:@include ], + [/* SunOS 4.0.3 has termios.h but not the library calls. */ + tcgetattr(0, 0);], + ac_cv_sys_posix_termios=yes, + ac_cv_sys_posix_termios=no)]) +])# AC_SYS_POSIX_TERMIOS + + + +## --------------------- ## +## Checks for X window. ## +## --------------------- ## + + +# _AC_PATH_X_XMKMF +# ---------------- +# Internal subroutine of _AC_PATH_X. +# Set ac_x_includes and/or ac_x_libraries. +m4_define([_AC_PATH_X_XMKMF], +[rm -fr conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + # Make sure to not put "make" in the Imakefile rules, since we grep it out. + cat >Imakefile <<'EOF' +acfindx: + @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' +EOF + if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl; do + if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && + test -f $ac_im_libdir/libX11.$ac_extension; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -fr conftest.dir +fi +])# _AC_PATH_X_XMKMF + + +# _AC_PATH_X_DIRECT +# ----------------- +# Internal subroutine of _AC_PATH_X. +# Set ac_x_includes and/or ac_x_libraries. +m4_define([_AC_PATH_X_DIRECT], +[# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Intrinsic.h. + # First, try using that file with no special directory specified. + AC_PREPROC_IFELSE([AC_LANG_SOURCE([@%:@include ])], +[# We can compile using X headers with no special include directory. +ac_x_includes=], +[for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Intrinsic.h"; then + ac_x_includes=$ac_dir + break + fi +done]) +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lXt $LIBS" + AC_TRY_LINK([@%:@include ], [XtMalloc (0)], +[LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries=], +[LIBS=$ac_save_LIBS +for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do + if test -r $ac_dir/libXt.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done]) +fi # $ac_x_libraries = no +])# _AC_PATH_X_DIRECT + + +# _AC_PATH_X +# ---------- +# Compute ac_cv_have_x. +AC_DEFUN([_AC_PATH_X], +[AC_CACHE_VAL(ac_cv_have_x, +[# One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +_AC_PATH_X_XMKMF +_AC_PATH_X_DIRECT +if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then + # Didn't find X anywhere. Cache the known absence of X. + ac_cv_have_x="have_x=no" +else + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" +fi])dnl +]) + + +# AC_PATH_X +# --------- +# If we find X, set shell vars x_includes and x_libraries to the +# paths, otherwise set no_x=yes. +# Uses ac_ vars as temps to allow command line to override cache and checks. +# --without-x overrides everything else, but does not touch the cache. +AC_DEFUN([AC_PATH_X], +[dnl Document the X abnormal options inherited from history. +m4_divert_once([HELP_BEGIN], [ +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR])dnl +AC_MSG_CHECKING([for X]) + +AC_ARG_WITH(x, [ --with-x use the X Window System]) +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then + # Both variables are already set. + have_x=yes + else + _AC_PATH_X + fi + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + AC_MSG_RESULT([$have_x]) + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$x_includes ac_x_libraries=$x_libraries" + AC_MSG_RESULT([libraries $x_libraries, headers $x_includes]) +fi +])# AC_PATH_X + + + +# AC_PATH_XTRA +# ------------ +# Find additional X libraries, magic flags, etc. +AC_DEFUN([AC_PATH_XTRA], +[AC_REQUIRE([AC_PATH_X])dnl +if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + AC_DEFINE([X_DISPLAY_MISSING], 1, + [Define if the X Window System is missing or not being used.]) + X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= +else + if test -n "$x_includes"; then + X_CFLAGS="$X_CFLAGS -I$x_includes" + fi + + # It would also be nice to do this for all -L options, not just this one. + if test -n "$x_libraries"; then + X_LIBS="$X_LIBS -L$x_libraries" +dnl FIXME: banish uname from this macro! + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . + case `(uname -sr) 2>/dev/null` in + "SunOS 5"*) + AC_MSG_CHECKING([whether -R must be followed by a space]) + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + AC_LINK_IFELSE([AC_LANG_PROGRAM()], ac_R_nospace=yes, ac_R_nospace=no) + if test $ac_R_nospace = yes; then + AC_MSG_RESULT([no]) + X_LIBS="$X_LIBS -R$x_libraries" + else + LIBS="$ac_xsave_LIBS -R $x_libraries" + AC_LINK_IFELSE([AC_LANG_PROGRAM()], ac_R_space=yes, ac_R_space=no) + if test $ac_R_space = yes; then + AC_MSG_RESULT([yes]) + X_LIBS="$X_LIBS -R $x_libraries" + else + AC_MSG_RESULT([neither works]) + fi + fi + LIBS=$ac_xsave_LIBS + esac + fi + + # Check for system-dependent libraries X programs must link with. + # Do this before checking for the system-independent R6 libraries + # (-lICE), since we may need -lsocket or whatever for X linking. + + if test "$ISC" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" + else + # Martyn Johnson says this is needed for Ultrix, if the X + # libraries were built with DECnet support. And Karl Berry says + # the Alpha needs dnet_stub (dnet does not exist). + ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" + AC_TRY_LINK_FUNC(XOpenDisplay, , + [AC_CHECK_LIB(dnet, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + AC_CHECK_LIB(dnet_stub, dnet_ntoa, + [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) + fi]) + LIBS="$ac_xsave_LIBS" + + # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, + # to get the SysV transport functions. + # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) + # needs -lnsl. + # The nsl library prevents programs from opening the X display + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + AC_CHECK_FUNC(gethostbyname) + if test $ac_cv_func_gethostbyname = no; then + AC_CHECK_LIB(nsl, gethostbyname, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl") + if test $ac_cv_lib_nsl_gethostbyname = no; then + AC_CHECK_LIB(bsd, gethostbyname, X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd") + fi + fi + + # lieder@skyler.mavd.honeywell.com says without -lsocket, + # socket/setsockopt and other routines are undefined under SCO ODT + # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary + # on later versions), says Simon Leinen: it contains gethostby* + # variants that don't use the nameserver (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + AC_CHECK_FUNC(connect) + if test $ac_cv_func_connect = no; then + AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", , + $X_EXTRA_LIBS) + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. + AC_CHECK_FUNC(remove) + if test $ac_cv_func_remove = no; then + AC_CHECK_LIB(posix, remove, X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix") + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + AC_CHECK_FUNC(shmat) + if test $ac_cv_func_shmat = no; then + AC_CHECK_LIB(ipc, shmat, X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc") + fi + fi + + # Check for libraries that X11R6 Xt/Xaw programs need. + ac_save_LDFLAGS=$LDFLAGS + test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" + # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to + # check for ICE first), but we must link in the order -lSM -lICE or + # we get undefined symbols. So assume we have SM if we have ICE. + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry + AC_CHECK_LIB(ICE, IceConnectionNumber, + [X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"], , $X_EXTRA_LIBS) + LDFLAGS=$ac_save_LDFLAGS + +fi +AC_SUBST(X_CFLAGS)dnl +AC_SUBST(X_PRE_LIBS)dnl +AC_SUBST(X_LIBS)dnl +AC_SUBST(X_EXTRA_LIBS)dnl +])# AC_PATH_XTRA + + + +## ------------------------------------ ## +## Checks for not-quite-Unix variants. ## +## ------------------------------------ ## + + +# AC_CYGWIN +# --------- +# Check for Cygwin. This is a way to set the right value for +# EXEEXT. +AU_DEFUN([AC_CYGWIN], +[AC_REQUIRE([AC_CANONICAL_HOST])[]dnl +AC_DIAGNOSE([obsolete], + [$0 is obsolete: use AC_CANONICAL_HOST and $host_os])dnl +case $host_os in + *cygwin* ) CYGWIN=yes;; + * ) CYGWIN=no;; +esac +])# AC_CYGWIN + + +# AC_EMXOS2 +# --------- +# Check for EMX on OS/2. This is another way to set the right value +# for EXEEXT. +AU_DEFUN([AC_EMXOS2], +[AC_REQUIRE([AC_CANONICAL_HOST])[]dnl +AC_DIAGNOSE([obsolete], + [$0 is obsolete: use AC_CANONICAL_HOST and $host_os])dnl +case $host_os in + *emx* ) EMXOS2=yes;; + * ) EMXOS2=no;; +esac +])# AC_EMXOS2 + + +# AC_MINGW32 +# ---------- +# Check for mingw32. This is another way to set the right value for +# EXEEXT. +AU_DEFUN([AC_MINGW32], +[AC_REQUIRE([AC_CANONICAL_HOST])[]dnl +AC_DIAGNOSE([obsolete], + [$0 is obsolete: use AC_CANONICAL_HOST and $host_os])dnl +case $host_os in + *mingw32* ) MINGW32=yes;; + * ) MINGW32=no;; +esac +])# AC_MINGW32 + + + + +## -------------------------- ## +## Checks for UNIX variants. ## +## -------------------------- ## + + +# These are kludges which should be replaced by a single POSIX check. +# They aren't cached, to discourage their use. + +# AC_AIX +# ------ +AC_DEFUN([AC_AIX], +[AH_VERBATIM([_ALL_SOURCE], +[/* Define if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +@%:@ifndef _ALL_SOURCE +@%:@ undef _ALL_SOURCE +@%:@endif])dnl +AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl +AC_BEFORE([$0], [AC_RUN_IFELSE])dnl +AC_MSG_CHECKING([for AIX]) +AC_EGREP_CPP(yes, +[#ifdef _AIX + yes +#endif +], +[AC_MSG_RESULT([yes]) +AC_DEFINE(_ALL_SOURCE)], +[AC_MSG_RESULT([no])]) +])# AC_AIX + + +# AC_MINIX +# -------- +AC_DEFUN([AC_MINIX], +[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl +AC_BEFORE([$0], [AC_RUN_IFELSE])dnl +AC_CHECK_HEADER(minix/config.h, MINIX=yes, MINIX=) +if test "$MINIX" = yes; then + AC_DEFINE(_POSIX_SOURCE, 1, + [Define if you need to in order for `stat' and other things to + work.]) + AC_DEFINE(_POSIX_1_SOURCE, 2, + [Define if the system does not provide POSIX.1 features except + with this defined.]) + AC_DEFINE(_MINIX, 1, + [Define if on MINIX.]) +fi +])# AC_MINIX + + +# AC_ISC_POSIX +# ------------ +AC_DEFUN([AC_ISC_POSIX], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl +AC_BEFORE([$0], [AC_RUN_IFELSE])dnl +AC_MSG_CHECKING([for POSIXized ISC]) +if test -d /etc/conf/kconfig.d && + grep _POSIX_VERSION [/usr/include/sys/unistd.h] >/dev/null 2>&1 +then + AC_MSG_RESULT([yes]) + ISC=yes # If later tests want to check for ISC. + AC_DEFINE(_POSIX_SOURCE, 1, + [Define if you need to in order for stat and other things to + work.]) + if test "$GCC" = yes; then + CC="$CC -posix" + else + CC="$CC -Xp" + fi +else + AC_MSG_RESULT([no]) + ISC= +fi +])# AC_ISC_POSIX + + +# AC_XENIX_DIR +# ------------ +AU_DEFUN(AC_XENIX_DIR, +[# You shouldn't need to depend upon XENIX. Remove this test if useless. +AC_MSG_CHECKING([for Xenix]) +AC_EGREP_CPP(yes, +[#if defined(M_XENIX) && !defined(M_UNIX) + yes +@%:@endif], + [AC_MSG_RESULT([yes]); XENIX=yes], + [AC_MSG_RESULT([no]); XENIX=]) + +AC_HEADER_DIRENT[]dnl +]) + + +# AC_DYNIX_SEQ +# ------------ +AU_DEFUN([AC_DYNIX_SEQ], [AC_FUNC_GETMNTENT]) + + +# AC_IRIX_SUN +# ----------- +AU_DEFUN([AC_IRIX_SUN], +[AC_FUNC_GETMNTENT +AC_CHECK_LIB(sun, getpwnam)]) + + +# AC_SCO_INTL +# ----------- +AU_DEFUN([AC_SCO_INTL], [AC_FUNC_STRFTIME]) diff --git a/siege-4.1.6/config.status b/siege-4.1.6/config.status new file mode 100644 index 0000000..bb4d2f5 --- /dev/null +++ b/siege-4.1.6/config.status @@ -0,0 +1,1389 @@ +#! /bin/sh +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by siege $as_me 4.1.6, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile src/Makefile doc/Makefile html/Makefile include/Makefile include/joedog/Makefile utils/Makefile" +config_headers=" include/config.h" +config_commands=" depfiles default-1 default-2 default-3 default-4 default-5 default-6" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +ac_cs_config="" +ac_cs_version="\ +siege config.status 4.1.6 +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/mnt/e/webserv/siege-4.1.6' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/usr/bin/mkdir -p' +AWK='gawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/sh './configure' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6 + CONFIG_SHELL='/bin/sh' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +AMDEP_TRUE="" ac_aux_dir="utils" + prefix=/usr/local sysconfdir=${prefix}/etc localstatedir=${prefix}/var platform=pc-x86_64-linux-gnu + VERSION=4.1.6 DATE="June-18-2024" PROGRAM="siege" AUTHOR="Jeffrey Fulmer, et al." EMAIL="jeff@joedog.org" + bindir=${prefix}${exec_prefix}/bin sh=/bin/sh + bindir=${prefix}${exec_prefix}/bin sh=/bin/sh + bindir=${prefix}${exec_prefix}/bin LREP=/usr/bin/perl +PLATFORM=pc-x86_64-linux-gnu + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; + "default-3") CONFIG_COMMANDS="$CONFIG_COMMANDS default-3" ;; + "default-4") CONFIG_COMMANDS="$CONFIG_COMMANDS default-4" ;; + "default-5") CONFIG_COMMANDS="$CONFIG_COMMANDS default-5" ;; + "default-6") CONFIG_COMMANDS="$CONFIG_COMMANDS default-6" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "html/Makefile") CONFIG_FILES="$CONFIG_FILES html/Makefile" ;; + "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; + "include/joedog/Makefile") CONFIG_FILES="$CONFIG_FILES include/joedog/Makefile" ;; + "utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["PTHREAD_LDFLAGS"]="-lpthread" +S["PTHREAD_CFLAGS"]="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS" +S["ALLOCA"]="" +S["Z_LIBS"]="-lz" +S["Z_LDFLAGS"]="-L/usr/lib" +S["Z_INCLUDE"]="-I/include/zlib -I/include" +S["Z_CFLAGS"]="" +S["SSL_LIBS"]="" +S["SSL_LDFLAGS"]="" +S["SSL_INCLUDE"]="" +S["SSL_CFLAGS"]="" +S["LDL"]="-ldl" +S["WARN_CFLAGS"]="-W -Wall -Wunused-value" +S["CC_R"]="" +S["PERL"]="/usr/bin/perl" +S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" +S["ac_ct_F77"]="" +S["FFLAGS"]="" +S["F77"]="" +S["CXXCPP"]="g++ -E" +S["am__fastdepCXX_FALSE"]="" +S["am__fastdepCXX_TRUE"]="#" +S["CXXDEPMODE"]="depmode=none" +S["ac_ct_CXX"]="g++" +S["CXXFLAGS"]="-g -O2" +S["CXX"]="g++" +S["RANLIB"]="ranlib" +S["AR"]="ar" +S["ECHO"]="echo" +S["LN_S"]="cp -pR" +S["SED"]="/usr/bin/sed" +S["EGREP"]="/usr/bin/grep -E" +S["GREP"]="/usr/bin/grep" +S["CPP"]="gcc -E" +S["am__fastdepCC_FALSE"]="" +S["am__fastdepCC_TRUE"]="#" +S["CCDEPMODE"]="depmode=none" +S["am__nodep"]="_no" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__quote"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]="-I/include/zlib -I/include" +S["LDFLAGS"]="" +S["CFLAGS"]="-g -O2" +S["CC"]="gcc" +S["PLATFORM"]="pc-x86_64-linux-gnu" +S["EMAIL"]="jeff@joedog.org" +S["AUTHOR"]="Jeffrey Fulmer, et al." +S["PROGRAM"]="siege" +S["DATE"]="June-18-2024" +S["host_os"]="linux-gnu" +S["host_vendor"]="pc" +S["host_cpu"]="x86_64" +S["host"]="x86_64-pc-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="pc" +S["build_cpu"]="x86_64" +S["build"]="x86_64-pc-linux-gnu" +S["AM_BACKSLASH"]="\\" +S["AM_DEFAULT_VERBOSITY"]="1" +S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" +S["AM_V"]="$(V)" +S["am__untar"]="$${TAR-tar} xf -" +S["am__tar"]="$${TAR-tar} chof - \"$$tardir\"" +S["AMTAR"]="$${TAR-tar}" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="gawk" +S["mkdir_p"]="$(MKDIR_P)" +S["MKDIR_P"]="/usr/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="strip" +S["install_sh"]="${SHELL} /mnt/e/webserv/siege-4.1.6/utils/install-sh" +S["MAKEINFO"]="${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing makeinfo" +S["AUTOHEADER"]="${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoheader" +S["AUTOMAKE"]="${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing automake-1.13" +S["AUTOCONF"]="${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoconf" +S["ACLOCAL"]="${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing aclocal-1.13" +S["VERSION"]="4.1.6" +S["PACKAGE"]="siege" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="" +S["PACKAGE_STRING"]="siege 4.1.6" +S["PACKAGE_VERSION"]="4.1.6" +S["PACKAGE_TARNAME"]="siege" +S["PACKAGE_NAME"]="siege" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/sh" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"siege\"" +D["PACKAGE_TARNAME"]=" \"siege\"" +D["PACKAGE_VERSION"]=" \"4.1.6\"" +D["PACKAGE_STRING"]=" \"siege 4.1.6\"" +D["PACKAGE_BUGREPORT"]=" \"\"" +D["PACKAGE_URL"]=" \"\"" +D["PACKAGE"]=" \"siege\"" +D["VERSION"]=" \"4.1.6\"" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["__EXTENSIONS__"]=" 1" +D["_ALL_SOURCE"]=" 1" +D["_GNU_SOURCE"]=" 1" +D["_POSIX_PTHREAD_SEMANTICS"]=" 1" +D["_TANDEM_SOURCE"]=" 1" +D["HAVE_DLFCN_H"]=" 1" +D["HAVE_DEV_RANDOM"]=" 1" +D["HAVE__USR_INCLUDE_ZLIB_H"]=" 1" +D["HAVE_ZLIB"]=" 1" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_WAIT_H"]=" 1" +D["HAVE_FCNTL_H"]=" 1" +D["HAVE_LIMITS_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_SIGNAL_H"]=" 1" +D["HAVE_SYS_SOCKET_H"]=" 1" +D["HAVE_SYS_SELECT_H"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_TIME_H"]=" 1" +D["HAVE_SYS_TIMES_H"]=" 1" +D["HAVE_SYS_RESOURCE_H"]=" 1" +D["HAVE_ERRNO_H"]=" 1" +D["HAVE_ARPA_INET_H"]=" 1" +D["HAVE_NETINET_IN_H"]=" 1" +D["HAVE_NETDB_H"]=" 1" +D["HAVE_PTHREAD_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_SCHED_H"]=" 1" +D["TIME_WITH_SYS_TIME"]=" 1" +D["RETSIGTYPE"]=" void" +D["HAVE_ALLOCA_H"]=" 1" +D["HAVE_ALLOCA"]=" 1" +D["HAVE_STRCHR"]=" 1" +D["HAVE_MEMCPY"]=" 1" +D["HAVE_STRNCPY"]=" 1" +D["HAVE_STRSTR"]=" 1" +D["HAVE_STRLEN"]=" 1" +D["HAVE_STRNCASECMP"]=" 1" +D["HAVE_STRNCMP"]=" 1" +D["HAVE_SOCKET"]=" 1" +D["HAVE_GETHOSTBYNAME"]=" 1" +D["HAVE_SNPRINTF"]=" 1" +D["HAVE_STRDUP"]=" 1" +D["HAVE_RAND_R"]=" 1" +D["HAVE_LOCALTIME_R"]=" 1" +D["HAVE_GETHOSTBYNAME_R"]=" 1" +D["HAVE_GMTIME_R"]=" 1" +D["HAVE_GETOPT_LONG"]=" 1" +D["HAVE_POLL"]=" 1" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "default-1":C) + outfile=include/joedog/path.h + tmpfile=${outfile} + cat > $tmpfile << _EOF_ +/** + * Path Header + * + * Copyright (C) 2000-2013 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#ifndef JOEDOG_PATH_H +#define JOEDOG_PATH_H + +#define SIEGE_HOME "$prefix" +#define URL_FILE "$sysconfdir/urls.txt" +#define CNF_FILE "$sysconfdir/siegerc" +#define LOG_FILE "$localstatedir/log/siege.log" +#define PLATFORM "$platform" + +#endif/*JOEDOG_PATH_H*/ +_EOF_ + ;; + "default-2":C) + for file in doc/bombardment.1 doc/siege.1 doc/siege.config.1 doc/siege2csv.1 doc/siegerc; + do + rm -f $file + sed -e "s|\$_VERSION|$VERSION|g" \ + -e "s|\$_PROGRAM|$PROGRAM|g" \ + -e "s|\$_DATE|$DATE|g" \ + -e "s|\$_AUTHOR|$AUTHOR|g" \ + -e "s|\$_YEARS|$YEARS|g" \ + -e "s|\$_EMAIL|$EMAIL|g" \ + < $file.in > $file + done + ;; + "default-3":C) + infile=utils/siege.config.in + outfile=utils/siege.config + rm -f $outfile + sed -e "s|%_PREFIX%|$bindir|" \ + -e "s|%_SHELL%|$sh|" \ + < $infile > $outfile + cat doc/siegerc >> $outfile + echo "_EOF_" >> $outfile + echo "echo \"New configuration template added to \$HOME/.siege\"" >> $outfile + echo "echo \"Run siege -C to view the current settings in that file\"" >> $outfile + echo "exit" >> $outfile + echo "" >> $outfile + + ;; + "default-4":C) + infile=utils/bombardment.in + outfile=utils/bombardment + rm -f $outfile + sed -e "s|%_PREFIX%|$bindir|" \ + -e "s|%_SHELL%|$sh|" \ + < $infile > $outfile + + ;; + "default-5":C) + infile=utils/siege2csv.in + outfile=utils/siege2csv.pl + rm -f $outfile + sed -e "s|%_PREFIX%|$bindir|" \ + -e "s|%_PERL%|$LREP|" \ + < $infile > $outfile + + ;; + "default-6":C) + outfile=PLATFORM + tmpfile=${outfile} + cat > $tmpfile << _EOF_ +$PLATFORM +_EOF_ + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/siege-4.1.6/configure b/siege-4.1.6/configure new file mode 100644 index 0000000..8ceb2a7 --- /dev/null +++ b/siege-4.1.6/configure @@ -0,0 +1,23038 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for siege 4.1.6. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='siege' +PACKAGE_TARNAME='siege' +PACKAGE_VERSION='4.1.6' +PACKAGE_STRING='siege 4.1.6' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +ac_unique_file="src/setup.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +PTHREAD_LDFLAGS +PTHREAD_CFLAGS +ALLOCA +Z_LIBS +Z_LDFLAGS +Z_INCLUDE +Z_CFLAGS +SSL_LIBS +SSL_LDFLAGS +SSL_INCLUDE +SSL_CFLAGS +LDL +WARN_CFLAGS +CC_R +PERL +LIBTOOL +ac_ct_F77 +FFLAGS +F77 +CXXCPP +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +RANLIB +AR +ECHO +LN_S +SED +EGREP +GREP +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +PLATFORM +EMAIL +AUTHOR +PROGRAM +DATE +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_shared +enable_static +enable_fast_install +with_gnu_ld +enable_libtool_lock +with_pic +with_tags +with_ssl +with_nossl +with_zlib +with_nozlib +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP +F77 +FFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures siege 4.1.6 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/siege] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of siege 4.1.6:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] include additional configurations [automatic] + --with-ssl=ARG where ARG is the ssl directory or "no" + --without-ssl do NOT use SSL (same as --with-ssl=no) + --with-zlib=ARG where ARG is the zlib directory or "no" + --without-zlib do NOT use ZLIB (same as --with-zlib=no) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +siege configure 4.1.6 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_f77_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_f77_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_f77_try_compile + +# ac_fn_f77_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_f77_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_f77_try_link + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by siege $as_me 4.1.6, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_aux_dir= +for ac_dir in utils "$srcdir"/utils; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in utils \"$srcdir\"/utils" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +am__api_version='1.13' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='siege' + VERSION='4.1.6' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + + +ac_config_headers="$ac_config_headers include/config.h" + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + +DATE=`${CONFIG_SHELL} ${srcdir}/utils/mkstamp` +VERSION=`sed -ne 's/.*version_string.*"\(.*\)"\;/\1/p' ${srcdir}/src/version.c` +PROGRAM=`sed -ne 's/.*program_name.*"\(.*\)"\;/\1/p' src/version.c` +AUTHOR=`sed -ne 's/.*author_name.*"\(.*\)"\;/\1/p' ${srcdir}/src/version.c` +EMAIL=`sed -ne 's/.*email_address.*"\(.*\)"\;/\1/p' ${srcdir}/src/version.c` +YEARS=`sed -ne 's/.*years.*"\(.*\)"\;/\1/p' ${srcdir}/src/version.c` +PLATFORM="${host_vendor}-${host_cpu}-${host_os}" + + + + + + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "#define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if ${ac_cv_safe_to_define___extensions__+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + +# Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + +# Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${lt_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +$as_echo "$SED" >&6; } + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD-compatible nm" >&5 +$as_echo_n "checking for BSD-compatible nm... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +NM="$lt_cv_path_NM" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognise dependent libraries" >&5 +$as_echo_n "checking how to recognise dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 5950 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + + +esac + +need_locks="$enable_libtool_lock" + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_F77+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $F77" >&5 +$as_echo "$F77" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgfortran pgf95 lf95 ftn nagfor +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_F77+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_F77="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_F77" >&5 +$as_echo "$ac_ct_F77" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_F77" && break +done + + if test "x$ac_ct_F77" = x; then + F77="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + F77=$ac_ct_F77 + fi +fi + + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran 77 compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran 77 compiler" >&5 +$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } +if ${ac_cv_f77_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat > conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +if ac_fn_f77_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_f77_compiler_gnu" >&5 +$as_echo "$ac_cv_f77_compiler_gnu" >&6; } +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $F77 accepts -g" >&5 +$as_echo_n "checking whether $F77 accepts -g... " >&6; } +if ${ac_cv_prog_f77_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + FFLAGS=-g +cat > conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +if ac_fn_f77_try_compile "$LINENO"; then : + ac_cv_prog_f77_g=yes +else + ac_cv_prog_f77_g=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_f77_g" >&5 +$as_echo "$ac_cv_prog_f77_g" >&6; } +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +if test $ac_compiler_gnu = yes; then + G77=yes +else + G77= +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:7812: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:7816: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8080: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:8084: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8184: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:8188: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix3*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 9595 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which library types will actually be built +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5 +$as_echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` +gcc_ver=\`gcc -dumpversion\` + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=\`echo $lt_predep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=\`echo $lt_postdep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=\`echo $lt_compiler_lib_search_path | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags was given. +if test "${with_tags+set}" = set; then : + withval=$with_tags; tagnames="$withval" +fi + + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: output file \`$ofile' does not exist" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +$as_echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) as_fn_error $? "invalid tag name: $tagname" "$LINENO" 5 + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + as_fn_error $? "tag name \"$tagname\" already exists" "$LINENO" 5 + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + interix3*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +# PORTME: override above test on systems where it is broken +case $host_os in +interix3*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +solaris*) + case $cc_basename in + CC*) + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + postdeps_CXX='-lCstd -lCrun' + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_prog_compiler_pic_CXX" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:12557: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:12561: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:12661: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:12665: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 +$as_echo "$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 13197 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` +gcc_ver=\`gcc -dumpversion\` + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=\`echo $lt_predep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=\`echo $lt_postdep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_F77" >&5 +$as_echo "$lt_prog_compiler_pic_F77" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_F77+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14255: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:14259: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_F77+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_F77=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_F77=yes + fi + else + lt_cv_prog_compiler_static_works_F77=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then + : +else + lt_prog_compiler_static_F77= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_F77+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14359: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:14363: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_F77" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_F77=no + fi + ;; + + interix3*) + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_F77=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat > conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +if ac_fn_f77_try_link "$LINENO"; then : + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat > conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +if ac_fn_f77_try_link "$LINENO"; then : + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77='$convenience' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + *) + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_F77='${wl}-z,text' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_F77='${wl}-z,text' + allow_undefined_flag_F77='${wl}-z,nodefs' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_F77" >&5 +$as_echo "$ld_shlibs_F77" >&6; } +test "$ld_shlibs_F77" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + pic_flag=$lt_prog_compiler_pic_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_F77" >&5 +$as_echo "$archive_cmds_need_lc_F77" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 15758 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_F77" >&5 +$as_echo "$hardcode_action_F77" >&6; } + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` +gcc_ver=\`gcc -dumpversion\` + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=\`echo $lt_predep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=\`echo $lt_postdep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16539: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16543: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_GCJ" >&5 +$as_echo "$lt_prog_compiler_pic_GCJ" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_GCJ+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16807: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16811: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_GCJ+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_GCJ=yes + fi + else + lt_cv_prog_compiler_static_works_GCJ=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_GCJ+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16911: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:16915: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + interix3*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | kfreebsd*-gnu | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + *) + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_GCJ" >&5 +$as_echo "$ld_shlibs_GCJ" >&6; } +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_GCJ" >&5 +$as_echo "$archive_cmds_need_lc_GCJ" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # find out which ABI we are using + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) + echo '#line 18322 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *64-bit*) + libsuff=64 + sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" + ;; + esac + fi + rm -rf conftest* + ;; + esac + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_GCJ" >&5 +$as_echo "$hardcode_action_GCJ" >&6; } + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` +gcc_ver=\`gcc -dumpversion\` + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=\`echo $lt_predep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=\`echo $lt_postdep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` +gcc_ver=\`gcc -dumpversion\` + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=\`echo $lt_predep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=\`echo $lt_postdep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + as_fn_error $? "Unsupported tag name: $tagname" "$LINENO" 5 + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + as_fn_error $? "unable to update list of available tagged configurations." "$LINENO" 5 + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PERL+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="false " + ;; +esac +fi +PERL=$ac_cv_path_PERL +if test -n "$PERL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +$as_echo "$PERL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a POSIX-compliant shell" >&5 +$as_echo_n "checking for a POSIX-compliant shell... " >&6; } + if ${ac_cv_path_shell+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_path_shell=no + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy=/bin:/usr/bin:/usr/bin/posix:/usr/xpg4/bin:$PATH + for ac_dir in $ac_dummy; do + for ac_base in sh bash ksh sh5; do + case "$ac_dir" in + /*) + if ("$ac_dir/$ac_base" -c ' + + # Test the noclobber option, + # using the portable POSIX.2 syntax. + set -C + rm -f conftest.c || exit + >conftest.c || exit + >|conftest.c || exit + !>conftest.c || exit + + ') 2>/dev/null; then + ac_cv_path_shell="$ac_dir/$ac_base" + break + fi + ;; + esac + done + if test "$ac_cv_path_shell" != no; then + break + fi + done + IFS="$ac_save_ifs" +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_shell" >&5 +$as_echo "$ac_cv_path_shell" >&6; } + SHELL=$ac_cv_path_shell + if test "$SHELL" = no; then + SHELL=/bin/sh + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Using $SHELL" >&5 +$as_echo "$as_me: WARNING: Using $SHELL" >&2;} + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + + +case "$host_os" in + *aix*) + if test -n "${CC}" ; then + for ac_prog in xlc_r cc_r cc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC_R+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC_R"; then + ac_cv_prog_CC_R="$CC_R" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC_R="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC_R=$ac_cv_prog_CC_R +if test -n "$CC_R"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC_R" >&5 +$as_echo "$CC_R" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC_R" && break +done + + if test "$CC_R" = cc ; then + as_fn_error $? "pthread support requires cc_r (or other suitable compiler) on AIX" "$LINENO" 5 + else + CC=$CC_R + + fi + fi + ;; +esac + +if test -n "$GCC"; then + oldCFLAGS=$CFLAGS + CFLAGS="$CFLAGS -W -Wall -Werror -Wunused-value" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for buggy pthread mutex initializers" >&5 +$as_echo_n "checking for buggy pthread mutex initializers... " >&6; } + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&m); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + buggy_init="no" +else + buggy_init="yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + if test $buggy_init = "no" ; then + WARN_CFLAGS="-W -Wall -Wunused-value" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + WARN_CFLAGS="-W -Wall -Wno-missing-braces -Wunused-value" + fi +fi +CFLAGS=$oldCFLAGS + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen() in -ldld" >&5 +$as_echo_n "checking for dlopen() in -ldld... " >&6; } +olibs=$LIBS +LIBS="$LIBS -ldld" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + extern void* dlopen(); dlopen(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; }; + LIBS=$olibs; + LDL=-ldld + +$as_echo "#define HAVE_SHL_LOAD 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; + LDL= + LIBS=$olibs +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen() in -ldl" >&5 +$as_echo_n "checking for dlopen() in -ldl... " >&6; } +olibs=$LIBS +LIBS="$LIBS -ldl" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + extern void* dlopen(); dlopen(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; }; + LIBS=$olibs; + LDL=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; + LDL= + LIBS=$olibs +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for random device" >&5 +$as_echo_n "checking for random device... " >&6; } +if ${ac_cv_have_dev_random+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -r "/dev/random" && test -r "/dev/urandom" ; then + ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_dev_random" >&5 +$as_echo "$ac_cv_have_dev_random" >&6; } +if test "$ac_cv_have_dev_random" = yes; then + +$as_echo "#define HAVE_DEV_RANDOM 1" >>confdefs.h + +fi + +MYSSL=off +sslfound=locate +SSL_INCLUDE= +SSL_LDFLAGS= +SSL_LIBS= + +# Check whether --with-ssl was given. +if test "${with_ssl+set}" = set; then : + withval=$with_ssl; MYSSL="$withval" +fi + + +# Check whether --with-nossl was given. +if test "${with_nossl+set}" = set; then : + withval=$with_nossl; MYSSL="no" +fi + +if test "$MYSSL" = "no" +then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: checking for ssl support... no" >&5 +$as_echo "checking for ssl support... no" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: checking for ssl support... yes" >&5 +$as_echo "checking for ssl support... yes" >&6; } + if test "$MYSSL" = "off" ; then + MYSSL="" + fi +fi + +if test "$MYSSL" = "no" +then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: HTTPS/ssl support disabled" >&5 +$as_echo "HTTPS/ssl support disabled" >&6; } +else + for ac_header in $MYSSL/include/openssl/opensslv.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + sslfound=yes +else + sslfound=locate +fi + +done + + if test $sslfound = "locate"; then + for dir in /usr /usr/local /usr/local/ssl /usr/pkg /usr/lib/ssl /usr/include/ssl /usr/include; do + for ac_header in $dir/include/openssl/opensslv.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + sslfound=yes +else + sslfound=no +fi + +done + + if test $sslfound = "yes" ; then + SSL_CFLAGS="-DOPENSSL_NO_KRB5" + SSL_LDFLAGS="-L$dir/lib" + SSL_INCLUDE="-I$dir/include/openssl -I$dir/include" + SSL_LIBS="-lssl -lcrypto" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL version" >&5 +$as_echo_n "checking for OpenSSL version... " >&6; } + CPPFLAGS="$SSL_INCLUDE" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #if OPENSSL_VERSION_NUMBER >= 0x0090800fL + yes + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + + SSL_LIBS="$LDL $SSL_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: >= 0.9.8 (appropriate flag set)" >&5 +$as_echo ">= 0.9.8 (appropriate flag set)" >&6; } + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: < 0.9.8" >&5 +$as_echo "< 0.9.8" >&6; } + +fi +rm -f conftest* + + + + + + +$as_echo "#define HAVE_SSL 1" >>confdefs.h + + break + fi + done + else + echo "found ssl in $MYSSL" + SSL_CFLAGS="-DOPENSSL_NO_KRB5" + SSL_LDFLAGS="-L$MYSSL/lib" + SSL_INCLUDE="-I$MYSSL/include/openssl -I$MYSSL/include" + SSL_LIBS="-lssl -lcrypto" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL version" >&5 +$as_echo_n "checking for OpenSSL version... " >&6; } + CPPFLAGS="$SSL_INCLUDE" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #if OPENSSL_VERSION_NUMBER >= 0x0090800fL + yes + #endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then : + + SSL_LIBS="$LDL $SSL_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: >= 0.9.8 (appropriate flag set)" >&5 +$as_echo ">= 0.9.8 (appropriate flag set)" >&6; } + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: < 0.9.8" >&5 +$as_echo "< 0.9.8" >&6; } + +fi +rm -f conftest* + + + + + + $as_echo "#define HAVE_SSL 1" >>confdefs.h + + fi +fi + +MYZ=off +zfound=locate +Z_INCLUDE= +Z_LDFLAGS= +Z_LIBS= + +# Check whether --with-zlib was given. +if test "${with_zlib+set}" = set; then : + withval=$with_zlib; MYZ="$withval" +fi + + +# Check whether --with-nozlib was given. +if test "${with_nozlib+set}" = set; then : + withval=$with_nozlib; MYZ="no" +fi + +if test "$MYZ" = "no" +then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: checking for zlib support... no" >&5 +$as_echo "checking for zlib support... no" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: checking for zlib support... yes" >&5 +$as_echo "checking for zlib support... yes" >&6; } + if test "$MYZ" = "off" ; then + MYZ="" + fi +fi + +if test "$MYZ" = "no" +then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Encoding: gzip/compress support disabled" >&5 +$as_echo "Encoding: gzip/compress support disabled" >&6; } +else + for ac_header in $MYZ/include/zlib.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + zfound=yes +else + zfound=locate +fi + +done + + if test $zfound = "locate"; then + for dir in /usr /usr/local /usr/local/ssl /usr/pkg /usr/lib/zlib /usr/include/zlib /usr/include; do + for ac_header in $dir/include/zlib.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + zfound=yes +else + zfound=no +fi + +done + + if test $zfound = "yes" ; then + Z_CFLAGS="" + Z_LDFLAGS="-L$dir/lib" + Z_INCLUDE="-I$MYZ/include/zlib -I$MYZ/include" + Z_LIBS="-lz" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZLIB version" >&5 +$as_echo_n "checking for ZLIB version... " >&6; } + CPPFLAGS="$Z_INCLUDE" + + + + + +$as_echo "#define HAVE_ZLIB 1" >>confdefs.h + + break + fi + done + else + echo "found ssl in $MYZ" + Z_CFLAGS="" + Z_LDFLAGS="-L$MYZ/lib" + Z_INCLUDE="-I$MYZ/include/zlib -I$MYZ/include" + Z_LIBS="-lz" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL version" >&5 +$as_echo_n "checking for OpenSSL version... " >&6; } + CPPFLAGS="$Z_INCLUDE" + + + + + $as_echo "#define HAVE_ZLIB 1" >>confdefs.h + + fi +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +ac_fn_c_check_type "$LINENO" "int8_t" "ac_cv_type_int8_t" "$ac_includes_default" +if test "x$ac_cv_type_int8_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define int8_t char +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "int16_t" "ac_cv_type_int16_t" "$ac_includes_default" +if test "x$ac_cv_type_int16_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define int16_t short +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default" +if test "x$ac_cv_type_int32_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define int32_t int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "int64_t" "ac_cv_type_int64_t" "$ac_includes_default" +if test "x$ac_cv_type_int64_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define int64_t long long +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "uint8_t" "ac_cv_type_uint8_t" "$ac_includes_default" +if test "x$ac_cv_type_uint8_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define uint8_t unsigned char +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "uint16_t" "ac_cv_type_uint16_t" "$ac_includes_default" +if test "x$ac_cv_type_uint16_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define uint16_t unsigned short +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default" +if test "x$ac_cv_type_uint32_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define uint32_t unsigned int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default" +if test "x$ac_cv_type_uint64_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define uint64_t unsigned long long +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "u_int32_t" "ac_cv_type_u_int32_t" "$ac_includes_default" +if test "x$ac_cv_type_u_int32_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define u_int32_t unsigned int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define ssize_t int +_ACEOF + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 +$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } +if ${ac_cv_header_sys_wait_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef WEXITSTATUS +# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) +#endif +#ifndef WIFEXITED +# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) +#endif + +int +main () +{ + int s; + wait (&s); + s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_sys_wait_h=yes +else + ac_cv_header_sys_wait_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 +$as_echo "$ac_cv_header_sys_wait_h" >&6; } +if test $ac_cv_header_sys_wait_h = yes; then + +$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +for ac_header in fcntl.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_FCNTL_H 1 +_ACEOF + +fi + +done + +for ac_header in limits.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIMITS_H 1 +_ACEOF + +fi + +done + +for ac_header in unistd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_UNISTD_H 1 +_ACEOF + +fi + +done + +for ac_header in signal.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "signal.h" "ac_cv_header_signal_h" "$ac_includes_default" +if test "x$ac_cv_header_signal_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SIGNAL_H 1 +_ACEOF + +fi + +done + +for ac_header in sys/socket.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_socket_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_SOCKET_H 1 +_ACEOF + +fi + +done + +for ac_header in sys/select.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_SELECT_H 1 +_ACEOF + +fi + +done + +for ac_header in sys/types.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_types_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_TYPES_H 1 +_ACEOF + +fi + +done + +for ac_header in sys/time.h sys/times.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_header in sys/resource.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_resource_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_RESOURCE_H 1 +_ACEOF + +fi + +done + +for ac_header in errno.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default" +if test "x$ac_cv_header_errno_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ERRNO_H 1 +_ACEOF + +fi + +done + +for ac_header in arpa/inet.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default" +if test "x$ac_cv_header_arpa_inet_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ARPA_INET_H 1 +_ACEOF + +fi + +done + +for ac_header in netinet/in.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default" +if test "x$ac_cv_header_netinet_in_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NETINET_IN_H 1 +_ACEOF + +fi + +done + +for ac_header in netdb.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default" +if test "x$ac_cv_header_netdb_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NETDB_H 1 +_ACEOF + +fi + +done + +for ac_header in pthread.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" +if test "x$ac_cv_header_pthread_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_PTHREAD_H 1 +_ACEOF + +fi + +done + +for ac_header in string.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRING_H 1 +_ACEOF + +fi + +done + +for ac_header in strings.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" +if test "x$ac_cv_header_strings_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRINGS_H 1 +_ACEOF + +fi + +done + +for ac_header in sched.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sched.h" "ac_cv_header_sched_h" "$ac_includes_default" +if test "x$ac_cv_header_sched_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SCHED_H 1 +_ACEOF + +fi + +done + +for ac_header in openssl/e_os.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "openssl/e_os.h" "ac_cv_header_openssl_e_os_h" "$ac_includes_default" +if test "x$ac_cv_header_openssl_e_os_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_OPENSSL_E_OS_H 1 +_ACEOF + +fi + +done + +for ac_header in openssl/e_os2.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "openssl/e_os2.h" "ac_cv_header_openssl_e_os2_h" "$ac_includes_default" +if test "x$ac_cv_header_openssl_e_os2_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_OPENSSL_E_OS2_H 1 +_ACEOF + +fi + +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if ${ac_cv_header_time+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_time=yes +else + ac_cv_header_time=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then + +$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } +if ${ac_cv_type_signal+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +return *(signal (0, 0)) (0) == 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_signal=int +else + ac_cv_type_signal=void +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 +$as_echo "$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if ${ac_cv_working_alloca_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_working_alloca_h=yes +else + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if ${ac_cv_func_alloca_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +void *alloca (size_t); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_alloca_works=yes +else + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +$as_echo "#define C_ALLOCA 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if ${ac_cv_os_cray+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then : + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if ${ac_cv_c_stack_direction+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_stack_direction=0 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_stack_direction=1 +else + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +for ac_func in strchr memcpy strncpy strstr strlen +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in strncasecmp strncmp +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in socket +do : + ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" +if test "x$ac_cv_func_socket" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SOCKET 1 +_ACEOF + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +$as_echo_n "checking for socket in -lsocket... " >&6; } +if ${ac_cv_lib_socket_socket+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socket (); +int +main () +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_socket=yes +else + ac_cv_lib_socket_socket=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +$as_echo "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +fi + +fi +done + +for ac_func in gethostbyname +do : + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETHOSTBYNAME 1 +_ACEOF + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } +if ${ac_cv_lib_nsl_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (); +int +main () +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_gethostbyname=yes +else + ac_cv_lib_nsl_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL 1 +_ACEOF + + LIBS="-lnsl $LIBS" + +fi + +fi +done + +for ac_func in snprintf +do : + ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" +if test "x$ac_cv_func_snprintf" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SNPRINTF 1 +_ACEOF + +fi +done + +for ac_func in strdup +do : + ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" +if test "x$ac_cv_func_strdup" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRDUP 1 +_ACEOF + +fi +done + +for ac_func in rand_r +do : + ac_fn_c_check_func "$LINENO" "rand_r" "ac_cv_func_rand_r" +if test "x$ac_cv_func_rand_r" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_RAND_R 1 +_ACEOF + +fi +done + +for ac_func in localtime_r +do : + ac_fn_c_check_func "$LINENO" "localtime_r" "ac_cv_func_localtime_r" +if test "x$ac_cv_func_localtime_r" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LOCALTIME_R 1 +_ACEOF + +fi +done + +for ac_func in gethostbyname_r +do : + ac_fn_c_check_func "$LINENO" "gethostbyname_r" "ac_cv_func_gethostbyname_r" +if test "x$ac_cv_func_gethostbyname_r" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETHOSTBYNAME_R 1 +_ACEOF + +fi +done + +for ac_func in gmtime_r +do : + ac_fn_c_check_func "$LINENO" "gmtime_r" "ac_cv_func_gmtime_r" +if test "x$ac_cv_func_gmtime_r" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GMTIME_R 1 +_ACEOF + +fi +done + +for ac_func in getipnodebyname +do : + ac_fn_c_check_func "$LINENO" "getipnodebyname" "ac_cv_func_getipnodebyname" +if test "x$ac_cv_func_getipnodebyname" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETIPNODEBYNAME 1 +_ACEOF + +fi +done + +for ac_func in freehostent +do : + ac_fn_c_check_func "$LINENO" "freehostent" "ac_cv_func_freehostent" +if test "x$ac_cv_func_freehostent" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_FREEHOSTENT 1 +_ACEOF + +fi +done + +for ac_func in getopt_long +do : + ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long" +if test "x$ac_cv_func_getopt_long" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GETOPT_LONG 1 +_ACEOF + +fi +done + +for ac_func in poll +do : + ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll" +if test "x$ac_cv_func_poll" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_POLL 1 +_ACEOF + +fi +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +$as_echo_n "checking for socket in -lsocket... " >&6; } +if ${ac_cv_lib_socket_socket+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socket (); +int +main () +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_socket=yes +else + ac_cv_lib_socket_socket=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +$as_echo "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +fi + + +PTHREAD_CFLAGS=error +PTHREAD_LDFLAGS=error + +if test "x$PTHREAD_LDFLAGS" = xerror; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_attr_init in -lpthread" >&5 +$as_echo_n "checking for pthread_attr_init in -lpthread... " >&6; } +if ${ac_cv_lib_pthread_pthread_attr_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_attr_init (); +int +main () +{ +return pthread_attr_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthread_pthread_attr_init=yes +else + ac_cv_lib_pthread_pthread_attr_init=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_attr_init" >&5 +$as_echo "$ac_cv_lib_pthread_pthread_attr_init" >&6; } +if test "x$ac_cv_lib_pthread_pthread_attr_init" = xyes; then : + + PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS" + PTHREAD_LDFLAGS="-lpthread" +fi + +fi + +if test "x$PTHREAD_LDFLAGS" = xerror; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_attr_init in -lpthreads" >&5 +$as_echo_n "checking for pthread_attr_init in -lpthreads... " >&6; } +if ${ac_cv_lib_pthreads_pthread_attr_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthreads $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_attr_init (); +int +main () +{ +return pthread_attr_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pthreads_pthread_attr_init=yes +else + ac_cv_lib_pthreads_pthread_attr_init=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthreads_pthread_attr_init" >&5 +$as_echo "$ac_cv_lib_pthreads_pthread_attr_init" >&6; } +if test "x$ac_cv_lib_pthreads_pthread_attr_init" = xyes; then : + + PTHREAD_CFLAGS="-D_THREAD_SAFE" + PTHREAD_LDFLAGS="-lpthreads" +fi + +fi + +if test "x$PTHREAD_LDFLAGS" = xerror; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_attr_init in -lc_r" >&5 +$as_echo_n "checking for pthread_attr_init in -lc_r... " >&6; } +if ${ac_cv_lib_c_r_pthread_attr_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc_r $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_attr_init (); +int +main () +{ +return pthread_attr_init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_c_r_pthread_attr_init=yes +else + ac_cv_lib_c_r_pthread_attr_init=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_attr_init" >&5 +$as_echo "$ac_cv_lib_c_r_pthread_attr_init" >&6; } +if test "x$ac_cv_lib_c_r_pthread_attr_init" = xyes; then : + + PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread" + PTHREAD_LDFLAGS="-pthread" +fi + +fi + +if test "x$PTHREAD_LDFLAGS" = xerror; then + ac_fn_c_check_func "$LINENO" "pthread_attr_init" "ac_cv_func_pthread_attr_init" +if test "x$ac_cv_func_pthread_attr_init" = xyes; then : + + PTHREAD_CFLAGS="-D_REENTRANT" + PTHREAD_LDFLAGS="-lpthread" +fi + +fi + +if test $PTHREAD_LDFLAGS = "error"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pthread library NOT found: guessing and hoping for the best...." >&5 +$as_echo "$as_me: WARNING: pthread library NOT found: guessing and hoping for the best...." >&2;} + PTHREAD_CFLAGS="-D_REENTRANT" + PTHREAD_LDFLAGS="-lpthread" +fi + + + + +case "$host_os" in + *solaris*) + if test -z "$ac_given_sysconfdir" ; + then + sysconfdir="$prefix/etc" + fi + + if test -z "$ac_given_localstatedir" ; + then + localstatedir="$prefix/var" + fi + ;; + *) ;; +esac + +ac_config_commands="$ac_config_commands default-1" + + +ac_config_commands="$ac_config_commands default-2" + + +ac_config_commands="$ac_config_commands default-3" + + +ac_config_commands="$ac_config_commands default-4" + + +ac_config_commands="$ac_config_commands default-5" + + +ac_config_commands="$ac_config_commands default-6" + + +ac_config_files="$ac_config_files Makefile src/Makefile doc/Makefile html/Makefile include/Makefile include/joedog/Makefile utils/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by siege $as_me 4.1.6, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +siege config.status 4.1.6 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + prefix=$prefix sysconfdir=$sysconfdir localstatedir=$localstatedir platform=$PLATFORM + VERSION=$VERSION DATE="$DATE" PROGRAM="$PROGRAM" AUTHOR="$AUTHOR" EMAIL="$EMAIL" + bindir=$exec_prefix$bindir sh=$SHELL + bindir=$exec_prefix$bindir sh=$SHELL + bindir=$exec_prefix$bindir LREP=$PERL +PLATFORM=$PLATFORM + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; + "default-3") CONFIG_COMMANDS="$CONFIG_COMMANDS default-3" ;; + "default-4") CONFIG_COMMANDS="$CONFIG_COMMANDS default-4" ;; + "default-5") CONFIG_COMMANDS="$CONFIG_COMMANDS default-5" ;; + "default-6") CONFIG_COMMANDS="$CONFIG_COMMANDS default-6" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "html/Makefile") CONFIG_FILES="$CONFIG_FILES html/Makefile" ;; + "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; + "include/joedog/Makefile") CONFIG_FILES="$CONFIG_FILES include/joedog/Makefile" ;; + "utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "default-1":C) + outfile=include/joedog/path.h + tmpfile=${outfile} + cat > $tmpfile << _EOF_ +/** + * Path Header + * + * Copyright (C) 2000-2013 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#ifndef JOEDOG_PATH_H +#define JOEDOG_PATH_H + +#define SIEGE_HOME "$prefix" +#define URL_FILE "$sysconfdir/urls.txt" +#define CNF_FILE "$sysconfdir/siegerc" +#define LOG_FILE "$localstatedir/log/siege.log" +#define PLATFORM "$platform" + +#endif/*JOEDOG_PATH_H*/ +_EOF_ + ;; + "default-2":C) + for file in doc/bombardment.1 doc/siege.1 doc/siege.config.1 doc/siege2csv.1 doc/siegerc; + do + rm -f $file + sed -e "s|\$_VERSION|$VERSION|g" \ + -e "s|\$_PROGRAM|$PROGRAM|g" \ + -e "s|\$_DATE|$DATE|g" \ + -e "s|\$_AUTHOR|$AUTHOR|g" \ + -e "s|\$_YEARS|$YEARS|g" \ + -e "s|\$_EMAIL|$EMAIL|g" \ + < $file.in > $file + done + ;; + "default-3":C) + infile=utils/siege.config.in + outfile=utils/siege.config + rm -f $outfile + sed -e "s|%_PREFIX%|$bindir|" \ + -e "s|%_SHELL%|$sh|" \ + < $infile > $outfile + cat doc/siegerc >> $outfile + echo "_EOF_" >> $outfile + echo "echo \"New configuration template added to \$HOME/.siege\"" >> $outfile + echo "echo \"Run siege -C to view the current settings in that file\"" >> $outfile + echo "exit" >> $outfile + echo "" >> $outfile + + ;; + "default-4":C) + infile=utils/bombardment.in + outfile=utils/bombardment + rm -f $outfile + sed -e "s|%_PREFIX%|$bindir|" \ + -e "s|%_SHELL%|$sh|" \ + < $infile > $outfile + + ;; + "default-5":C) + infile=utils/siege2csv.in + outfile=utils/siege2csv.pl + rm -f $outfile + sed -e "s|%_PREFIX%|$bindir|" \ + -e "s|%_PERL%|$LREP|" \ + < $infile > $outfile + + ;; + "default-6":C) + outfile=PLATFORM + tmpfile=${outfile} + cat > $tmpfile << _EOF_ +$PLATFORM +_EOF_ + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +echo +echo "--------------------------------------------------------" +echo "Configuration is complete" +echo +echo "Run the following commands to complete the installation:" +echo " make " +echo " make install" +echo +echo "For complete documentation: http://www.joedog.org" +echo "--------------------------------------------------------" diff --git a/siege-4.1.6/configure.ac b/siege-4.1.6/configure.ac new file mode 100644 index 0000000..e8fcf7e --- /dev/null +++ b/siege-4.1.6/configure.ac @@ -0,0 +1,533 @@ +dnl REQUIRE AUTOCONF 2.50 OR HIGHER... +AC_PREREQ(2.63) + +dnl +dnl Process this file with autoconf to produce a configure script. +dnl +AC_INIT( + m4_esyscmd_s([sed -ne 's/.*program_name.*"\(.*\)"\;/\1/p' src/version.c]), + m4_esyscmd_s([sed -ne 's/.*version_string.*"\(.*\)"\;/\1/p' src/version.c]), +) +AC_CONFIG_AUX_DIR(utils) +AM_INIT_AUTOMAKE +AC_CONFIG_SRCDIR([src/setup.h]) +AC_CONFIG_HEADERS(include/config.h) + +dnl canonicalize the host +AC_CANONICAL_HOST + +DATE=`${CONFIG_SHELL} ${srcdir}/utils/mkstamp` +VERSION=`sed -ne 's/.*version_string.*"\(.*\)"\;/\1/p' ${srcdir}/src/version.c` +PROGRAM=`sed -ne 's/.*program_name.*"\(.*\)"\;/\1/p' src/version.c` +AUTHOR=`sed -ne 's/.*author_name.*"\(.*\)"\;/\1/p' ${srcdir}/src/version.c` +EMAIL=`sed -ne 's/.*email_address.*"\(.*\)"\;/\1/p' ${srcdir}/src/version.c` +YEARS=`sed -ne 's/.*years.*"\(.*\)"\;/\1/p' ${srcdir}/src/version.c` +PLATFORM="${host_vendor}-${host_cpu}-${host_os}" +AC_SUBST(DATE) +AC_SUBST(PROGRAM) +AC_SUBST(AUTHOR) +AC_SUBST(EMAIL) +AC_SUBST(PLATFORM) + +dnl Check for AIX weirdos +AC_AIX + +dnl Checks for programs. +AC_PROG_CC + +AM_PROG_LIBTOOL + +dnl +dnl Program support +dnl +AC_PATH_PROG( PERL, perl, false ) +AC_PROG_SHELL +AC_PROG_MAKE_SET +AC_PROG_INSTALL +case "$host_os" in + *aix*) + if test -n "${CC}" ; then + AC_CHECK_PROGS(CC_R, xlc_r cc_r cc) + if test "$CC_R" = cc ; then + AC_MSG_ERROR([pthread support requires cc_r (or other suitable compiler) on AIX]) + else + CC=$CC_R + AC_SUBST(CC) + fi + fi + ;; +esac + +if test -n "$GCC"; then + oldCFLAGS=$CFLAGS + CFLAGS="$CFLAGS -W -Wall -Werror -Wunused-value" + AC_MSG_CHECKING(for buggy pthread mutex initializers) + + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([#include ], + [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&m); ])], + [buggy_init="no"], [buggy_init="yes"]) + + if test $buggy_init = "no" ; then + WARN_CFLAGS="-W -Wall -Wunused-value" + AC_MSG_RESULT(no) + else + AC_MSG_RESULT(yes) + WARN_CFLAGS="-W -Wall -Wno-missing-braces -Wunused-value" + fi +fi +CFLAGS=$oldCFLAGS +AC_SUBST(WARN_CFLAGS) + +AC_MSG_CHECKING([for dlopen() in -ldld]) +olibs=$LIBS +LIBS="$LIBS -ldld" +AC_TRY_LINK(, + [ extern void* dlopen(); dlopen(); ], + AC_MSG_RESULT(yes); + LIBS=$olibs; + LDL=-ldld + AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]), + AC_MSG_RESULT(no); + LDL= + LIBS=$olibs) + +AC_MSG_CHECKING([for dlopen() in -ldl]) +olibs=$LIBS +LIBS="$LIBS -ldl" +AC_TRY_LINK(, + [ extern void* dlopen(); dlopen(); ], + AC_MSG_RESULT(yes); + LIBS=$olibs; + LDL=-ldl, + AC_MSG_RESULT(no); + LDL= + LIBS=$olibs) + +AC_SUBST(LDL) + +dnl +dnl check for random device +dnl +AC_CACHE_CHECK(for random device, ac_cv_have_dev_random, +[if test -r "/dev/random" && test -r "/dev/urandom" ; then + ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi]) +if test "$ac_cv_have_dev_random" = yes; then + AC_DEFINE([HAVE_DEV_RANDOM], 1, [Discovered a random device]) +fi + +dnl +dnl with SSL support +dnl +MYSSL=off +sslfound=locate +SSL_INCLUDE= +SSL_LDFLAGS= +SSL_LIBS= +AC_ARG_WITH(ssl,dnl +[ --with-ssl=ARG where ARG is the ssl directory or "no" ], +[ MYSSL="$withval" ]) +AC_ARG_WITH(nossl,dnl +[ --without-ssl do NOT use SSL (same as --with-ssl=no) ], +[ MYSSL="no" ]) +if test "$MYSSL" = "no" +then + AC_MSG_RESULT(checking for ssl support... no) +else + AC_MSG_RESULT(checking for ssl support... yes) + if test "$MYSSL" = "off" ; then + MYSSL="" + fi +fi + +dnl +dnl Check for ssl libraries +dnl +if test "$MYSSL" = "no" +then + AC_MSG_RESULT(HTTPS/ssl support disabled) +else + AC_CHECK_HEADERS($MYSSL/include/openssl/opensslv.h, sslfound=yes, sslfound=locate) + if test $sslfound = "locate"; then + dnl the user probably misunderstood the option.... + for dir in /usr /usr/local /usr/local/ssl /usr/pkg /usr/lib/ssl /usr/include/ssl /usr/include; do + AC_CHECK_HEADERS($dir/include/openssl/opensslv.h, sslfound=yes, sslfound=no) + if test $sslfound = "yes" ; then + SSL_CFLAGS="-DOPENSSL_NO_KRB5" + SSL_LDFLAGS="-L$dir/lib" + SSL_INCLUDE="-I$dir/include/openssl -I$dir/include" + SSL_LIBS="-lssl -lcrypto" + AC_MSG_CHECKING([for OpenSSL version]) + CPPFLAGS="$SSL_INCLUDE" + AC_EGREP_CPP(yes,[ + #include + #if OPENSSL_VERSION_NUMBER >= 0x0090800fL + yes + #endif + ],[ + SSL_LIBS="$LDL $SSL_LIBS" + AC_MSG_RESULT([>= 0.9.8 (appropriate flag set)]) + ],[ + AC_MSG_RESULT([< 0.9.8]) + ]) + AC_SUBST(SSL_CFLAGS) + AC_SUBST(SSL_INCLUDE) + AC_SUBST(SSL_LDFLAGS) + AC_SUBST(SSL_LIBS) + AC_DEFINE([HAVE_SSL], 1, [Discovered OpenSSL library for HTTPS]) + break + fi + done + else + echo "found ssl in $MYSSL" + SSL_CFLAGS="-DOPENSSL_NO_KRB5" + SSL_LDFLAGS="-L$MYSSL/lib" + SSL_INCLUDE="-I$MYSSL/include/openssl -I$MYSSL/include" + SSL_LIBS="-lssl -lcrypto" + AC_MSG_CHECKING([for OpenSSL version]) + CPPFLAGS="$SSL_INCLUDE" + AC_EGREP_CPP(yes,[ + #include + #if OPENSSL_VERSION_NUMBER >= 0x0090800fL + yes + #endif + ],[ + SSL_LIBS="$LDL $SSL_LIBS" + AC_MSG_RESULT([>= 0.9.8 (appropriate flag set)]) + ],[ + AC_MSG_RESULT([< 0.9.8]) + ]) + AC_SUBST(SSL_CFLAGS) + AC_SUBST(SSL_INCLUDE) + AC_SUBST(SSL_LDFLAGS) + AC_SUBST(SSL_LIBS) + AC_DEFINE(HAVE_SSL) + fi +fi + +dnl +dnl with zlib support +dnl +MYZ=off +zfound=locate +Z_INCLUDE= +Z_LDFLAGS= +Z_LIBS= +AC_ARG_WITH(zlib,dnl +[ --with-zlib=ARG where ARG is the zlib directory or "no" ], +[ MYZ="$withval" ]) +AC_ARG_WITH(nozlib,dnl +[ --without-zlib do NOT use ZLIB (same as --with-zlib=no) ], +[ MYZ="no" ]) +if test "$MYZ" = "no" +then + AC_MSG_RESULT(checking for zlib support... no) +else + AC_MSG_RESULT(checking for zlib support... yes) + if test "$MYZ" = "off" ; then + MYZ="" + fi +fi + +dnl +dnl Check for zlib +dnl +if test "$MYZ" = "no" +then + AC_MSG_RESULT(Encoding: gzip/compress support disabled) +else + AC_CHECK_HEADERS($MYZ/include/zlib.h, zfound=yes, zfound=locate) + if test $zfound = "locate"; then + dnl the user probably misunderstood the option.... + for dir in /usr /usr/local /usr/local/ssl /usr/pkg /usr/lib/zlib /usr/include/zlib /usr/include; do + AC_CHECK_HEADERS($dir/include/zlib.h, zfound=yes, zfound=no) + if test $zfound = "yes" ; then + Z_CFLAGS="" + Z_LDFLAGS="-L$dir/lib" + Z_INCLUDE="-I$MYZ/include/zlib -I$MYZ/include" + Z_LIBS="-lz" + AC_MSG_CHECKING([for ZLIB version]) + CPPFLAGS="$Z_INCLUDE" + AC_SUBST(Z_CFLAGS) + AC_SUBST(Z_INCLUDE) + AC_SUBST(Z_LDFLAGS) + AC_SUBST(Z_LIBS) + AC_DEFINE([HAVE_ZLIB], 1, [Discovered ZLIB for gzip/compress encoding]) + break + fi + done + else + echo "found ssl in $MYZ" + Z_CFLAGS="" + Z_LDFLAGS="-L$MYZ/lib" + Z_INCLUDE="-I$MYZ/include/zlib -I$MYZ/include" + Z_LIBS="-lz" + AC_MSG_CHECKING([for OpenSSL version]) + CPPFLAGS="$Z_INCLUDE" + AC_SUBST(Z_CFLAGS) + AC_SUBST(Z_INCLUDE) + AC_SUBST(Z_LDFLAGS) + AC_SUBST(Z_LIBS) + AC_DEFINE(HAVE_ZLIB) + fi +fi + + +AC_C_INLINE +AC_CHECK_TYPE(int8_t, char) +AC_CHECK_TYPE(int16_t, short) +AC_CHECK_TYPE(int32_t, int) +AC_CHECK_TYPE(int64_t, long long) +AC_CHECK_TYPE(uint8_t, unsigned char) +AC_CHECK_TYPE(uint16_t, unsigned short) +AC_CHECK_TYPE(uint32_t, unsigned int) +AC_CHECK_TYPE(uint64_t, unsigned long long) +AC_CHECK_TYPE(u_int32_t,unsigned int) +AC_CHECK_TYPE(ssize_t, int) + +dnl Checks for header files. +AC_HEADER_STDC +AC_HEADER_SYS_WAIT +AC_CHECK_HEADERS(fcntl.h) +AC_CHECK_HEADERS(limits.h) +AC_CHECK_HEADERS(unistd.h) +AC_CHECK_HEADERS(signal.h) +AC_CHECK_HEADERS(sys/socket.h) +AC_CHECK_HEADERS(sys/select.h) +AC_CHECK_HEADERS(sys/types.h) +AC_CHECK_HEADERS(sys/time.h sys/times.h) +AC_CHECK_HEADERS(sys/resource.h) +AC_CHECK_HEADERS(errno.h) +AC_CHECK_HEADERS(arpa/inet.h) +AC_CHECK_HEADERS(netinet/in.h) +AC_CHECK_HEADERS(netdb.h) +AC_CHECK_HEADERS(pthread.h) +AC_CHECK_HEADERS(string.h) +AC_CHECK_HEADERS(strings.h) +AC_CHECK_HEADERS(sched.h) +AC_CHECK_HEADERS(openssl/e_os.h) +AC_CHECK_HEADERS(openssl/e_os2.h) + +dnl +dnl Checks for typedefs, structures, and compiler characteristics. +dnl +AC_C_CONST +AC_TYPE_SIZE_T +AC_HEADER_TIME + +dnl +dnl Return type of signal-handlers +dnl +AC_TYPE_SIGNAL + +dnl +dnl Checks for library functions. +dnl +AC_FUNC_ALLOCA +AC_CHECK_FUNCS(strchr memcpy strncpy strstr strlen) +AC_CHECK_FUNCS(strncasecmp strncmp) +AC_CHECK_FUNCS(socket, , AC_CHECK_LIB(socket, socket)) +AC_CHECK_FUNCS(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname)) +AC_CHECK_FUNCS(snprintf) +AC_CHECK_FUNCS(strdup) +AC_CHECK_FUNCS(rand_r) +AC_CHECK_FUNCS(localtime_r) +AC_CHECK_FUNCS(gethostbyname_r) +AC_CHECK_FUNCS(gmtime_r) +AC_CHECK_FUNCS(getipnodebyname) +AC_CHECK_FUNCS(freehostent) +AC_CHECK_FUNCS(getopt_long) +AC_CHECK_FUNCS(poll) + +dnl +dnl Check for socket library +dnl +AC_CHECK_LIB(socket, socket) + +dnl +dnl Check for pthread support +dnl +PTHREAD_CFLAGS=error +PTHREAD_LDFLAGS=error + +dnl If it's error, then the user didn't +dnl define it. +if test "x$PTHREAD_LDFLAGS" = xerror; then + AC_CHECK_LIB(pthread, pthread_attr_init, [ + PTHREAD_CFLAGS="-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS" + PTHREAD_LDFLAGS="-lpthread" ]) +fi + +if test "x$PTHREAD_LDFLAGS" = xerror; then + AC_CHECK_LIB(pthreads, pthread_attr_init, [ + PTHREAD_CFLAGS="-D_THREAD_SAFE" + PTHREAD_LDFLAGS="-lpthreads" ]) +fi + +if test "x$PTHREAD_LDFLAGS" = xerror; then + AC_CHECK_LIB(c_r, pthread_attr_init, [ + PTHREAD_CFLAGS="-D_THREAD_SAFE -pthread" + PTHREAD_LDFLAGS="-pthread" ]) +fi + +if test "x$PTHREAD_LDFLAGS" = xerror; then + AC_CHECK_FUNC(pthread_attr_init, [ + PTHREAD_CFLAGS="-D_REENTRANT" + PTHREAD_LDFLAGS="-lpthread" ]) +fi + +if test $PTHREAD_LDFLAGS = "error"; then + AC_MSG_WARN(pthread library NOT found: guessing and hoping for the best....) + PTHREAD_CFLAGS="-D_REENTRANT" + PTHREAD_LDFLAGS="-lpthread" +fi + +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_LDFLAGS) + +dnl +dnl On some platforms, notably Solaris, these +dnl variables are assigned literally by the user +dnl and not implied. (don't know why...) +case "$host_os" in + *solaris*) + if test -z "$ac_given_sysconfdir" ; + then + sysconfdir="$prefix/etc" + fi + + if test -z "$ac_given_localstatedir" ; + then + localstatedir="$prefix/var" + fi + ;; + *) ;; +esac + +dnl +dnl Create header file +dnl +AC_OUTPUT_COMMANDS([ + outfile=include/joedog/path.h + tmpfile=${outfile} + cat > $tmpfile << _EOF_ +/** + * Path Header + * + * Copyright (C) 2000-2013 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#ifndef JOEDOG_PATH_H +#define JOEDOG_PATH_H + +#define SIEGE_HOME "$prefix" +#define URL_FILE "$sysconfdir/urls.txt" +#define CNF_FILE "$sysconfdir/siegerc" +#define LOG_FILE "$localstatedir/log/siege.log" +#define PLATFORM "$platform" + +#endif/*JOEDOG_PATH_H*/ +_EOF_ +], [ prefix=$prefix sysconfdir=$sysconfdir localstatedir=$localstatedir platform=$PLATFORM ]) + +dnl +dnl update dates and versioning in doc +dnl +AC_OUTPUT_COMMANDS([ + for file in doc/bombardment.1 doc/siege.1 doc/siege.config.1 doc/siege2csv.1 doc/siegerc; + do + rm -f $file + sed -e "s|\$_VERSION|$VERSION|g" \ + -e "s|\$_PROGRAM|$PROGRAM|g" \ + -e "s|\$_DATE|$DATE|g" \ + -e "s|\$_AUTHOR|$AUTHOR|g" \ + -e "s|\$_YEARS|$YEARS|g" \ + -e "s|\$_EMAIL|$EMAIL|g" \ + < $file.in > $file + done +], [ VERSION=$VERSION DATE="$DATE" PROGRAM="$PROGRAM" AUTHOR="$AUTHOR" EMAIL="$EMAIL" ]) + +dnl +dnl create siege.config utility +dnl +AC_OUTPUT_COMMANDS([ + infile=utils/siege.config.in + outfile=utils/siege.config + rm -f $outfile + sed -e "s|%_PREFIX%|$bindir|" \ + -e "s|%_SHELL%|$sh|" \ + < $infile > $outfile + cat doc/siegerc >> $outfile + echo "_EOF_" >> $outfile + echo "echo \"New configuration template added to \$HOME/.siege\"" >> $outfile + echo "echo \"Run siege -C to view the current settings in that file\"" >> $outfile + echo "exit" >> $outfile + echo "" >> $outfile + +], [ bindir=$exec_prefix$bindir sh=$SHELL ]) + +dnl +dnl create bombardment utility +dnl +AC_OUTPUT_COMMANDS([ + infile=utils/bombardment.in + outfile=utils/bombardment + rm -f $outfile + sed -e "s|%_PREFIX%|$bindir|" \ + -e "s|%_SHELL%|$sh|" \ + < $infile > $outfile + +], [ bindir=$exec_prefix$bindir sh=$SHELL ]) + +dnl +dnl create siege2csv utility +dnl +AC_OUTPUT_COMMANDS([ + infile=utils/siege2csv.in + outfile=utils/siege2csv.pl + rm -f $outfile + sed -e "s|%_PREFIX%|$bindir|" \ + -e "s|%_PERL%|$LREP|" \ + < $infile > $outfile + +], [ bindir=$exec_prefix$bindir LREP=$PERL ]) + +dnl +dnl Write platform to file for support reporting +dnl +AC_OUTPUT_COMMANDS([ + outfile=PLATFORM + tmpfile=${outfile} + cat > $tmpfile << _EOF_ +$PLATFORM +_EOF_ +], [PLATFORM=$PLATFORM]) + +AC_OUTPUT(Makefile src/Makefile doc/Makefile html/Makefile include/Makefile include/joedog/Makefile utils/Makefile) + +echo +echo "--------------------------------------------------------" +echo "Configuration is complete" +echo +echo "Run the following commands to complete the installation:" +echo " make " +echo " make install" +echo +echo "For complete documentation: http://www.joedog.org" +echo "--------------------------------------------------------" diff --git a/siege-4.1.6/doc/Makefile b/siege-4.1.6/doc/Makefile new file mode 100644 index 0000000..ef87886 --- /dev/null +++ b/siege-4.1.6/doc/Makefile @@ -0,0 +1,573 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# doc/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/siege +pkgincludedir = $(includedir)/siege +pkglibdir = $(libdir)/siege +pkglibexecdir = $(libexecdir)/siege +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/utils/mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing aclocal-1.13 +ALLOCA = +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTHOR = Jeffrey Fulmer, et al. +AUTOCONF = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoconf +AUTOHEADER = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoheader +AUTOMAKE = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CC_R = +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = -I/include/zlib -I/include +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=none +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DATE = June-18-2024 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EMAIL = jeff@joedog.org +EXEEXT = +F77 = +FFLAGS = +GREP = /usr/bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LDL = -ldl +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LN_S = cp -pR +LTLIBOBJS = +MAKEINFO = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = siege +PACKAGE_BUGREPORT = +PACKAGE_NAME = siege +PACKAGE_STRING = siege 4.1.6 +PACKAGE_TARNAME = siege +PACKAGE_URL = +PACKAGE_VERSION = 4.1.6 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PLATFORM = pc-x86_64-linux-gnu +PROGRAM = siege +PTHREAD_CFLAGS = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +PTHREAD_LDFLAGS = -lpthread +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +SSL_CFLAGS = +SSL_INCLUDE = +SSL_LDFLAGS = +SSL_LIBS = +STRIP = strip +VERSION = 4.1.6 +WARN_CFLAGS = -W -Wall -Wunused-value +Z_CFLAGS = +Z_INCLUDE = -I/include/zlib -I/include +Z_LDFLAGS = -L/usr/lib +Z_LIBS = -lz +abs_builddir = /mnt/e/webserv/siege-4.1.6/doc +abs_srcdir = /mnt/e/webserv/siege-4.1.6/doc +abs_top_builddir = /mnt/e/webserv/siege-4.1.6 +abs_top_srcdir = /mnt/e/webserv/siege-4.1.6 +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +AUTOMAKE_OPTIONS = foreign no-dependencies +man_MANS = \ +siege.1 \ +siege.config.1 \ +bombardment.1 \ +siege2csv.1 + +man_SOURCE = \ +siege.pod \ +siege.config.pod \ +bombardment.pod \ +siege2csv.pod + +man_SHELLS = \ +siege.1.in \ +siege.config.1.in \ +bombardment.1.in \ +siege2csv.1.in + +EXTRA_DIST = $(man_SOURCE) $(man_SHELLS) urls.txt siegerc.in +DISTCLEANFILES = siegerc $(man_MANS) $(man_SHELLS) +SIEGERC = $(sysconfdir)/siegerc +URLSTXT = $(sysconfdir)/urls.txt +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-exec-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags-am uninstall uninstall-am uninstall-man \ + uninstall-man1 + + +install-exec-hook: + @if test -f $(DESTDIR)$(SIEGERC); then \ + if cmp -s $(srcdir)/siegerc $(DESTDIR)$(SIEGERC); then echo ""; \ + else \ + echo ' $(INSTALL_DATA) $(srcdir)/siegerc $(DESTDIR)$(SIEGERC).new'; \ + $(INSTALL_DATA) $(srcdir)/siegerc $(DESTDIR)$(SIEGERC).new; \ + echo "#####################################################"; \ + echo "WARNING: File $(SIEGERC) already exists."; \ + echo " A new resource file has been installed as"; \ + echo " $(SIEGERC).new. You may want to"; \ + echo " consider using the newer version in order to"; \ + echo " take advantage of any new features."; \ + echo "#####################################################"; \ + fi; \ + else \ + $(mkinstalldirs) $(DESTDIR)$(sysconfdir); \ + $(INSTALL_DATA) $(srcdir)/siegerc $(DESTDIR)$(SIEGERC); \ + fi + @if test -f $(DESTDIR)$(URLSTXT); then \ + if cmp -s $(srcdir)/siegerc $(DESTDIR)$(URLSTXT); then echo ""; \ + else \ + echo "WARNING: File $(DESTDIR)$(URLSTXT) already exists."; \ + echo " It was NOT replaced with this installation."; \ + fi; \ + else \ + $(mkinstalldirs) $(DESTDIR)$(sysconfdir); \ + $(INSTALL_DATA) $(srcdir)/urls.txt $(DESTDIR)$(URLSTXT); \ + fi + +uninstall: + rm -f $(DESTDIR)$(SIEGERC) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/doc/Makefile.am b/siege-4.1.6/doc/Makefile.am new file mode 100644 index 0000000..3da06ad --- /dev/null +++ b/siege-4.1.6/doc/Makefile.am @@ -0,0 +1,83 @@ +## +## doc/Makefile.am +## +## Copyright (C) 2000-2010 by +## Jeffrey Fulmer - , et al. +## This file is distributed as part of Siege +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License along +## with this program; if not, write to the Free Software Foundation, Inc. +## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +## + +AUTOMAKE_OPTIONS = foreign no-dependencies + +man_MANS = \ +siege.1 \ +siege.config.1 \ +bombardment.1 \ +siege2csv.1 + +man_SOURCE = \ +siege.pod \ +siege.config.pod \ +bombardment.pod \ +siege2csv.pod + +man_SHELLS = \ +siege.1.in \ +siege.config.1.in \ +bombardment.1.in \ +siege2csv.1.in + +EXTRA_DIST = $(man_SOURCE) $(man_SHELLS) urls.txt siegerc.in + +DISTCLEANFILES = siegerc $(man_MANS) $(man_SHELLS) + +SIEGERC = $(sysconfdir)/siegerc + +URLSTXT = $(sysconfdir)/urls.txt + +install-exec-hook: + @if test -f $(DESTDIR)$(SIEGERC); then \ + if cmp -s $(srcdir)/siegerc $(DESTDIR)$(SIEGERC); then echo ""; \ + else \ + echo ' $(INSTALL_DATA) $(srcdir)/siegerc $(DESTDIR)$(SIEGERC).new'; \ + $(INSTALL_DATA) $(srcdir)/siegerc $(DESTDIR)$(SIEGERC).new; \ + echo "#####################################################"; \ + echo "WARNING: File $(SIEGERC) already exists."; \ + echo " A new resource file has been installed as"; \ + echo " $(SIEGERC).new. You may want to"; \ + echo " consider using the newer version in order to"; \ + echo " take advantage of any new features."; \ + echo "#####################################################"; \ + fi; \ + else \ + $(mkinstalldirs) $(DESTDIR)$(sysconfdir); \ + $(INSTALL_DATA) $(srcdir)/siegerc $(DESTDIR)$(SIEGERC); \ + fi + @if test -f $(DESTDIR)$(URLSTXT); then \ + if cmp -s $(srcdir)/siegerc $(DESTDIR)$(URLSTXT); then echo ""; \ + else \ + echo "WARNING: File $(DESTDIR)$(URLSTXT) already exists."; \ + echo " It was NOT replaced with this installation."; \ + fi; \ + else \ + $(mkinstalldirs) $(DESTDIR)$(sysconfdir); \ + $(INSTALL_DATA) $(srcdir)/urls.txt $(DESTDIR)$(URLSTXT); \ + fi + + +uninstall: + rm -f $(DESTDIR)$(SIEGERC) + diff --git a/siege-4.1.6/doc/Makefile.in b/siege-4.1.6/doc/Makefile.in new file mode 100644 index 0000000..db15f1d --- /dev/null +++ b/siege-4.1.6/doc/Makefile.in @@ -0,0 +1,573 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/utils/mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTHOR = @AUTHOR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CC_R = @CC_R@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMAIL = @EMAIL@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LDL = @LDL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PLATFORM = @PLATFORM@ +PROGRAM = @PROGRAM@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SSL_CFLAGS = @SSL_CFLAGS@ +SSL_INCLUDE = @SSL_INCLUDE@ +SSL_LDFLAGS = @SSL_LDFLAGS@ +SSL_LIBS = @SSL_LIBS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +Z_CFLAGS = @Z_CFLAGS@ +Z_INCLUDE = @Z_INCLUDE@ +Z_LDFLAGS = @Z_LDFLAGS@ +Z_LIBS = @Z_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = foreign no-dependencies +man_MANS = \ +siege.1 \ +siege.config.1 \ +bombardment.1 \ +siege2csv.1 + +man_SOURCE = \ +siege.pod \ +siege.config.pod \ +bombardment.pod \ +siege2csv.pod + +man_SHELLS = \ +siege.1.in \ +siege.config.1.in \ +bombardment.1.in \ +siege2csv.1.in + +EXTRA_DIST = $(man_SOURCE) $(man_SHELLS) urls.txt siegerc.in +DISTCLEANFILES = siegerc $(man_MANS) $(man_SHELLS) +SIEGERC = $(sysconfdir)/siegerc +URLSTXT = $(sysconfdir)/urls.txt +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(MANS) +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-exec-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags-am uninstall uninstall-am uninstall-man \ + uninstall-man1 + + +install-exec-hook: + @if test -f $(DESTDIR)$(SIEGERC); then \ + if cmp -s $(srcdir)/siegerc $(DESTDIR)$(SIEGERC); then echo ""; \ + else \ + echo ' $(INSTALL_DATA) $(srcdir)/siegerc $(DESTDIR)$(SIEGERC).new'; \ + $(INSTALL_DATA) $(srcdir)/siegerc $(DESTDIR)$(SIEGERC).new; \ + echo "#####################################################"; \ + echo "WARNING: File $(SIEGERC) already exists."; \ + echo " A new resource file has been installed as"; \ + echo " $(SIEGERC).new. You may want to"; \ + echo " consider using the newer version in order to"; \ + echo " take advantage of any new features."; \ + echo "#####################################################"; \ + fi; \ + else \ + $(mkinstalldirs) $(DESTDIR)$(sysconfdir); \ + $(INSTALL_DATA) $(srcdir)/siegerc $(DESTDIR)$(SIEGERC); \ + fi + @if test -f $(DESTDIR)$(URLSTXT); then \ + if cmp -s $(srcdir)/siegerc $(DESTDIR)$(URLSTXT); then echo ""; \ + else \ + echo "WARNING: File $(DESTDIR)$(URLSTXT) already exists."; \ + echo " It was NOT replaced with this installation."; \ + fi; \ + else \ + $(mkinstalldirs) $(DESTDIR)$(sysconfdir); \ + $(INSTALL_DATA) $(srcdir)/urls.txt $(DESTDIR)$(URLSTXT); \ + fi + +uninstall: + rm -f $(DESTDIR)$(SIEGERC) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/doc/bombardment.1 b/siege-4.1.6/doc/bombardment.1 new file mode 100644 index 0000000..220d006 --- /dev/null +++ b/siege-4.1.6/doc/bombardment.1 @@ -0,0 +1,173 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "BOMBARDMENT 1" +.TH BOMBARDMENT 1 "2023-01-05" "JoeDog" "bombardment" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +bombardment \- Run siege with an ever\-increasing number of users +.SS "\s-1SYNOPSIS\s0" +.IX Subsection "SYNOPSIS" +bombardment [urlfile] [clients] [increment] [trials] [delay] bombardment urls.txt 5 10 20 1 +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +bombardment is part of the \f(CWsiege\fR distribution. It calls \f(CWsiege\fR with an initial number of +clients. When that run finishes, it immediately calls siege again with that number of clients plus +the increment. It does this the number of times specified in the fourth argument. +.SH "OPTIONS" +.IX Header "OPTIONS" +urlfile + The name of the file containing one or more URLs for siege to test. +.PP +clients + The initial number of clients to be used on the first run. +.PP +increment + The number of clients to add to each ensuing run. +.PP +trials + The number of times to run siege. +.PP +delay + The is the amount of time, in seconds, that each client will wait + between requests. The \f(CWsiege\fR default is overridden by bombardment +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIsiege\fR\|(1), \fIsiege2csv\fR\|(1) +.SH "AUTHOR" +.IX Header "AUTHOR" +Written by Peter Hutnick, et al. diff --git a/siege-4.1.6/doc/bombardment.1.in b/siege-4.1.6/doc/bombardment.1.in new file mode 100644 index 0000000..05f300c --- /dev/null +++ b/siege-4.1.6/doc/bombardment.1.in @@ -0,0 +1,173 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "BOMBARDMENT 1" +.TH BOMBARDMENT 1 "2023-01-05" "JoeDog" "bombardment" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +bombardment \- Run $_PROGRAM with an ever\-increasing number of users +.SS "\s-1SYNOPSIS\s0" +.IX Subsection "SYNOPSIS" +bombardment [urlfile] [clients] [increment] [trials] [delay] bombardment urls.txt 5 10 20 1 +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +bombardment is part of the \f(CW$_PROGRAM\fR distribution. It calls \f(CW$_PROGRAM\fR with an initial number of +clients. When that run finishes, it immediately calls siege again with that number of clients plus +the increment. It does this the number of times specified in the fourth argument. +.SH "OPTIONS" +.IX Header "OPTIONS" +urlfile + The name of the file containing one or more URLs for siege to test. +.PP +clients + The initial number of clients to be used on the first run. +.PP +increment + The number of clients to add to each ensuing run. +.PP +trials + The number of times to run siege. +.PP +delay + The is the amount of time, in seconds, that each client will wait + between requests. The \f(CW$_PROGRAM\fR default is overridden by bombardment +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIsiege\fR\|(1), \fIsiege2csv\fR\|(1) +.SH "AUTHOR" +.IX Header "AUTHOR" +Written by Peter Hutnick, et al. diff --git a/siege-4.1.6/doc/bombardment.pod b/siege-4.1.6/doc/bombardment.pod new file mode 100644 index 0000000..40b47b1 --- /dev/null +++ b/siege-4.1.6/doc/bombardment.pod @@ -0,0 +1,42 @@ +=pod + +=head1 NAME + +bombardment - Run $_PROGRAM with an ever-increasing number of users + +=head2 SYNOPSIS + +bombardment [urlfile] [clients] [increment] [trials] [delay] bombardment urls.txt 5 10 20 1 + +=head1 DESCRIPTION + +bombardment is part of the $_PROGRAM distribution. It calls $_PROGRAM with an initial number of +clients. When that run finishes, it immediately calls siege again with that number of clients plus +the increment. It does this the number of times specified in the fourth argument. + +=head1 OPTIONS + +urlfile + The name of the file containing one or more URLs for siege to test. + +clients + The initial number of clients to be used on the first run. + +increment + The number of clients to add to each ensuing run. + +trials + The number of times to run siege. + +delay + The is the amount of time, in seconds, that each client will wait + between requests. The $_PROGRAM default is overridden by bombardment + +=head1 SEE ALSO + +siege(1), siege2csv(1) + +=head1 AUTHOR + +Written by Peter Hutnick, et al. + diff --git a/siege-4.1.6/doc/siege.1 b/siege-4.1.6/doc/siege.1 new file mode 100644 index 0000000..35cd936 --- /dev/null +++ b/siege-4.1.6/doc/siege.1 @@ -0,0 +1,581 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "SIEGE 1" +.TH SIEGE 1 "2023-01-05" "JoeDog" "Siege Load Tester" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +siege is a HTTP/FTP load tester and benchmarking utility. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 4 +\& siege [options] +\& siege [options] +\& siege [options] \-g +\& siege [options] \-f urls.txt +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\f(CWsiege\fR is a multi-threaded \s-1HTTP/FTP\s0 load tester and benchmarking +utility. It supports most of the features detailed in RFCs 2616 (\s-1HTTP\s0) +and 959 (\s-1FTP\s0). Properties can be set both from the command line and in +a configuration file. When the same property is set in both locations, +the command line takes precedence. +.PP +The default configuration file is \f(CW$HOME\fR/.siege/siege.conf If you don't +have a \f(CW$HOME\fR/.siege directory and a siege.conf and cookies.txt file, +siege will generate a new config directory when it runs. You can +generate your config directory with the following command: siege.config +.SH "OPTIONS" +.IX Header "OPTIONS" +.SS "Option Syntax" +.IX Subsection "Option Syntax" +\&\f(CWsiege\fR supports long and short options. Short options look like this: + \-c 25 + \-c25 +.PP +Long options look like this: + \-\-concurrent=25 +.SS "Option Values" +.IX Subsection "Option Values" +.IP "\fB\-V\fR, \fB\-\-version\fR" 4 +.IX Item "-V, --version" +Displays the \f(CWsiege\fR release version and copyright information. +.IP "\fB\-h\fR, \fB\-\-help\fR" 4 +.IX Item "-h, --help" +Prints a help message describing \f(CWsiege\fR's command-line options. +.IP "\fB\-C\fR, \fB\-\-config\fR" 4 +.IX Item "-C, --config" +Prints a detailed summary of all the currently configured options, most +of which are sent in \f(CW$HOME\fR/.siege/siege.conf +.IP "\fB\-v\fR, \fB\-\-verbose\fR" 4 +.IX Item "-v, --verbose" +This directive puts \f(CWsiege\fR into verbose mode which is actually a +default setting. This command-line option is useful when the config +file is set to 'verbose = false' since it will allow you to override +that. +.Sp +By default \f(CWsiege\fR's verbose output is displayed in a color-coded +style. + * \s-1HTTP\s0 2xx is coded blue + * \s-1HTTP\s0 3xx is coded cyan + * \s-1HTTP\s0 4xx is coded magenta + * \s-1HTTP\s0 5xx is coded red + * \s-1HTTP\s0 cached is coded black +.Sp +\&\s-1NOTE:\s0 You can turn off color in siege.conf like this: 'color = off' +.IP "\fB\-q\fR, \fB\-\-quiet\fR" 4 +.IX Item "-q, --quiet" +This directive silences \f(CWsiege\fR. It is mostly used for scripting and +is often used in conjunction with \-g/\-\-get. You can detect the success +or failure of the run with its exit code. +.Sp +.Vb 6 +\& siege \-\-quiet \-g www.joedog.org +\& if [ $? \-eq 0 ] ; then +\& echo "Success" +\& else +\& echo "Failure" +\& fi +.Ve +.IP "\fB\-g \s-1URL\s0\fR, \fB\-\-get=URL\fR" 4 +.IX Item "-g URL, --get=URL" +This option allows you to request a \s-1URL\s0 and watch the header +transaction. There is a corresponding config file directive that +allows you to set the request method for these requests: +gmethod = HEAD|GET +.Sp +.Vb 6 +\& $ siege \-g "https://www.joedog.org/" +\& HEAD / HTTP/1.0 +\& Host: www.joedog.org +\& Accept: */* +\& User\-Agent: Mozilla/5.0 (unknown\-x86_64\-linux\-gnu) Siege/4.0.0\-beta5 +\& Connection: close +\& +\& HTTP/1.1 200 OK +\& Server: cloudflare\-nginx +\& Date: Tue, 09 Feb 2016 18:18:41 GMT +\& Content\-Type: text/html; charset=UTF\-8 +\& Connection: close +\& Last\-Modified: Wed, 25 Nov 2015 18:46:08 GMT +\& Cache\-Control: max\-age=3, must\-revalidate +\& Expires: Tue, 09 Feb 2016 18:18:44 GMT +\& Vary: Accept\-Encoding,Cookie +\& CF\-RAY: 27219407eeff084a\-IAD +.Ve +.Sp +\&\s-1NOTE:\s0 It's a best practice to quote the \s-1URL\s0 when it's passed to \f(CWsiege\fR +from the the command-line. +.IP "\fB\-p \s-1URL\s0\fR, \fB\-\-print=URL\fR" 4 +.IX Item "-p URL, --print=URL" +This option is similar to \-g / \-\-get but it \s-1PRINTS\s0 the page it received +from the server. +.Sp +.Vb 6 +\& $ siege \-p http://www.joedog.org/ +\& GET / HTTP/1.0 +\& Host: www.joedog.org +\& Accept: */* +\& User\-Agent: Mozilla/5.0 (unknown\-x86_64\-linux\-gnu) Siege/4.0.3rc1 +\& Connection: close +\& +\& HTTP/1.1 301 Moved Permanently +\& Date: Wed, 19 Oct 2016 16:58:13 GMT +\& Content\-Type: text/html; charset=iso\-8859\-1 +\& Location: https://www.joedog.org/ +\& Server: cloudflare\-nginx +\& Connection: close +\& +\& +\& +\& +\& 301 Moved Permanently +\& +\&

Moved Permanently

+\&

The document has moved here.

+\&
+\&
Apache/2.2.31 (Amazon) Server at www.joedog.org Port 80
+\& +.Ve +.IP "\fB\-c \s-1NUM\s0\fR, \fB\-\-concurrent=NUM\fR" 4 +.IX Item "-c NUM, --concurrent=NUM" +This option allows you to set the concurrent number of users. The total +number of users is technically limited to your computer's resources. +.Sp +You should not configure more users than your web server is configured +to handle. For example, the default apache configuration is capped at +255 threads. If you run siege with \-c 1024, then 769 siege users are +left waiting for an apache handler. +.Sp +For this reason, the default siege configuration is capped at 255 users. +You can increase that number inside siege.conf but if you make a mess, +then please don't complain to us. +.IP "\fB\-r \s-1NUM\s0\fR, \fB\-\-reps=NUM|once\fR" 4 +.IX Item "-r NUM, --reps=NUM|once" +This option tells each siege user how many times it should run. The value +should generally be a number greater than zero but it may be the keyword +\&'once'. +.Sp +If \-\-reps=3 then each siege user will run three times before it exits. +However, if \-\-reps=once, then each user will run through the urls.txt +file exactly one time. +.Sp +For more information about the urls.txt file, see option \-f , +\&\-\-file= +.IP "\fB\-t NUMm\fR, \fB\-\-time=NUMm\fR" 4 +.IX Item "-t NUMm, --time=NUMm" +This option is similar to \-\-reps but instead of specifying the number +of times each user should run, it specifies the amount of time each +should run. +.Sp +The value format is \*(L"NUMm\*(R", where \*(L"\s-1NUM\*(R"\s0 is an amount of time and the \*(L"m\*(R" +modifier is either S, M, or H for seconds, minutes and hours. To run +\&\f(CWsiege\fR for an hour, you could select any one of the following +combinations: \-t3600S, \-t60M, \-t1H. The modifier is not case sensitive, +but it does require no space between the number and itself. +.IP "\fB\-d \s-1NUM\s0\fR, \fB\-\-delay=NUM\fR" 4 +.IX Item "-d NUM, --delay=NUM" +This option instructs \f(CWsiege\fR how long to delay between each page +request. The value \s-1NUM\s0 represents the number of seconds between each +one. This number can be a decimal value. In fact the default is half a +second (\-\-delay=0.5). +.Sp +The time between delay requests is \s-1NOT\s0 applied toward the transaction +time. If two 0.1 second transactions have a 2 second delay between them, +their average transaction time is 0.1 seconds. It is applied toward the +total elapsed time. In this scenario, the elapsed time would be 2.2 +seconds. +.Sp +\&\s-1NOTE:\s0 when the parser is enabled (see: \-p/\-\-parser), there is no delay +between the page and its elements, i.e., style sheets, javascripts, etc. +The delay is only between page requests. +.IP "\fB\-b\fR, \fB\-\-benchmark\fR" 4 +.IX Item "-b, --benchmark" +This directive tells siege to go into benchmark mode. This means there +is no delay between iterations. +.IP "\fB\-i\fR, \fB\-\-internet\fR" 4 +.IX Item "-i, --internet" +This option sets siege into what we call internet mode. It makes +requests from the urls.txt file (see: \-f / \-\-file=) in +random order. +.IP "\fB\-f \s-1FILE\s0\fR, \fB\-\-file=FILE\fR" 4 +.IX Item "-f FILE, --file=FILE" +This option tells siege to work with a list of urls inside a text +file. The URLs are listed one per line. Unlike URLs that are passed as +a command-line argument, the URLs in this file should not be quoted. +.Sp +\&\f(CWsiege\fR's urls.txt parser supports comments and variables. Since +\&\f(CWsiege\fR uses the dollar sign ($) as a prefix for scalar variables, +you should escape any variable you want to send to the server: +.Sp +.Vb 1 +\& https://$(HOST)/siege/jsoner.php POST {"price": "\e$10 per mile"} +.Ve +.IP "\fB\-R \s-1FILE\s0\fR, \fB\-\-rc=FILE\fR" 4 +.IX Item "-R FILE, --rc=FILE" +This directive allows you to set an alternative resource file. By +default, the siegerc file is \f(CW$HOME\fR/.siege/siege.conf With this +directive, you can override the default and use an alternative file. +.IP "\fB\-L \s-1FILE\s0\fR, \fB\-\-log=FILE\fR" 4 +.IX Item "-L FILE, --log=FILE" +The default log file is \f(CW$prefix\fR/var/log/siege.log. This directive +allows you to specify an alternative file for logging. +.ie n .IP "\fB\-m ""string""\fR, \fB\-\-mark=""string""\fR" 4 +.el .IP "\fB\-m ``string''\fR, \fB\-\-mark=``string''\fR" 4 +.IX Item "-m string, --mark=string" +This option allows you to log a message to the log file before your +stats are written there. It is generally used to identify the +proceeding run. You could, for example, mark the file with your +command-line parameters so it's understood what configuration +generated the following data. +.ie n .IP "\fB\-H ""header: value""\fR, \fB\-\-header=""Header: value""\fR" 4 +.el .IP "\fB\-H ``header: value''\fR, \fB\-\-header=``Header: value''\fR" 4 +.IX Item "-H header: value, --header=Header: value" +This options allows you to set a custom header in the request. +Generally speaking, this header will override an existing header. The +Cookie header is a special case. If you set \-H \*(L"Cookie: value\*(R" then +siege will send that cookie in addition to the other ones. +.ie n .IP "\fB\-A ""string""\fR, \fB\-\-agent=""string""\fR" 4 +.el .IP "\fB\-A ``string''\fR, \fB\-\-agent=``string''\fR" 4 +.IX Item "-A string, --agent=string" +This option allows you to override the default user-agent with a custom +one. +.Sp +.Vb 1 +\& siege \-\-agent="JoeDog Jr. in da hizzle" +.Ve +.Sp +Will set this header: +.Sp +.Vb 1 +\& User\-agent: JoeDog Jr. in da hizzle +.Ve +.Sp +Alternatively, you could set the User-agent with the \-H/\-\-header option +above. +.ie n .IP "\fB\-T ""text""\fR, \fB\-\-content\-type=""text""\fR" 4 +.el .IP "\fB\-T ``text''\fR, \fB\-\-content\-type=``text''\fR" 4 +.IX Item "-T text, --content-type=text" +This is another set header shortcut. You use this option to override +the default Content-type request header. +.IP "\fB\-\-no\-parser\fR" 4 +.IX Item "--no-parser" +Turn off the \s-1HTML\s0 parser. When siege downloads a page, it parses it for +additional page elements such as style-sheets, javascript and images. It +will make additional requests for any elements it finds. With this option +enabled, siege will stop after it pulls down the main page. +.IP "\fB\-\-no\-follow\fR" 4 +.IX Item "--no-follow" +This directive instructs siege not to follow 3xx redirects. +.SH "URL FORMAT" +.IX Header "URL FORMAT" +\&\f(CWsiege\fR supports \s-1RFC 1738 URL\s0 formats but it takes pains to implement +commonly used shortcuts for your convenience. In addition to \s-1RFC 1738 \s0 +formats, siege introduces its own \s-1URL\s0 format to indicate protocol method. +.PP +An \s-1RFC 1738 URL\s0 looks like this: + ://:@:/;?# +.PP +A \f(CWsiege\fR \s-1URL\s0 with a method indicator looks like this: + ://:@:/ \s-1POST\s0 +.PP +You can also post the contents of a file using the redirect character +like this: + ://:@:/ \s-1POST\s0 is the primary author of \f(CWsiege\fR. Numerous people +throughout the globe also contributed to this program. Their +contributions are noted in the source code ChangeLog +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright \f(CW\fR by \f(CWJeffrey Fulmer, et al.\fR +.PP +This program is free software; you can redistribute it and/or modify it +under the terms of the \s-1GNU\s0 General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. +.PP +This program is distributed in the hope that it will be useful, but +\&\s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE. \s0 See the \s-1GNU \s0 +General Public License for more details. +.PP +You should have received a copy of the \s-1GNU\s0 General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +675 Mass Ave, Cambridge, \s-1MA 02139, USA.\s0 +.SH "AVAILABILITY" +.IX Header "AVAILABILITY" +The most recent released version of \f(CWsiege\fR is available by \s-1HTTP \s0 +download: + http://download.joedog.org/pub/siege +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIsiege.config\fR\|(1) \fIbombardment\fR\|(1) \fIsiege2csv\fR\|(1) diff --git a/siege-4.1.6/doc/siege.1.in b/siege-4.1.6/doc/siege.1.in new file mode 100644 index 0000000..36d148e --- /dev/null +++ b/siege-4.1.6/doc/siege.1.in @@ -0,0 +1,581 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "SIEGE 1" +.TH SIEGE 1 "2023-01-05" "JoeDog" "Siege Load Tester" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +$_PROGRAM is a HTTP/FTP load tester and benchmarking utility. +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +.Vb 4 +\& $_PROGRAM [options] +\& $_PROGRAM [options] +\& $_PROGRAM [options] \-g +\& $_PROGRAM [options] \-f urls.txt +.Ve +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\f(CW$_PROGRAM\fR is a multi-threaded \s-1HTTP/FTP\s0 load tester and benchmarking +utility. It supports most of the features detailed in RFCs 2616 (\s-1HTTP\s0) +and 959 (\s-1FTP\s0). Properties can be set both from the command line and in +a configuration file. When the same property is set in both locations, +the command line takes precedence. +.PP +The default configuration file is \f(CW$HOME\fR/.siege/siege.conf If you don't +have a \f(CW$HOME\fR/.siege directory and a siege.conf and cookies.txt file, +siege will generate a new config directory when it runs. You can +generate your config directory with the following command: siege.config +.SH "OPTIONS" +.IX Header "OPTIONS" +.SS "Option Syntax" +.IX Subsection "Option Syntax" +\&\f(CW$_PROGRAM\fR supports long and short options. Short options look like this: + \-c 25 + \-c25 +.PP +Long options look like this: + \-\-concurrent=25 +.SS "Option Values" +.IX Subsection "Option Values" +.IP "\fB\-V\fR, \fB\-\-version\fR" 4 +.IX Item "-V, --version" +Displays the \f(CW$_PROGRAM\fR release version and copyright information. +.IP "\fB\-h\fR, \fB\-\-help\fR" 4 +.IX Item "-h, --help" +Prints a help message describing \f(CW$_PROGRAM\fR's command-line options. +.IP "\fB\-C\fR, \fB\-\-config\fR" 4 +.IX Item "-C, --config" +Prints a detailed summary of all the currently configured options, most +of which are sent in \f(CW$HOME\fR/.siege/siege.conf +.IP "\fB\-v\fR, \fB\-\-verbose\fR" 4 +.IX Item "-v, --verbose" +This directive puts \f(CW$_PROGRAM\fR into verbose mode which is actually a +default setting. This command-line option is useful when the config +file is set to 'verbose = false' since it will allow you to override +that. +.Sp +By default \f(CW$_PROGRAM\fR's verbose output is displayed in a color-coded +style. + * \s-1HTTP\s0 2xx is coded blue + * \s-1HTTP\s0 3xx is coded cyan + * \s-1HTTP\s0 4xx is coded magenta + * \s-1HTTP\s0 5xx is coded red + * \s-1HTTP\s0 cached is coded black +.Sp +\&\s-1NOTE:\s0 You can turn off color in siege.conf like this: 'color = off' +.IP "\fB\-q\fR, \fB\-\-quiet\fR" 4 +.IX Item "-q, --quiet" +This directive silences \f(CW$_PROGRAM\fR. It is mostly used for scripting and +is often used in conjunction with \-g/\-\-get. You can detect the success +or failure of the run with its exit code. +.Sp +.Vb 6 +\& siege \-\-quiet \-g www.joedog.org +\& if [ $? \-eq 0 ] ; then +\& echo "Success" +\& else +\& echo "Failure" +\& fi +.Ve +.IP "\fB\-g \s-1URL\s0\fR, \fB\-\-get=URL\fR" 4 +.IX Item "-g URL, --get=URL" +This option allows you to request a \s-1URL\s0 and watch the header +transaction. There is a corresponding config file directive that +allows you to set the request method for these requests: +gmethod = HEAD|GET +.Sp +.Vb 6 +\& $ siege \-g "https://www.joedog.org/" +\& HEAD / HTTP/1.0 +\& Host: www.joedog.org +\& Accept: */* +\& User\-Agent: Mozilla/5.0 (unknown\-x86_64\-linux\-gnu) Siege/4.0.0\-beta5 +\& Connection: close +\& +\& HTTP/1.1 200 OK +\& Server: cloudflare\-nginx +\& Date: Tue, 09 Feb 2016 18:18:41 GMT +\& Content\-Type: text/html; charset=UTF\-8 +\& Connection: close +\& Last\-Modified: Wed, 25 Nov 2015 18:46:08 GMT +\& Cache\-Control: max\-age=3, must\-revalidate +\& Expires: Tue, 09 Feb 2016 18:18:44 GMT +\& Vary: Accept\-Encoding,Cookie +\& CF\-RAY: 27219407eeff084a\-IAD +.Ve +.Sp +\&\s-1NOTE:\s0 It's a best practice to quote the \s-1URL\s0 when it's passed to \f(CW$_PROGRAM\fR +from the the command-line. +.IP "\fB\-p \s-1URL\s0\fR, \fB\-\-print=URL\fR" 4 +.IX Item "-p URL, --print=URL" +This option is similar to \-g / \-\-get but it \s-1PRINTS\s0 the page it received +from the server. +.Sp +.Vb 6 +\& $ siege \-p http://www.joedog.org/ +\& GET / HTTP/1.0 +\& Host: www.joedog.org +\& Accept: */* +\& User\-Agent: Mozilla/5.0 (unknown\-x86_64\-linux\-gnu) Siege/4.0.3rc1 +\& Connection: close +\& +\& HTTP/1.1 301 Moved Permanently +\& Date: Wed, 19 Oct 2016 16:58:13 GMT +\& Content\-Type: text/html; charset=iso\-8859\-1 +\& Location: https://www.joedog.org/ +\& Server: cloudflare\-nginx +\& Connection: close +\& +\& +\& +\& +\& 301 Moved Permanently +\& +\&

Moved Permanently

+\&

The document has moved here.

+\&
+\&
Apache/2.2.31 (Amazon) Server at www.joedog.org Port 80
+\& +.Ve +.IP "\fB\-c \s-1NUM\s0\fR, \fB\-\-concurrent=NUM\fR" 4 +.IX Item "-c NUM, --concurrent=NUM" +This option allows you to set the concurrent number of users. The total +number of users is technically limited to your computer's resources. +.Sp +You should not configure more users than your web server is configured +to handle. For example, the default apache configuration is capped at +255 threads. If you run siege with \-c 1024, then 769 siege users are +left waiting for an apache handler. +.Sp +For this reason, the default siege configuration is capped at 255 users. +You can increase that number inside siege.conf but if you make a mess, +then please don't complain to us. +.IP "\fB\-r \s-1NUM\s0\fR, \fB\-\-reps=NUM|once\fR" 4 +.IX Item "-r NUM, --reps=NUM|once" +This option tells each siege user how many times it should run. The value +should generally be a number greater than zero but it may be the keyword +\&'once'. +.Sp +If \-\-reps=3 then each siege user will run three times before it exits. +However, if \-\-reps=once, then each user will run through the urls.txt +file exactly one time. +.Sp +For more information about the urls.txt file, see option \-f , +\&\-\-file= +.IP "\fB\-t NUMm\fR, \fB\-\-time=NUMm\fR" 4 +.IX Item "-t NUMm, --time=NUMm" +This option is similar to \-\-reps but instead of specifying the number +of times each user should run, it specifies the amount of time each +should run. +.Sp +The value format is \*(L"NUMm\*(R", where \*(L"\s-1NUM\*(R"\s0 is an amount of time and the \*(L"m\*(R" +modifier is either S, M, or H for seconds, minutes and hours. To run +\&\f(CW$_PROGRAM\fR for an hour, you could select any one of the following +combinations: \-t3600S, \-t60M, \-t1H. The modifier is not case sensitive, +but it does require no space between the number and itself. +.IP "\fB\-d \s-1NUM\s0\fR, \fB\-\-delay=NUM\fR" 4 +.IX Item "-d NUM, --delay=NUM" +This option instructs \f(CW$_PROGRAM\fR how long to delay between each page +request. The value \s-1NUM\s0 represents the number of seconds between each +one. This number can be a decimal value. In fact the default is half a +second (\-\-delay=0.5). +.Sp +The time between delay requests is \s-1NOT\s0 applied toward the transaction +time. If two 0.1 second transactions have a 2 second delay between them, +their average transaction time is 0.1 seconds. It is applied toward the +total elapsed time. In this scenario, the elapsed time would be 2.2 +seconds. +.Sp +\&\s-1NOTE:\s0 when the parser is enabled (see: \-p/\-\-parser), there is no delay +between the page and its elements, i.e., style sheets, javascripts, etc. +The delay is only between page requests. +.IP "\fB\-b\fR, \fB\-\-benchmark\fR" 4 +.IX Item "-b, --benchmark" +This directive tells siege to go into benchmark mode. This means there +is no delay between iterations. +.IP "\fB\-i\fR, \fB\-\-internet\fR" 4 +.IX Item "-i, --internet" +This option sets siege into what we call internet mode. It makes +requests from the urls.txt file (see: \-f / \-\-file=) in +random order. +.IP "\fB\-f \s-1FILE\s0\fR, \fB\-\-file=FILE\fR" 4 +.IX Item "-f FILE, --file=FILE" +This option tells siege to work with a list of urls inside a text +file. The URLs are listed one per line. Unlike URLs that are passed as +a command-line argument, the URLs in this file should not be quoted. +.Sp +\&\f(CW$_PROGRAM\fR's urls.txt parser supports comments and variables. Since +\&\f(CW$_PROGRAM\fR uses the dollar sign ($) as a prefix for scalar variables, +you should escape any variable you want to send to the server: +.Sp +.Vb 1 +\& https://$(HOST)/siege/jsoner.php POST {"price": "\e$10 per mile"} +.Ve +.IP "\fB\-R \s-1FILE\s0\fR, \fB\-\-rc=FILE\fR" 4 +.IX Item "-R FILE, --rc=FILE" +This directive allows you to set an alternative resource file. By +default, the siegerc file is \f(CW$HOME\fR/.siege/siege.conf With this +directive, you can override the default and use an alternative file. +.IP "\fB\-L \s-1FILE\s0\fR, \fB\-\-log=FILE\fR" 4 +.IX Item "-L FILE, --log=FILE" +The default log file is \f(CW$prefix\fR/var/log/siege.log. This directive +allows you to specify an alternative file for logging. +.ie n .IP "\fB\-m ""string""\fR, \fB\-\-mark=""string""\fR" 4 +.el .IP "\fB\-m ``string''\fR, \fB\-\-mark=``string''\fR" 4 +.IX Item "-m string, --mark=string" +This option allows you to log a message to the log file before your +stats are written there. It is generally used to identify the +proceeding run. You could, for example, mark the file with your +command-line parameters so it's understood what configuration +generated the following data. +.ie n .IP "\fB\-H ""header: value""\fR, \fB\-\-header=""Header: value""\fR" 4 +.el .IP "\fB\-H ``header: value''\fR, \fB\-\-header=``Header: value''\fR" 4 +.IX Item "-H header: value, --header=Header: value" +This options allows you to set a custom header in the request. +Generally speaking, this header will override an existing header. The +Cookie header is a special case. If you set \-H \*(L"Cookie: value\*(R" then +siege will send that cookie in addition to the other ones. +.ie n .IP "\fB\-A ""string""\fR, \fB\-\-agent=""string""\fR" 4 +.el .IP "\fB\-A ``string''\fR, \fB\-\-agent=``string''\fR" 4 +.IX Item "-A string, --agent=string" +This option allows you to override the default user-agent with a custom +one. +.Sp +.Vb 1 +\& siege \-\-agent="JoeDog Jr. in da hizzle" +.Ve +.Sp +Will set this header: +.Sp +.Vb 1 +\& User\-agent: JoeDog Jr. in da hizzle +.Ve +.Sp +Alternatively, you could set the User-agent with the \-H/\-\-header option +above. +.ie n .IP "\fB\-T ""text""\fR, \fB\-\-content\-type=""text""\fR" 4 +.el .IP "\fB\-T ``text''\fR, \fB\-\-content\-type=``text''\fR" 4 +.IX Item "-T text, --content-type=text" +This is another set header shortcut. You use this option to override +the default Content-type request header. +.IP "\fB\-\-no\-parser\fR" 4 +.IX Item "--no-parser" +Turn off the \s-1HTML\s0 parser. When siege downloads a page, it parses it for +additional page elements such as style-sheets, javascript and images. It +will make additional requests for any elements it finds. With this option +enabled, siege will stop after it pulls down the main page. +.IP "\fB\-\-no\-follow\fR" 4 +.IX Item "--no-follow" +This directive instructs siege not to follow 3xx redirects. +.SH "URL FORMAT" +.IX Header "URL FORMAT" +\&\f(CW$_PROGRAM\fR supports \s-1RFC 1738 URL\s0 formats but it takes pains to implement +commonly used shortcuts for your convenience. In addition to \s-1RFC 1738 \s0 +formats, siege introduces its own \s-1URL\s0 format to indicate protocol method. +.PP +An \s-1RFC 1738 URL\s0 looks like this: + ://:@:/;?# +.PP +A \f(CW$_PROGRAM\fR \s-1URL\s0 with a method indicator looks like this: + ://:@:/ \s-1POST\s0 +.PP +You can also post the contents of a file using the redirect character +like this: + ://:@:/ \s-1POST\s0 is the primary author of \f(CW$_PROGRAM\fR. Numerous people +throughout the globe also contributed to this program. Their +contributions are noted in the source code ChangeLog +.SH "COPYRIGHT" +.IX Header "COPYRIGHT" +Copyright \f(CW$_YEARS\fR by \f(CW$_AUTHOR\fR <$_EMAIL> +.PP +This program is free software; you can redistribute it and/or modify it +under the terms of the \s-1GNU\s0 General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. +.PP +This program is distributed in the hope that it will be useful, but +\&\s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of +\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE. \s0 See the \s-1GNU \s0 +General Public License for more details. +.PP +You should have received a copy of the \s-1GNU\s0 General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +675 Mass Ave, Cambridge, \s-1MA 02139, USA.\s0 +.SH "AVAILABILITY" +.IX Header "AVAILABILITY" +The most recent released version of \f(CW$_PROGRAM\fR is available by \s-1HTTP \s0 +download: + http://download.joedog.org/pub/siege +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIsiege.config\fR\|(1) \fIbombardment\fR\|(1) \fIsiege2csv\fR\|(1) diff --git a/siege-4.1.6/doc/siege.config.1 b/siege-4.1.6/doc/siege.config.1 new file mode 100644 index 0000000..15f1ed9 --- /dev/null +++ b/siege-4.1.6/doc/siege.config.1 @@ -0,0 +1,183 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "SIEGE.CONFIG 1" +.TH SIEGE.CONFIG 1 "2023-01-05" "JoeDog" "siege.config utility" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SS "\s-1NAME\s0" +.IX Subsection "NAME" +\&\f(CWsiege\fR.config \- builds a siege.conf template in the user's home directory. +.SS "\s-1INTRODUCTION\s0" +.IX Subsection "INTRODUCTION" +\&\f(CWsiege\fR's default settings are stored in \f(CW$HOME\fR/.siege/siege.conf. This +utility will create a new \f(CWsiege\fR.conf if one does not already exist. +Generally speaking you should not have to run this command with \f(CWsiege\fR +releases equal or later to 4.0.0. +.PP +At start up, \f(CWsiege\fR checks for a \f(CW$HOME\fR/.siege/siege.conf. If +one does not exist, \f(CWsiege\fR will run this command to create a new one +then read that file to configure itself. +.SS "\s-1INVOCATION\s0" +.IX Subsection "INVOCATION" +The format for invoking siege.config is this: +.PP +.Vb 1 +\& siege.config [no arguments] +.Ve +.SS "\s-1AUTHOR\s0" +.IX Subsection "AUTHOR" +\&\f(CWJeffrey Fulmer, et al.\fR +.SS "\s-1COPYRIGHT\s0" +.IX Subsection "COPYRIGHT" +Copyright \f(CW\fR \f(CWJeffrey Fulmer, et al.\fR +.PP +This program is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 +General Public License as published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. +.PP +This program is distributed in the hope that it will be useful, but \s-1WITHOUT ANY WARRANTY\s0; without +even the implied warranty of \s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE. \s0 See the \s-1GNU\s0 +General Public License for more details. +.PP +You should have received a copy of the \s-1GNU\s0 General Public License along with this program; if not, +write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, \s-1MA 02139, USA.\s0 +.SS "\s-1AVAILABILITY\s0" +.IX Subsection "AVAILABILITY" +\&\f(CWsiege\fR.config is distributed as part of \f(CWsiege\fR +.SS "\s-1SEE ALSO\s0" +.IX Subsection "SEE ALSO" +$\fI_PROGRAM\fR\|(1) diff --git a/siege-4.1.6/doc/siege.config.1.in b/siege-4.1.6/doc/siege.config.1.in new file mode 100644 index 0000000..e185d2b --- /dev/null +++ b/siege-4.1.6/doc/siege.config.1.in @@ -0,0 +1,183 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "SIEGE.CONFIG 1" +.TH SIEGE.CONFIG 1 "2023-01-05" "JoeDog" "siege.config utility" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SS "\s-1NAME\s0" +.IX Subsection "NAME" +\&\f(CW$_PROGRAM\fR.config \- builds a siege.conf template in the user's home directory. +.SS "\s-1INTRODUCTION\s0" +.IX Subsection "INTRODUCTION" +\&\f(CW$_PROGRAM\fR's default settings are stored in \f(CW$HOME\fR/.siege/siege.conf. This +utility will create a new \f(CW$_PROGRAM\fR.conf if one does not already exist. +Generally speaking you should not have to run this command with \f(CW$_PROGRAM\fR +releases equal or later to 4.0.0. +.PP +At start up, \f(CW$_PROGRAM\fR checks for a \f(CW$HOME\fR/.$_PROGRAM/$_PROGRAM.conf. If +one does not exist, \f(CW$_PROGRAM\fR will run this command to create a new one +then read that file to configure itself. +.SS "\s-1INVOCATION\s0" +.IX Subsection "INVOCATION" +The format for invoking siege.config is this: +.PP +.Vb 1 +\& $_PROGRAM.config [no arguments] +.Ve +.SS "\s-1AUTHOR\s0" +.IX Subsection "AUTHOR" +\&\f(CW$_AUTHOR\fR <$_EMAIL> +.SS "\s-1COPYRIGHT\s0" +.IX Subsection "COPYRIGHT" +Copyright \f(CW$_YEARS\fR \f(CW$_AUTHOR\fR <$_EMAIL> +.PP +This program is free software; you can redistribute it and/or modify it under the terms of the \s-1GNU\s0 +General Public License as published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. +.PP +This program is distributed in the hope that it will be useful, but \s-1WITHOUT ANY WARRANTY\s0; without +even the implied warranty of \s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE. \s0 See the \s-1GNU\s0 +General Public License for more details. +.PP +You should have received a copy of the \s-1GNU\s0 General Public License along with this program; if not, +write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, \s-1MA 02139, USA.\s0 +.SS "\s-1AVAILABILITY\s0" +.IX Subsection "AVAILABILITY" +\&\f(CW$_PROGRAM\fR.config is distributed as part of \f(CW$_PROGRAM\fR +.SS "\s-1SEE ALSO\s0" +.IX Subsection "SEE ALSO" +$\fI_PROGRAM\fR\|(1) diff --git a/siege-4.1.6/doc/siege.config.pod b/siege-4.1.6/doc/siege.config.pod new file mode 100644 index 0000000..7a817c0 --- /dev/null +++ b/siege-4.1.6/doc/siege.config.pod @@ -0,0 +1,48 @@ +=head2 NAME + +$_PROGRAM.config - builds a siege.conf template in the user's home directory. + +=head2 INTRODUCTION + +$_PROGRAM's default settings are stored in $HOME/.siege/siege.conf. This +utility will create a new $_PROGRAM.conf if one does not already exist. +Generally speaking you should not have to run this command with $_PROGRAM +releases equal or later to 4.0.0. + +At start up, $_PROGRAM checks for a $HOME/.$_PROGRAM/$_PROGRAM.conf. If +one does not exist, $_PROGRAM will run this command to create a new one +then read that file to configure itself. + +=head2 INVOCATION + +The format for invoking siege.config is this: + + $_PROGRAM.config [no arguments] + +=head2 AUTHOR + +$_AUTHOR <$_EMAIL> + +=head2 COPYRIGHT + +Copyright $_YEARS $_AUTHOR <$_EMAIL> + +This program is free software; you can redistribute it and/or modify it under the terms of the GNU +General Public License as published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without +even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License along with this program; if not, +write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +=head2 AVAILABILITY + +$_PROGRAM.config is distributed as part of $_PROGRAM + +=head2 SEE ALSO + +$_PROGRAM(1) + diff --git a/siege-4.1.6/doc/siege.pod b/siege-4.1.6/doc/siege.pod new file mode 100644 index 0000000..c422d2d --- /dev/null +++ b/siege-4.1.6/doc/siege.pod @@ -0,0 +1,460 @@ +=pod + +=head1 NAME + +$_PROGRAM is a HTTP/FTP load tester and benchmarking utility. + +=head1 SYNOPSIS + + $_PROGRAM [options] + $_PROGRAM [options] + $_PROGRAM [options] -g + $_PROGRAM [options] -f urls.txt + +=head1 DESCRIPTION + +$_PROGRAM is a multi-threaded HTTP/FTP load tester and benchmarking +utility. It supports most of the features detailed in RFCs 2616 (HTTP) +and 959 (FTP). Properties can be set both from the command line and in +a configuration file. When the same property is set in both locations, +the command line takes precedence. + +The default configuration file is $HOME/.siege/siege.conf If you don't +have a $HOME/.siege directory and a siege.conf and cookies.txt file, +siege will generate a new config directory when it runs. You can +generate your config directory with the following command: siege.config + +=head1 OPTIONS + +=head2 Option Syntax + +$_PROGRAM supports long and short options. Short options look like this: + -c 25 + -c25 + +Long options look like this: + --concurrent=25 + +=head2 Option Values + +=over + +=item B<-V>, B<--version> + +Displays the $_PROGRAM release version and copyright information. + +=item B<-h>, B<--help> + +Prints a help message describing $_PROGRAM's command-line options. + +=item B<-C>, B<--config> + +Prints a detailed summary of all the currently configured options, most +of which are sent in $HOME/.siege/siege.conf + +=item B<-v>, B<--verbose> + +This directive puts $_PROGRAM into verbose mode which is actually a +default setting. This command-line option is useful when the config +file is set to 'verbose = false' since it will allow you to override +that. + +By default $_PROGRAM's verbose output is displayed in a color-coded +style. + * HTTP 2xx is coded blue + * HTTP 3xx is coded cyan + * HTTP 4xx is coded magenta + * HTTP 5xx is coded red + * HTTP cached is coded black + +NOTE: You can turn off color in siege.conf like this: 'color = off' + +=item B<-q>, B<--quiet> + +This directive silences $_PROGRAM. It is mostly used for scripting and +is often used in conjunction with -g/--get. You can detect the success +or failure of the run with its exit code. + + siege --quiet -g www.joedog.org + if [ $? -eq 0 ] ; then + echo "Success" + else + echo "Failure" + fi + +=item B<-g URL>, B<--get=URL> + +This option allows you to request a URL and watch the header +transaction. There is a corresponding config file directive that +allows you to set the request method for these requests: +gmethod = HEAD|GET + + $ siege -g "https://www.joedog.org/" + HEAD / HTTP/1.0 + Host: www.joedog.org + Accept: */* + User-Agent: Mozilla/5.0 (unknown-x86_64-linux-gnu) Siege/4.0.0-beta5 + Connection: close + + HTTP/1.1 200 OK + Server: cloudflare-nginx + Date: Tue, 09 Feb 2016 18:18:41 GMT + Content-Type: text/html; charset=UTF-8 + Connection: close + Last-Modified: Wed, 25 Nov 2015 18:46:08 GMT + Cache-Control: max-age=3, must-revalidate + Expires: Tue, 09 Feb 2016 18:18:44 GMT + Vary: Accept-Encoding,Cookie + CF-RAY: 27219407eeff084a-IAD + +NOTE: It's a best practice to quote the URL when it's passed to $_PROGRAM +from the the command-line. + +=item B<-p URL>, B<--print=URL> + +This option is similar to -g / --get but it PRINTS the page it received +from the server. + + $ siege -p http://www.joedog.org/ + GET / HTTP/1.0 + Host: www.joedog.org + Accept: */* + User-Agent: Mozilla/5.0 (unknown-x86_64-linux-gnu) Siege/4.0.3rc1 + Connection: close + + HTTP/1.1 301 Moved Permanently + Date: Wed, 19 Oct 2016 16:58:13 GMT + Content-Type: text/html; charset=iso-8859-1 + Location: https://www.joedog.org/ + Server: cloudflare-nginx + Connection: close + + + + + 301 Moved Permanently + +

Moved Permanently

+

The document has moved here.

+
+
Apache/2.2.31 (Amazon) Server at www.joedog.org Port 80
+ + +=item B<-c NUM>, B<--concurrent=NUM> + +This option allows you to set the concurrent number of users. The total +number of users is technically limited to your computer's resources. + +You should not configure more users than your web server is configured +to handle. For example, the default apache configuration is capped at +255 threads. If you run siege with -c 1024, then 769 siege users are +left waiting for an apache handler. + +For this reason, the default siege configuration is capped at 255 users. +You can increase that number inside siege.conf but if you make a mess, +then please don't complain to us. + +=item B<-r NUM>, B<--reps=NUM|once> + +This option tells each siege user how many times it should run. The value +should generally be a number greater than zero but it may be the keyword +'once'. + +If --reps=3 then each siege user will run three times before it exits. +However, if --reps=once, then each user will run through the urls.txt +file exactly one time. + +For more information about the urls.txt file, see option -f , +--file= + +=item B<-t NUMm>, B<--time=NUMm> + +This option is similar to --reps but instead of specifying the number +of times each user should run, it specifies the amount of time each +should run. + +The value format is "NUMm", where "NUM" is an amount of time and the "m" +modifier is either S, M, or H for seconds, minutes and hours. To run +$_PROGRAM for an hour, you could select any one of the following +combinations: -t3600S, -t60M, -t1H. The modifier is not case sensitive, +but it does require no space between the number and itself. + +=item B<-d NUM>, B<--delay=NUM> + +This option instructs $_PROGRAM how long to delay between each page +request. The value NUM represents the number of seconds between each +one. This number can be a decimal value. In fact the default is half a +second (--delay=0.5). + +The time between delay requests is NOT applied toward the transaction +time. If two 0.1 second transactions have a 2 second delay between them, +their average transaction time is 0.1 seconds. It is applied toward the +total elapsed time. In this scenario, the elapsed time would be 2.2 +seconds. + +NOTE: when the parser is enabled (see: -p/--parser), there is no delay +between the page and its elements, i.e., style sheets, javascripts, etc. +The delay is only between page requests. + +=item B<-b>, B<--benchmark> + +This directive tells siege to go into benchmark mode. This means there +is no delay between iterations. + +=item B<-i>, B<--internet> + +This option sets siege into what we call internet mode. It makes +requests from the urls.txt file (see: -f / --file=) in +random order. + +=item B<-f FILE>, B<--file=FILE> + +This option tells siege to work with a list of urls inside a text +file. The URLs are listed one per line. Unlike URLs that are passed as +a command-line argument, the URLs in this file should not be quoted. + +$_PROGRAM's urls.txt parser supports comments and variables. Since +$_PROGRAM uses the dollar sign ($) as a prefix for scalar variables, +you should escape any variable you want to send to the server: + + https://$(HOST)/siege/jsoner.php POST {"price": "\$10 per mile"} + +=item B<-R FILE>, B<--rc=FILE> + +This directive allows you to set an alternative resource file. By +default, the siegerc file is $HOME/.siege/siege.conf With this +directive, you can override the default and use an alternative file. + +=item B<-L FILE>, B<--log=FILE> + +The default log file is $prefix/var/log/siege.log. This directive +allows you to specify an alternative file for logging. + +=item B<-m "string">, B<--mark="string"> + +This option allows you to log a message to the log file before your +stats are written there. It is generally used to identify the +proceeding run. You could, for example, mark the file with your +command-line parameters so it's understood what configuration +generated the following data. + +=item B<-H "header: value">, B<--header="Header: value"> + +This options allows you to set a custom header in the request. +Generally speaking, this header will override an existing header. The +Cookie header is a special case. If you set -H "Cookie: value" then +siege will send that cookie in addition to the other ones. + +=item B<-A "string">, B<--agent="string"> + +This option allows you to override the default user-agent with a custom +one. + + siege --agent="JoeDog Jr. in da hizzle" + +Will set this header: + + User-agent: JoeDog Jr. in da hizzle + +Alternatively, you could set the User-agent with the -H/--header option +above. + +=item B<-T "text">, B<--content-type="text"> + +This is another set header shortcut. You use this option to override +the default Content-type request header. + +=item B<--no-parser> + +Turn off the HTML parser. When siege downloads a page, it parses it for +additional page elements such as style-sheets, javascript and images. It +will make additional requests for any elements it finds. With this option +enabled, siege will stop after it pulls down the main page. + +=item B<--no-follow> + +This directive instructs siege not to follow 3xx redirects. + +=back + +=head1 URL FORMAT + +$_PROGRAM supports RFC 1738 URL formats but it takes pains to implement +commonly used shortcuts for your convenience. In addition to RFC 1738 +formats, siege introduces its own URL format to indicate protocol method. + +An RFC 1738 URL looks like this: + ://:@:/;?# + +A $_PROGRAM URL with a method indicator looks like this: + ://:@:/ POST + +You can also post the contents of a file using the redirect character +like this: + ://:@:/ POST is the primary author of $_PROGRAM. Numerous people +throughout the globe also contributed to this program. Their +contributions are noted in the source code ChangeLog + +=head1 COPYRIGHT + +Copyright $_YEARS by $_AUTHOR <$_EMAIL> + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2 of the License, or (at your +option) any later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +675 Mass Ave, Cambridge, MA 02139, USA. + +=head1 AVAILABILITY + +The most recent released version of $_PROGRAM is available by HTTP +download: + http://download.joedog.org/pub/siege + +=head1 SEE ALSO + +siege.config(1) bombardment(1) siege2csv(1) + + diff --git a/siege-4.1.6/doc/siege2csv.1 b/siege-4.1.6/doc/siege2csv.1 new file mode 100644 index 0000000..6ae364a --- /dev/null +++ b/siege-4.1.6/doc/siege2csv.1 @@ -0,0 +1,173 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "BOMBARDMENT 1" +.TH BOMBARDMENT 1 "2023-01-05" "JoeDog" "siege2csv" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +bombardment \- Run siege with an ever\-increasing number of users +.SS "\s-1SYNOPSIS\s0" +.IX Subsection "SYNOPSIS" +bombardment [urlfile] [clients] [increment] [trials] [delay] bombardment urls.txt 5 10 20 1 +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +bombardment is part of the \f(CWsiege\fR distribution. It calls \f(CWsiege\fR with an initial number of +clients. When that run finishes, it immediately calls siege again with that number of clients plus +the increment. It does this the number of times specified in the fourth argument. +.SH "OPTIONS" +.IX Header "OPTIONS" +urlfile + The name of the file containing one or more URLs for siege to test. +.PP +clients + The initial number of clients to be used on the first run. +.PP +increment + The number of clients to add to each ensuing run. +.PP +trials + The number of times to run siege. +.PP +delay + The is the amount of time, in seconds, that each client will wait + between requests. The \f(CWsiege\fR default is overridden by bombardment +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIsiege\fR\|(1), \fIsiege2csv\fR\|(1) +.SH "AUTHOR" +.IX Header "AUTHOR" +Written by Peter Hutnick, et al. diff --git a/siege-4.1.6/doc/siege2csv.1.in b/siege-4.1.6/doc/siege2csv.1.in new file mode 100644 index 0000000..684662f --- /dev/null +++ b/siege-4.1.6/doc/siege2csv.1.in @@ -0,0 +1,173 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "BOMBARDMENT 1" +.TH BOMBARDMENT 1 "2023-01-05" "JoeDog" "siege2csv" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +bombardment \- Run $_PROGRAM with an ever\-increasing number of users +.SS "\s-1SYNOPSIS\s0" +.IX Subsection "SYNOPSIS" +bombardment [urlfile] [clients] [increment] [trials] [delay] bombardment urls.txt 5 10 20 1 +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +bombardment is part of the \f(CW$_PROGRAM\fR distribution. It calls \f(CW$_PROGRAM\fR with an initial number of +clients. When that run finishes, it immediately calls siege again with that number of clients plus +the increment. It does this the number of times specified in the fourth argument. +.SH "OPTIONS" +.IX Header "OPTIONS" +urlfile + The name of the file containing one or more URLs for siege to test. +.PP +clients + The initial number of clients to be used on the first run. +.PP +increment + The number of clients to add to each ensuing run. +.PP +trials + The number of times to run siege. +.PP +delay + The is the amount of time, in seconds, that each client will wait + between requests. The \f(CW$_PROGRAM\fR default is overridden by bombardment +.SH "SEE ALSO" +.IX Header "SEE ALSO" +\&\fIsiege\fR\|(1), \fIsiege2csv\fR\|(1) +.SH "AUTHOR" +.IX Header "AUTHOR" +Written by Peter Hutnick, et al. diff --git a/siege-4.1.6/doc/siege2csv.pod b/siege-4.1.6/doc/siege2csv.pod new file mode 100644 index 0000000..b8aa553 --- /dev/null +++ b/siege-4.1.6/doc/siege2csv.pod @@ -0,0 +1,42 @@ +=pod + +=head2 NAME + +bombardment - Run $_PROGRAM with an ever-increasing number of users + +=head2 SYNOPSIS + +bombardment [urlfile] [clients] [increment] [trials] [delay] bombardment urls.txt 5 10 20 1 + +=head2 DESCRIPTION + +bombardment is part of the $_PROGRAM distribution. It calls $_PROGRAM with an initial number of +clients. When that run finishes, it immediately calls siege again with that number of clients plus +the increment. It does this the number of times specified in the fourth argument. + +=head2 OPTIONS + +urlfile + The name of the file containing one or more URLs for siege to test. + +clients + The initial number of clients to be used on the first run. + +increment + The number of clients to add to each ensuing run. + +trials + The number of times to run siege. + +delay + The is the amount of time, in seconds, that each client will wait + between requests. The $_PROGRAM default is overridden by bombardment + +=head2 SEE ALSO + +siege(1), siege2csv(1) + +=head2 AUTHOR + +Peter Hutnick, et al. + diff --git a/siege-4.1.6/doc/siegerc b/siege-4.1.6/doc/siegerc new file mode 100644 index 0000000..ef86824 --- /dev/null +++ b/siege-4.1.6/doc/siegerc @@ -0,0 +1,634 @@ +# Updated by Siege %_VERSION%, %_DATE% +# Copyright 2000-2016 by %_AUTHOR% +# +# Siege configuration file -- edit as necessary +# For more information about configuring and running this program, +# visit: http://www.joedog.org/ + +# +# Variable declarations. You can set variables here for use in the +# directives below. Example: +# PROXY = proxy.joedog.org +# Reference variables inside ${} or $(), example: +# proxy-host = ${PROXY} +# +# +# You can also reference ENVIRONMENT variables without actually +# declaring them, example: +# +# logfile = $(HOME)/var/siege.log + +# +# Verbose mode: With this feature enabled, siege will print the +# result of each transaction to stdout. (Enabled by default) +# +# ex: verbose = true|false +# +verbose = true + +# +# Color mode: This option works in conjunction with verbose mode. +# It tells siege whether or not it should display its output in +# color-coded output. (Enabled by default) +# +# ex: color = on | off +# +color = on + +# +# Quiet mode: With this featured enabled, siege goes mostly silent. +# It will display the opening message and the final stats but nothing +# else. If you enable quiet mode with -g/--get then siege will be +# completely silent (ideal for scripting). In order to gauge the +# success of the run, you'll have to rely on the exit status: +# +# #!/bin/sh +# +# SIEGE=/home/jdfulmer/bin/siege +# +# $SIEGE -g https://www.joedog.org/ +# if [ $? -eq 0 ] ; then +# echo "Whoo hoo!" +# else +# echo "D'oh!" +# fi +# +# This is the same as running siege with -q/--quiet +# +# Ex: quiet = true +# +quiet = false + +# +# JSON output - With this feature enabled, siege will print the final stats as +# JSON to stdout. It monopolizes stdout, superceding verbose and debug modes. +# +# The default value is false. +# +# ex: json_output = true | false +# +json_output = false + + +# +# Show logfile location. By default, siege displays the logfile +# location at the end of every run when logging. You can turn this +# message off with this directive. +# +# ex: show-logfile = false +# +show-logfile = true + +# +# Default logging status, true turns logging on. +# ex: logging = true|false +# +logging = false + +# +# Logfile, the default siege logfile is $PREFIX/var/siege.log This +# directive allows you to choose an alternative log file. Environment +# variables may be used as shown in the examples: +# +# ex: logfile = /home/jeff/var/log/siege.log +# logfile = ${HOME}/var/log/siege.log +# logfile = ${LOGFILE} +# +# logfile = + + +# +# Get method: Use this directive to select an HTTP method for siege +# when it's run in get mode, i.e., siege -g/--get URL. You may select +# GET or HEAD. The default method is HEAD. As expected HEAD prints just +# the headers and GET prints the entire page. +# +# NOTE: This only applies when siege is invoked with -g/--get. All +# other requests methods will be made on the basis of the URL. +# +# example: gmethod = GET +# +gmethod = HEAD + +# +# Parser +# This directive allows you to turn on the html parser. With this +# feature enabled, siege will harvest resources like style sheets, +# images, javascript, etc. and make additional requests for those +# items. +# +# HTML parsing was added to version 4.0.0 It is enabled by default. +# When the parser is enabled, care must be given to other features. +# For example, we allow to set accept-encoding to anything you'd like +# but if you want to parse those pages, then you MUST set the encoding +# to a supported one. +# +# With the default options set, you should be able to enable the parser +# with success. +# +# Use this feature to enable it. (true = on, false = off) +# +# Example: parser = true +# +parser = true + +# +# No-follow +# When the parser is enabled, siege will grab HTML resources within +# the page and download those elements as well. This directive allows +# you to specify hostnames to which you do NOT want to make requests. +# +# You can repeat this directive as many times as you like. Enter one +# per line with 'key = value' syntax. +# +# Example: nofollow = www.joedog.org +# +nofollow = ad.doubleclick.net +nofollow = pagead2.googlesyndication.com +nofollow = ads.pubsqrd.com +nofollow = ib.adnxs.com + +# +# CSV Verbose format: with this option, you can choose to format +# verbose output in traditional siege format or comma separated +# format. The latter will allow you to redirect output to a file +# for import into a spread sheet, i.e., siege > file.csv +# +# ex: csv = true|false (default false) +# +# csv = true + +# +# Timestamp format: with this option, you can choose to print a +# timestamp each line of output. +# +# example: timestamp = true|false (default false) +# +# [Sat, 2010-11-20 10:39:13] HTTP/1.1 200 0.12 secs: 4003 bytes ==> / +# +# timestamp = true + +# +# Full URL verbose format: By default siege displays the URL path and +# not the full URL. With this option, you can instruct siege to show +# the complete URL. +# +# ex: fullurl = true|false (default false) +# +# HTTP/1.1 301 0.34 secs: 311 bytes ==> GET https://www.joedog.org/ +# +# fullurl = true + +# +# Display id: in verbose mode, display the siege user id associated +# with the HTTP transaction information +# +# ex: display-id = true|false +# +# 100) HTTP/1.1 200 0.31 secs: 35338 bytes ==> GET /images/bbc.jpg +# +# display-id = + +# +# Limit: This directive places a cap on the number of threads siege +# will generate. The default value is 255 which corresponds with +# apache's default value. If you schedule more clients than apache is +# configured to handle, then requests will back up and you will make a +# mess. DO NOT INCREASE THIS NUMBER UNLESS YOU CONFIGURED APACHE TO +# HANDLE MORE THAN 256 SIMULTANEOUS REQUESTS. +# +# ex: limit = 1023 (default is 255) +# +limit = 255 + +# +# HTTP protocol. Options HTTP/1.1 and HTTP/1.0. Some webservers have +# broken implementation of the 1.1 protocol which skews throughput +# evaluations. If you notice some siege clients hanging for extended +# periods of time, change this to HTTP/1.0 +# +# ex: protocol = HTTP/1.1 +# protocol = HTTP/1.0 +# +protocol = HTTP/1.1 + +# +# Chunked encoding is required by HTTP/1.1 protocol but siege allows +# you to turn it off as desired. This feature is generally more useful +# to siege developers than siege users. You should probably leave it +# set to 'true' +# +# ex: chunked = true +# +chunked = true + +# +# Cache revalidation. Siege supports cache revalidation for both ETag +# and Last-modified headers. If a copy is still fresh, the server +# responds with 304. While this feature is required for HTTP/1.1, it +# may not be welcomed for load testing. We allow you to breach the +# protocol and turn off caching +# +# HTTP/1.1 200 0.00 secs: 2326 bytes ==> /apache_pb.gif +# HTTP/1.1 304 0.00 secs: 0 bytes ==> /apache_pb.gif +# HTTP/1.1 304 0.00 secs: 0 bytes ==> /apache_pb.gif +# +# Siege also supports Cache-control headers. Consider this server +# response: Cache-Control: max-age=3 +# That tells siege to cache the file for three seconds. While it +# doesn't actually store the file, it will logically grab it from +# its cache. In verbose output, it designates a cached resource +# with (c): +# +# HTTP/1.1 200 0.25 secs: 159 bytes ==> GET /expires/ +# HTTP/1.1 200 1.48 secs: 498419 bytes ==> GET /expires/Otter_in_Southwold.jpg +# HTTP/1.1 200 0.24 secs: 159 bytes ==> GET /expires/ +# HTTP/1.1 200(C) 0.00 secs: 0 bytes ==> GET /expires/Otter_in_Southwold.jpg +# +# NOTE: with color enabled, cached URLs appear in green +# +# ex: cache = true +# +cache = false + +# +# Connection directive. Options "close" and "keep-alive" Starting with +# version 2.57, siege implements persistent connections in accordance +# to RFC 2068 using both chunked encoding and content-length directives +# to determine the page size. +# +# To run siege with persistent connections set this to keep-alive. +# +# CAUTION: Use the keep-alive directive with care. +# DOUBLE CAUTION: This directive does not work well on HPUX +# TRIPLE CAUTION: We don't recommend you set this to keep-alive +# ex: connection = close +# connection = keep-alive +# +connection = close + +# +# Default number of simulated concurrent users. This feature +# corresponds with the -c NUM / --concurrent=NULL command line +# argument. The command line takes precedent over this directive. +# +# ex: concurrent = 50 +# +concurrent = 25 + +# +# Default duration of the siege. The right hand argument has a modifier +# which specifies the time units, H=hours, M=minutes, and S=seconds. If +# a modifier is not specified, then minutes are assumed. +# +# NOTE: The command line argument -t5m / --time=5m takes precedence +# over this directive +# +# ex: time = 50M +# +# time = + +# +# Repetitions. The length of siege may be specified in client reps +# rather than a time duration. Instead of specifying a time span, +# you can tell each siege instance to hit the server X number of times. +# So if you chose 'reps = 20' and you've selected 10 concurrent users, +# then siege will hit the server 200 times. +# +# NOTE: The command line argument -r 5 / --reps=5 / --reps=once takes +# precedence over this directive +# +# ex: reps = 20 +# +# reps = + +# +# URLs file: Set at configuration time, the default URLs file is +# PREFIX/etc/urls.txt So if you configured the siege build with +# --prefix=/usr/local then the urls.txt file is installed in +# /usr/local/etc/urls.txt. Use the "file = " directive to configure +# an alternative URLs file. You may use environment variables +# as shown in the examples below: +# +# ex: file = /export/home/jdfulmer/MYURLS.txt +# file = $HOME/etc/urls.txt +# file = $URLSFILE +# +# NOTE: The command line -f FILE / --file=FILE takes precedence over +# this directive +# +# file = + +# +# Default URL, this is a single URL that you want to test. This is +# usually set at the command line with the -u option. When used, this +# option overrides the urls.txt (-f FILE/--file=FILE) option. You will +# HAVE to comment this out for in order to use the urls.txt file option. +# +# NOTE: you may do the same thing by passing a URL to siege at the +# command line: +# $ siege -c10 -r10 "www.joedog.org/" +# +# Generally, it's a good idea to wrap a command line URL in quotes +# +# ex: url = https://shemp.whoohoo.com/docs/index.jsp +# +# url = + +# +# Default delay between each request by a single thread. This value +# is not included in the request time. If a thread sleeps for two +# seconds then completes a 0.5 second request, the time of the request +# is 0.5 seconds, not 2.5 seconds. +# +# NOTE: the command line -d NUM / --delay=NULL takes precedent over +# this directive +# +# ex: delay = 1.5 +# delay = 5 +# +delay = 0.0 + +# +# Connection timeout value. Set the value in seconds for socket +# connection timeouts. The default value is 30 seconds. +# +# ex: timeout = 30 +# +# timeout = + +# +# Session expiration: This directive allows you to delete all cookies +# after you pass through the URLs. This means siege will grab a new +# session with each run through its URLs. The default value is false. +# +# ex: expire-session = true +# +# expire-session = + +# +# Cookie support: by default siege accepts cookies. This directive is +# available to disable that support. Set cookies to 'false' to refuse +# cookies. Set it to 'true' to accept them. The default value is true. +# If you want to maintain state with the server, then this MUST be set +# to true. +# +# ex: cookies = false +# +# cookies = + +# +# Failures: This is the number of total connection failures allowed +# before siege aborts. Connection failures (timeouts, socket failures, +# etc.) are combined with 400 and 500 level errors in the final stats, +# but those errors do not count against the abort total. If you set +# this total to 10, then siege will abort after ten socket timeouts, +# but it will NOT abort after ten 404s. This is designed to prevent a +# run-away mess on an unattended siege. +# +# The default value is 1024 +# +# ex: failures = 50 +# +# failures = + +# +# Internet simulation. If true, siege clients will hit the URLs in the +# urls.txt file randomly, thereby simulating internet usage. If false, +# siege will run through the urls.txt file in order from first to last +# and back again. +# +# ex: internet = true +# +internet = false + +# +# Default benchmarking value, If true, there is NO delay between server requests, +# siege runs as fast as the web server and the network will let it. Set this to +# false for load testing. +# +# ex: benchmark = true +# +benchmark = false + +# +# User-agent: With this directive you can set the siege user-agent The default +# agent is: JoeDog/1.40 [en] (X11; I; Siege #.##) With this directive, you can +# mimic various browsers or you can make up something fun. Limey, our English +# bulldog, was recovering from minor surgery at the time we added this feature +# so we like to dedicate the example in his honor: +# +# ex: user-agent = Limey The Bulldog +# +# Other examples harvested from our logs: +# Chrome: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36k +# IE 6: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) +# IE 7: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) +# IE 8: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1) +# IE 9: Mozilla/5.0 (MSIE 9.0; Windows NT 6.1; Trident/5.0) +# IE 10: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0) +# FF 3.6: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.4410) Gecko/20110902 Firefox/3.6 +# FF 9: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0 +# Safari: Mozilla/5.0 (Windows; U; Windows NT 6.1; tr-TR) AppleWebKit/533.20.25 Version/5.0.4 Safari/533.20.27 +# Opera: Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00 +# iPhone: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) Version/5.0.2 Mobile/8H7 Safari/6533.18.5 +# Android: Mozilla/5.0 (Linux; U; Android 2.3; en-us) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9 +# Kindle: Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 +# Goolge: Googlebot/2.1 (+http://www.googlebot.com/bot.html) +# Yahoo: Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp) +# +# user-agent = + +# +# Accept-encoding. This option allows you to report to the server the +# various content-encodings you support. If you're not using HTML parser +# (parser = false), then you can specify any encoding. When the parser is +# disabled, siege just reads the content then immediately discards it. +# However, if you use the parser, then you MUST set a supported content +# encoder. Currently, siege supports two: deflate and gzip. +# +# NOTE: We plan to add support for brotli and bzip2; you can hasten +# that effort by showing us some love: +# +# +# ex: accept-encoding = +# accept-encoding = gzip +# accept-encoding = deflate +# accept-encoding = gzip, deflate +accept-encoding = gzip, deflate + +# +# URL escaping was first added to version 3.0.3. It was considered +# experimental until version 3.0.9 when it was turned on by default. +# +# This feature remains in siege as a mechanism to turn off escape +# encoding. Here is an example of two URLs. The first has spaces +# included in the file name and in the second those spaces were +# encoded to %20. +# +# http://www.joedog.org/jukebox.php?band=the days of new +# http://www.joedog.org/jukebox.php?band=the%20days%20of%20the%20new +# +# ex: url-escaping = false +# +url-escaping = true + +# +# WWW-Authenticate credentials. Currently siege supports two types +# of HTTP authentication: digest and basic. It has partial support for +# Microsoft's NTLM but in practice that only works with the -g/--get +# option. (as of siege 3.1.1) +# +# When siege makes a request for a page that requires user authentication, +# it will search its logins for a matching realm. If it finds credentials +# for a realm, it will attempt to login with that username and password. +# +# If it fails to match the realm, it will use its default login credentials +# (which are designated with the keyword "all" or no specified realm. +# +# If you do not supply a realm, then it will default to "all" which instructs +# siege to send as default. +# +# You may enter many logins with each on its own separate line. The only +# limitation is memory and realm name. You can't use the same realm name +# more than once. +# +# ex: login = jdfulmer:topsecret:Admin +# login = jeff:supersecret:all +# login = jeff:supersecret +# +# login = + +# +# Login URL. This feature was designed to provide a login url in order +# to kick off a session with form-based authentication. If this directive +# has a value, then every siege client will make a request to it BEFORE it +# uses its list of URLs. +# +# NOTE: siege will only make this request once. After it's hit this URL +# it will not request it again until its next start-up. +# +# ex: login-url = http://eos.joedog.org/login.jsp POST name=jeff&pass=foo +# +# Starting with version 2.69, siege can make multiple login request on a +# thread-by-thread basis. As each thread is created it grab the next unused +# login URL in the list. If you schedule more threads than login-urls, new +# threads will wrap back around and loop back through the list. +# +# ex: login-url = http://www.haha.com/login.php?name=homer&pass=whoohoo +# login-url = http://www.haha.com/login.php?name=marge&pass=ohhomie +# login-url = http://www.haha.com/login.php?name=bart&pass=eatMyShorts +# +# login-url = + +# +# FTP login - There are two ways to login to an ftp server with siege. You +# can use this directive to set login credentials or you can set them in a +# URL in RFC-1738 format: ftp://user:pass@host.com/ink.jpg +# +# The format for this directive is USER:PASS:HOST separated by colon ':' +# The host field is optional. If you don't set a host, then siege will send +# the same user:pass to every FTP server. You may use this directive MULTIPLE +# times. Siege will store each instance in memory and send the appropriate +# credentials at login time depending on the hostname in the URL. +# +# ex: ftp-login: jdfulmer:whoohoo:ftp.joedog.org +# ftp-login: jdfulmer:password +# +# ftp-login = + +# +# FTP unique - This directive determines whether siege will upload files with +# the same name (and therefore overwrite whatever is on disk) or upload files +# each with a unique name. If true, siege will rewrite the file name with a +# timestamp in its name, i.e., p.jpg => p-3086060432.jpg +# +# The default value is true. +# +# ex: unique = false +# +unique = true + +# +# SSL-cert: This optional feature allows you to specify a path to a client +# certificate. It is not necessary to specify a certificate in order to use +# https. If you don't know why you would want one, then you probably don't need +# it. Use openssl to generate a certificate and key with the following command: +# +# $ openssl req -nodes -new -days 365 -newkey rsa:1024 -keyout key.pem -out cert.pem +# +# Specify a path to cert.pem as follows: +# ex: ssl-cert = /home/jeff/.certs/cert.pem +# +# ssl-cert = + +# +# SSL-key: Use this option to specify the key you generated with the command +# above. ex: ssl-key = /home/jeff/.certs/key.pem You may actually skip this +# option and combine both your cert and your key in a single file: +# $ cat key.pem > client.pem +# $ cat cert.pem >> client.pem +# Now set the path for ssl-cert: +# ex: ssl-cert = /home/jeff/.certs/client.pem +# (in this scenario, you comment out ssl-key) +# +# ssl-key = + +# +# SSL-timeout: This option sets a connection timeout for the ssl library +# ex: ssl-timeout = 30 +# +# ssl-timeout = + +# +# SSL-ciphers +# You can use this feature to select a specific ssl cipher for HTTPs. To +# view the ones available with your library run the following command: +# +# $ openssl ciphers +# +# ex: ssl-ciphers = EXP-RC4-MD5 +# +# ssl-ciphers = + +# +# Proxy Host: You can use siege to test a proxy server but you need to +# configure it to use one. You'll need to name a proxy host and the port +# it's listening on. The settings are proxy-host and proxy-port. The +# following example shows how to use them: +# +# ex: proxy-host = proxy.joedog.org +# proxy-port = 3123 +# +# proxy-host = +# proxy-port = + +# +# Proxy-Authenticate: When siege hits a proxy server which requires +# username and password authentication, it will this username and +# password to the server. The format is username, password and optional +# realm each separated by a colon. You may enter more than one proxy-login +# as long as each one has a different realm. If you do not enter a realm, +# then siege will send that login information to all proxy challenges. If +# you have more than one proxy-login, then scout will attempt to match the +# login to the realm. +# +# ex: proxy-login: jeff:secret:corporate +# proxy-login: jeff:whoohoo +# +# proxy-login = + +# +# Redirection support. By default, siege will follow a HTTP redirect to the +# Location provided by the server. If it's parser is enabled, then it will +# also follow and HTML META redirect. If, for some reason, you do not wish +# wish to follow redirects, then set this redirective to false. +# +# NOTE: redirect support is enabled by default. +# +# ex: follow-location = false +# +# follow-location = + +# +# end of siegerc diff --git a/siege-4.1.6/doc/siegerc.in b/siege-4.1.6/doc/siegerc.in new file mode 100644 index 0000000..ef86824 --- /dev/null +++ b/siege-4.1.6/doc/siegerc.in @@ -0,0 +1,634 @@ +# Updated by Siege %_VERSION%, %_DATE% +# Copyright 2000-2016 by %_AUTHOR% +# +# Siege configuration file -- edit as necessary +# For more information about configuring and running this program, +# visit: http://www.joedog.org/ + +# +# Variable declarations. You can set variables here for use in the +# directives below. Example: +# PROXY = proxy.joedog.org +# Reference variables inside ${} or $(), example: +# proxy-host = ${PROXY} +# +# +# You can also reference ENVIRONMENT variables without actually +# declaring them, example: +# +# logfile = $(HOME)/var/siege.log + +# +# Verbose mode: With this feature enabled, siege will print the +# result of each transaction to stdout. (Enabled by default) +# +# ex: verbose = true|false +# +verbose = true + +# +# Color mode: This option works in conjunction with verbose mode. +# It tells siege whether or not it should display its output in +# color-coded output. (Enabled by default) +# +# ex: color = on | off +# +color = on + +# +# Quiet mode: With this featured enabled, siege goes mostly silent. +# It will display the opening message and the final stats but nothing +# else. If you enable quiet mode with -g/--get then siege will be +# completely silent (ideal for scripting). In order to gauge the +# success of the run, you'll have to rely on the exit status: +# +# #!/bin/sh +# +# SIEGE=/home/jdfulmer/bin/siege +# +# $SIEGE -g https://www.joedog.org/ +# if [ $? -eq 0 ] ; then +# echo "Whoo hoo!" +# else +# echo "D'oh!" +# fi +# +# This is the same as running siege with -q/--quiet +# +# Ex: quiet = true +# +quiet = false + +# +# JSON output - With this feature enabled, siege will print the final stats as +# JSON to stdout. It monopolizes stdout, superceding verbose and debug modes. +# +# The default value is false. +# +# ex: json_output = true | false +# +json_output = false + + +# +# Show logfile location. By default, siege displays the logfile +# location at the end of every run when logging. You can turn this +# message off with this directive. +# +# ex: show-logfile = false +# +show-logfile = true + +# +# Default logging status, true turns logging on. +# ex: logging = true|false +# +logging = false + +# +# Logfile, the default siege logfile is $PREFIX/var/siege.log This +# directive allows you to choose an alternative log file. Environment +# variables may be used as shown in the examples: +# +# ex: logfile = /home/jeff/var/log/siege.log +# logfile = ${HOME}/var/log/siege.log +# logfile = ${LOGFILE} +# +# logfile = + + +# +# Get method: Use this directive to select an HTTP method for siege +# when it's run in get mode, i.e., siege -g/--get URL. You may select +# GET or HEAD. The default method is HEAD. As expected HEAD prints just +# the headers and GET prints the entire page. +# +# NOTE: This only applies when siege is invoked with -g/--get. All +# other requests methods will be made on the basis of the URL. +# +# example: gmethod = GET +# +gmethod = HEAD + +# +# Parser +# This directive allows you to turn on the html parser. With this +# feature enabled, siege will harvest resources like style sheets, +# images, javascript, etc. and make additional requests for those +# items. +# +# HTML parsing was added to version 4.0.0 It is enabled by default. +# When the parser is enabled, care must be given to other features. +# For example, we allow to set accept-encoding to anything you'd like +# but if you want to parse those pages, then you MUST set the encoding +# to a supported one. +# +# With the default options set, you should be able to enable the parser +# with success. +# +# Use this feature to enable it. (true = on, false = off) +# +# Example: parser = true +# +parser = true + +# +# No-follow +# When the parser is enabled, siege will grab HTML resources within +# the page and download those elements as well. This directive allows +# you to specify hostnames to which you do NOT want to make requests. +# +# You can repeat this directive as many times as you like. Enter one +# per line with 'key = value' syntax. +# +# Example: nofollow = www.joedog.org +# +nofollow = ad.doubleclick.net +nofollow = pagead2.googlesyndication.com +nofollow = ads.pubsqrd.com +nofollow = ib.adnxs.com + +# +# CSV Verbose format: with this option, you can choose to format +# verbose output in traditional siege format or comma separated +# format. The latter will allow you to redirect output to a file +# for import into a spread sheet, i.e., siege > file.csv +# +# ex: csv = true|false (default false) +# +# csv = true + +# +# Timestamp format: with this option, you can choose to print a +# timestamp each line of output. +# +# example: timestamp = true|false (default false) +# +# [Sat, 2010-11-20 10:39:13] HTTP/1.1 200 0.12 secs: 4003 bytes ==> / +# +# timestamp = true + +# +# Full URL verbose format: By default siege displays the URL path and +# not the full URL. With this option, you can instruct siege to show +# the complete URL. +# +# ex: fullurl = true|false (default false) +# +# HTTP/1.1 301 0.34 secs: 311 bytes ==> GET https://www.joedog.org/ +# +# fullurl = true + +# +# Display id: in verbose mode, display the siege user id associated +# with the HTTP transaction information +# +# ex: display-id = true|false +# +# 100) HTTP/1.1 200 0.31 secs: 35338 bytes ==> GET /images/bbc.jpg +# +# display-id = + +# +# Limit: This directive places a cap on the number of threads siege +# will generate. The default value is 255 which corresponds with +# apache's default value. If you schedule more clients than apache is +# configured to handle, then requests will back up and you will make a +# mess. DO NOT INCREASE THIS NUMBER UNLESS YOU CONFIGURED APACHE TO +# HANDLE MORE THAN 256 SIMULTANEOUS REQUESTS. +# +# ex: limit = 1023 (default is 255) +# +limit = 255 + +# +# HTTP protocol. Options HTTP/1.1 and HTTP/1.0. Some webservers have +# broken implementation of the 1.1 protocol which skews throughput +# evaluations. If you notice some siege clients hanging for extended +# periods of time, change this to HTTP/1.0 +# +# ex: protocol = HTTP/1.1 +# protocol = HTTP/1.0 +# +protocol = HTTP/1.1 + +# +# Chunked encoding is required by HTTP/1.1 protocol but siege allows +# you to turn it off as desired. This feature is generally more useful +# to siege developers than siege users. You should probably leave it +# set to 'true' +# +# ex: chunked = true +# +chunked = true + +# +# Cache revalidation. Siege supports cache revalidation for both ETag +# and Last-modified headers. If a copy is still fresh, the server +# responds with 304. While this feature is required for HTTP/1.1, it +# may not be welcomed for load testing. We allow you to breach the +# protocol and turn off caching +# +# HTTP/1.1 200 0.00 secs: 2326 bytes ==> /apache_pb.gif +# HTTP/1.1 304 0.00 secs: 0 bytes ==> /apache_pb.gif +# HTTP/1.1 304 0.00 secs: 0 bytes ==> /apache_pb.gif +# +# Siege also supports Cache-control headers. Consider this server +# response: Cache-Control: max-age=3 +# That tells siege to cache the file for three seconds. While it +# doesn't actually store the file, it will logically grab it from +# its cache. In verbose output, it designates a cached resource +# with (c): +# +# HTTP/1.1 200 0.25 secs: 159 bytes ==> GET /expires/ +# HTTP/1.1 200 1.48 secs: 498419 bytes ==> GET /expires/Otter_in_Southwold.jpg +# HTTP/1.1 200 0.24 secs: 159 bytes ==> GET /expires/ +# HTTP/1.1 200(C) 0.00 secs: 0 bytes ==> GET /expires/Otter_in_Southwold.jpg +# +# NOTE: with color enabled, cached URLs appear in green +# +# ex: cache = true +# +cache = false + +# +# Connection directive. Options "close" and "keep-alive" Starting with +# version 2.57, siege implements persistent connections in accordance +# to RFC 2068 using both chunked encoding and content-length directives +# to determine the page size. +# +# To run siege with persistent connections set this to keep-alive. +# +# CAUTION: Use the keep-alive directive with care. +# DOUBLE CAUTION: This directive does not work well on HPUX +# TRIPLE CAUTION: We don't recommend you set this to keep-alive +# ex: connection = close +# connection = keep-alive +# +connection = close + +# +# Default number of simulated concurrent users. This feature +# corresponds with the -c NUM / --concurrent=NULL command line +# argument. The command line takes precedent over this directive. +# +# ex: concurrent = 50 +# +concurrent = 25 + +# +# Default duration of the siege. The right hand argument has a modifier +# which specifies the time units, H=hours, M=minutes, and S=seconds. If +# a modifier is not specified, then minutes are assumed. +# +# NOTE: The command line argument -t5m / --time=5m takes precedence +# over this directive +# +# ex: time = 50M +# +# time = + +# +# Repetitions. The length of siege may be specified in client reps +# rather than a time duration. Instead of specifying a time span, +# you can tell each siege instance to hit the server X number of times. +# So if you chose 'reps = 20' and you've selected 10 concurrent users, +# then siege will hit the server 200 times. +# +# NOTE: The command line argument -r 5 / --reps=5 / --reps=once takes +# precedence over this directive +# +# ex: reps = 20 +# +# reps = + +# +# URLs file: Set at configuration time, the default URLs file is +# PREFIX/etc/urls.txt So if you configured the siege build with +# --prefix=/usr/local then the urls.txt file is installed in +# /usr/local/etc/urls.txt. Use the "file = " directive to configure +# an alternative URLs file. You may use environment variables +# as shown in the examples below: +# +# ex: file = /export/home/jdfulmer/MYURLS.txt +# file = $HOME/etc/urls.txt +# file = $URLSFILE +# +# NOTE: The command line -f FILE / --file=FILE takes precedence over +# this directive +# +# file = + +# +# Default URL, this is a single URL that you want to test. This is +# usually set at the command line with the -u option. When used, this +# option overrides the urls.txt (-f FILE/--file=FILE) option. You will +# HAVE to comment this out for in order to use the urls.txt file option. +# +# NOTE: you may do the same thing by passing a URL to siege at the +# command line: +# $ siege -c10 -r10 "www.joedog.org/" +# +# Generally, it's a good idea to wrap a command line URL in quotes +# +# ex: url = https://shemp.whoohoo.com/docs/index.jsp +# +# url = + +# +# Default delay between each request by a single thread. This value +# is not included in the request time. If a thread sleeps for two +# seconds then completes a 0.5 second request, the time of the request +# is 0.5 seconds, not 2.5 seconds. +# +# NOTE: the command line -d NUM / --delay=NULL takes precedent over +# this directive +# +# ex: delay = 1.5 +# delay = 5 +# +delay = 0.0 + +# +# Connection timeout value. Set the value in seconds for socket +# connection timeouts. The default value is 30 seconds. +# +# ex: timeout = 30 +# +# timeout = + +# +# Session expiration: This directive allows you to delete all cookies +# after you pass through the URLs. This means siege will grab a new +# session with each run through its URLs. The default value is false. +# +# ex: expire-session = true +# +# expire-session = + +# +# Cookie support: by default siege accepts cookies. This directive is +# available to disable that support. Set cookies to 'false' to refuse +# cookies. Set it to 'true' to accept them. The default value is true. +# If you want to maintain state with the server, then this MUST be set +# to true. +# +# ex: cookies = false +# +# cookies = + +# +# Failures: This is the number of total connection failures allowed +# before siege aborts. Connection failures (timeouts, socket failures, +# etc.) are combined with 400 and 500 level errors in the final stats, +# but those errors do not count against the abort total. If you set +# this total to 10, then siege will abort after ten socket timeouts, +# but it will NOT abort after ten 404s. This is designed to prevent a +# run-away mess on an unattended siege. +# +# The default value is 1024 +# +# ex: failures = 50 +# +# failures = + +# +# Internet simulation. If true, siege clients will hit the URLs in the +# urls.txt file randomly, thereby simulating internet usage. If false, +# siege will run through the urls.txt file in order from first to last +# and back again. +# +# ex: internet = true +# +internet = false + +# +# Default benchmarking value, If true, there is NO delay between server requests, +# siege runs as fast as the web server and the network will let it. Set this to +# false for load testing. +# +# ex: benchmark = true +# +benchmark = false + +# +# User-agent: With this directive you can set the siege user-agent The default +# agent is: JoeDog/1.40 [en] (X11; I; Siege #.##) With this directive, you can +# mimic various browsers or you can make up something fun. Limey, our English +# bulldog, was recovering from minor surgery at the time we added this feature +# so we like to dedicate the example in his honor: +# +# ex: user-agent = Limey The Bulldog +# +# Other examples harvested from our logs: +# Chrome: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36k +# IE 6: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) +# IE 7: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) +# IE 8: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1) +# IE 9: Mozilla/5.0 (MSIE 9.0; Windows NT 6.1; Trident/5.0) +# IE 10: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0) +# FF 3.6: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.4410) Gecko/20110902 Firefox/3.6 +# FF 9: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0 +# Safari: Mozilla/5.0 (Windows; U; Windows NT 6.1; tr-TR) AppleWebKit/533.20.25 Version/5.0.4 Safari/533.20.27 +# Opera: Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00 +# iPhone: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) Version/5.0.2 Mobile/8H7 Safari/6533.18.5 +# Android: Mozilla/5.0 (Linux; U; Android 2.3; en-us) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9 +# Kindle: Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 +# Goolge: Googlebot/2.1 (+http://www.googlebot.com/bot.html) +# Yahoo: Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp) +# +# user-agent = + +# +# Accept-encoding. This option allows you to report to the server the +# various content-encodings you support. If you're not using HTML parser +# (parser = false), then you can specify any encoding. When the parser is +# disabled, siege just reads the content then immediately discards it. +# However, if you use the parser, then you MUST set a supported content +# encoder. Currently, siege supports two: deflate and gzip. +# +# NOTE: We plan to add support for brotli and bzip2; you can hasten +# that effort by showing us some love: +# +# +# ex: accept-encoding = +# accept-encoding = gzip +# accept-encoding = deflate +# accept-encoding = gzip, deflate +accept-encoding = gzip, deflate + +# +# URL escaping was first added to version 3.0.3. It was considered +# experimental until version 3.0.9 when it was turned on by default. +# +# This feature remains in siege as a mechanism to turn off escape +# encoding. Here is an example of two URLs. The first has spaces +# included in the file name and in the second those spaces were +# encoded to %20. +# +# http://www.joedog.org/jukebox.php?band=the days of new +# http://www.joedog.org/jukebox.php?band=the%20days%20of%20the%20new +# +# ex: url-escaping = false +# +url-escaping = true + +# +# WWW-Authenticate credentials. Currently siege supports two types +# of HTTP authentication: digest and basic. It has partial support for +# Microsoft's NTLM but in practice that only works with the -g/--get +# option. (as of siege 3.1.1) +# +# When siege makes a request for a page that requires user authentication, +# it will search its logins for a matching realm. If it finds credentials +# for a realm, it will attempt to login with that username and password. +# +# If it fails to match the realm, it will use its default login credentials +# (which are designated with the keyword "all" or no specified realm. +# +# If you do not supply a realm, then it will default to "all" which instructs +# siege to send as default. +# +# You may enter many logins with each on its own separate line. The only +# limitation is memory and realm name. You can't use the same realm name +# more than once. +# +# ex: login = jdfulmer:topsecret:Admin +# login = jeff:supersecret:all +# login = jeff:supersecret +# +# login = + +# +# Login URL. This feature was designed to provide a login url in order +# to kick off a session with form-based authentication. If this directive +# has a value, then every siege client will make a request to it BEFORE it +# uses its list of URLs. +# +# NOTE: siege will only make this request once. After it's hit this URL +# it will not request it again until its next start-up. +# +# ex: login-url = http://eos.joedog.org/login.jsp POST name=jeff&pass=foo +# +# Starting with version 2.69, siege can make multiple login request on a +# thread-by-thread basis. As each thread is created it grab the next unused +# login URL in the list. If you schedule more threads than login-urls, new +# threads will wrap back around and loop back through the list. +# +# ex: login-url = http://www.haha.com/login.php?name=homer&pass=whoohoo +# login-url = http://www.haha.com/login.php?name=marge&pass=ohhomie +# login-url = http://www.haha.com/login.php?name=bart&pass=eatMyShorts +# +# login-url = + +# +# FTP login - There are two ways to login to an ftp server with siege. You +# can use this directive to set login credentials or you can set them in a +# URL in RFC-1738 format: ftp://user:pass@host.com/ink.jpg +# +# The format for this directive is USER:PASS:HOST separated by colon ':' +# The host field is optional. If you don't set a host, then siege will send +# the same user:pass to every FTP server. You may use this directive MULTIPLE +# times. Siege will store each instance in memory and send the appropriate +# credentials at login time depending on the hostname in the URL. +# +# ex: ftp-login: jdfulmer:whoohoo:ftp.joedog.org +# ftp-login: jdfulmer:password +# +# ftp-login = + +# +# FTP unique - This directive determines whether siege will upload files with +# the same name (and therefore overwrite whatever is on disk) or upload files +# each with a unique name. If true, siege will rewrite the file name with a +# timestamp in its name, i.e., p.jpg => p-3086060432.jpg +# +# The default value is true. +# +# ex: unique = false +# +unique = true + +# +# SSL-cert: This optional feature allows you to specify a path to a client +# certificate. It is not necessary to specify a certificate in order to use +# https. If you don't know why you would want one, then you probably don't need +# it. Use openssl to generate a certificate and key with the following command: +# +# $ openssl req -nodes -new -days 365 -newkey rsa:1024 -keyout key.pem -out cert.pem +# +# Specify a path to cert.pem as follows: +# ex: ssl-cert = /home/jeff/.certs/cert.pem +# +# ssl-cert = + +# +# SSL-key: Use this option to specify the key you generated with the command +# above. ex: ssl-key = /home/jeff/.certs/key.pem You may actually skip this +# option and combine both your cert and your key in a single file: +# $ cat key.pem > client.pem +# $ cat cert.pem >> client.pem +# Now set the path for ssl-cert: +# ex: ssl-cert = /home/jeff/.certs/client.pem +# (in this scenario, you comment out ssl-key) +# +# ssl-key = + +# +# SSL-timeout: This option sets a connection timeout for the ssl library +# ex: ssl-timeout = 30 +# +# ssl-timeout = + +# +# SSL-ciphers +# You can use this feature to select a specific ssl cipher for HTTPs. To +# view the ones available with your library run the following command: +# +# $ openssl ciphers +# +# ex: ssl-ciphers = EXP-RC4-MD5 +# +# ssl-ciphers = + +# +# Proxy Host: You can use siege to test a proxy server but you need to +# configure it to use one. You'll need to name a proxy host and the port +# it's listening on. The settings are proxy-host and proxy-port. The +# following example shows how to use them: +# +# ex: proxy-host = proxy.joedog.org +# proxy-port = 3123 +# +# proxy-host = +# proxy-port = + +# +# Proxy-Authenticate: When siege hits a proxy server which requires +# username and password authentication, it will this username and +# password to the server. The format is username, password and optional +# realm each separated by a colon. You may enter more than one proxy-login +# as long as each one has a different realm. If you do not enter a realm, +# then siege will send that login information to all proxy challenges. If +# you have more than one proxy-login, then scout will attempt to match the +# login to the realm. +# +# ex: proxy-login: jeff:secret:corporate +# proxy-login: jeff:whoohoo +# +# proxy-login = + +# +# Redirection support. By default, siege will follow a HTTP redirect to the +# Location provided by the server. If it's parser is enabled, then it will +# also follow and HTML META redirect. If, for some reason, you do not wish +# wish to follow redirects, then set this redirective to false. +# +# NOTE: redirect support is enabled by default. +# +# ex: follow-location = false +# +# follow-location = + +# +# end of siegerc diff --git a/siege-4.1.6/doc/urls.txt b/siege-4.1.6/doc/urls.txt new file mode 100644 index 0000000..138ffc7 --- /dev/null +++ b/siege-4.1.6/doc/urls.txt @@ -0,0 +1,27 @@ +# URLS file for siege +# -- +# Format the url entries in any of the following formats: +# http://www.whoohoo.com/index.html +# http://www/index.html +# www/index.html +# http://www.whoohoo.com/cgi-bin/howto/display.cgi?1013 +# Use the POST directive for pages that require it: +# http://www.whoohoo.com/cgi-bin/haha.cgi POST ha=1&ho=2 +# or POST content from a file: +# http://www.whoohoo.com/melvin.jsp POST &2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/siege +pkgincludedir = $(includedir)/siege +pkglibdir = $(libdir)/siege +pkglibexecdir = $(libexecdir)/siege +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +subdir = html +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/utils/mkinstalldirs README +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing aclocal-1.13 +ALLOCA = +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTHOR = Jeffrey Fulmer, et al. +AUTOCONF = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoconf +AUTOHEADER = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoheader +AUTOMAKE = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CC_R = +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = -I/include/zlib -I/include +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=none +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DATE = June-18-2024 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EMAIL = jeff@joedog.org +EXEEXT = +F77 = +FFLAGS = +GREP = /usr/bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LDL = -ldl +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LN_S = cp -pR +LTLIBOBJS = +MAKEINFO = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = siege +PACKAGE_BUGREPORT = +PACKAGE_NAME = siege +PACKAGE_STRING = siege 4.1.6 +PACKAGE_TARNAME = siege +PACKAGE_URL = +PACKAGE_VERSION = 4.1.6 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PLATFORM = pc-x86_64-linux-gnu +PROGRAM = siege +PTHREAD_CFLAGS = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +PTHREAD_LDFLAGS = -lpthread +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +SSL_CFLAGS = +SSL_INCLUDE = +SSL_LDFLAGS = +SSL_LIBS = +STRIP = strip +VERSION = 4.1.6 +WARN_CFLAGS = -W -Wall -Wunused-value +Z_CFLAGS = +Z_INCLUDE = -I/include/zlib -I/include +Z_LDFLAGS = -L/usr/lib +Z_LIBS = -lz +abs_builddir = /mnt/e/webserv/siege-4.1.6/html +abs_srcdir = /mnt/e/webserv/siege-4.1.6/html +abs_top_builddir = /mnt/e/webserv/siege-4.1.6 +abs_top_srcdir = /mnt/e/webserv/siege-4.1.6 +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +AUTOMAKE_OPTIONS = foreign no-dependencies +EXTRA_DIST = \ +README \ +basic.php \ +cache-control.php \ +cookie-expire.php \ +etag.php \ +login.php + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign html/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign html/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-exec-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags-am uninstall uninstall-am + + +install-exec-hook: + @echo "HTML pages not installed" + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/html/Makefile.am b/siege-4.1.6/html/Makefile.am new file mode 100644 index 0000000..6c3f7ad --- /dev/null +++ b/siege-4.1.6/html/Makefile.am @@ -0,0 +1,35 @@ +## +## html/Makefile.am +## +## Copyright (C) 2007 by +## Jeffrey Fulmer - , et al. +## This file is distributed as part of Siege +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## + +AUTOMAKE_OPTIONS = foreign no-dependencies + +EXTRA_DIST = \ +README \ +basic.php \ +cache-control.php \ +cookie-expire.php \ +etag.php \ +login.php + +install-exec-hook: + @echo "HTML pages not installed" + diff --git a/siege-4.1.6/html/Makefile.in b/siege-4.1.6/html/Makefile.in new file mode 100644 index 0000000..033f349 --- /dev/null +++ b/siege-4.1.6/html/Makefile.in @@ -0,0 +1,450 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = html +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/utils/mkinstalldirs README +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTHOR = @AUTHOR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CC_R = @CC_R@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMAIL = @EMAIL@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LDL = @LDL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PLATFORM = @PLATFORM@ +PROGRAM = @PROGRAM@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SSL_CFLAGS = @SSL_CFLAGS@ +SSL_INCLUDE = @SSL_INCLUDE@ +SSL_LDFLAGS = @SSL_LDFLAGS@ +SSL_LIBS = @SSL_LIBS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +Z_CFLAGS = @Z_CFLAGS@ +Z_INCLUDE = @Z_INCLUDE@ +Z_LDFLAGS = @Z_LDFLAGS@ +Z_LIBS = @Z_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = foreign no-dependencies +EXTRA_DIST = \ +README \ +basic.php \ +cache-control.php \ +cookie-expire.php \ +etag.php \ +login.php + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign html/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign html/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-exec-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags-am uninstall uninstall-am + + +install-exec-hook: + @echo "HTML pages not installed" + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/html/README b/siege-4.1.6/html/README new file mode 100644 index 0000000..bb5fcd4 --- /dev/null +++ b/siege-4.1.6/html/README @@ -0,0 +1,15 @@ +---------------- +SIEGE TEST PAGES +---------------- + +These pages are available to siege developers and users to test its +functionality. Each test is explained individually on the page itself. +Each application is self-contained, i.e., no dependencies. To install, +simply drop them inside your webserver's document root. Make sure the +server supports the associated language. + +Please send language ports of these pages to jeff@joedog.org + + + + diff --git a/siege-4.1.6/html/basic.php b/siege-4.1.6/html/basic.php new file mode 100644 index 0000000..ea296d7 --- /dev/null +++ b/siege-4.1.6/html/basic.php @@ -0,0 +1,26 @@ + + + SIEGE: Successful login + +

Logged in as "siege"

+ Congratulations. You are able to penetrate our defenses by entering the
username and password combination that we provided you on the login page. + + +Authorization required!"; + echo "You can log into this page with the following credentials:
"; + echo "Username: $user
"; + echo "Password: $pass
"; + echo "Realm (optional): $realm
"; + exit; +} +?> diff --git a/siege-4.1.6/html/cache-control.php b/siege-4.1.6/html/cache-control.php new file mode 100644 index 0000000..bf85de2 --- /dev/null +++ b/siege-4.1.6/html/cache-control.php @@ -0,0 +1,16 @@ + + +SIEGE: Cache control + +

Siege Cache-Control

+This page sets a max-age cache control for seconds. The header looks like this:
+ +Cache-Control: s-maxage=, max-age=, must-revalidate, proxy-revalidate + + + + + diff --git a/siege-4.1.6/html/cookie-expire.php b/siege-4.1.6/html/cookie-expire.php new file mode 100644 index 0000000..2b26a52 --- /dev/null +++ b/siege-4.1.6/html/cookie-expire.php @@ -0,0 +1,17 @@ +\n"; + +?> diff --git a/siege-4.1.6/html/etag.php b/siege-4.1.6/html/etag.php new file mode 100644 index 0000000..6a9ed10 --- /dev/null +++ b/siege-4.1.6/html/etag.php @@ -0,0 +1,30 @@ +"; + echo "SIEGE: Etity Tag Test"; + echo ""; + echo "

Siege Entity Tags

"; + echo "This page sets a entity tag every minute. The header looks like this:
"; + echo ""; + echo "$etag"; + echo "

"; + echo "To test ETags response, you should enable them in your apache webserver. To do this
"; + echo "on apache, you should add the following directive at the server, virtual host, directory
"; + echo "or .htaccess level:

"; + echo ""; + echo "FileETag INode MTime Size"; + echo ""; + echo ""; + echo ""; + } +?> diff --git a/siege-4.1.6/html/login.php b/siege-4.1.6/html/login.php new file mode 100644 index 0000000..b9e6e2e --- /dev/null +++ b/siege-4.1.6/html/login.php @@ -0,0 +1,92 @@ + $val){ + $arr[$key] = $vay; + switch($key){ + case "username": + $username = $val; + break; + case "password": + $password = $val; + break; + } + } + if(empty($username) && empty($password)){ + login(); + return; + } + if($username == "siege" && $password == "haha"){ + success(); + return; + } else { + header('HTTP/1.1 403 Forbidden', true, 403); + print << +SIEGE: Access denied + +

Access denied

+Seriously. We provided you with login credentials. How did you mess that up? + + +END; + exit; + } + } + + function success(){ + print << + SIEGE: Successful login + +

Logged in as "siege"

+ Congratulations. You are able to penetrate our defenses by entering the
username and password combination that we provided you on the login page. + + +END; + } + + function login(){ + print << + SIEGE: Login Page + +

Restricted area

+
+ + + + + + + + + + + + +
Welcome to the top-secret siege login page. To login, user the following credentials:

+ + username: siege
+ password: haha +
+

+ This page accepts both GET and POST requests. You may construct siege URLs in either manner:

+ + siege -c1 -r1 "http://my.server.com/login.php?username=siege&password=haha"
+
OR
+ + siege -c1 -r1 "http://my.server.com/login.php POST username=siege&password=haha" + +

+
Username:
Password:
+
+ + +END; + } + +?> diff --git a/siege-4.1.6/include/Makefile b/siege-4.1.6/include/Makefile new file mode 100644 index 0000000..874e37c --- /dev/null +++ b/siege-4.1.6/include/Makefile @@ -0,0 +1,640 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# include/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/siege +pkgincludedir = $(includedir)/siege +pkglibdir = $(libdir)/siege +pkglibexecdir = $(libexecdir)/siege +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +subdir = include +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(srcdir)/config.h.in $(top_srcdir)/utils/mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing aclocal-1.13 +ALLOCA = +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTHOR = Jeffrey Fulmer, et al. +AUTOCONF = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoconf +AUTOHEADER = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoheader +AUTOMAKE = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CC_R = +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = -I/include/zlib -I/include +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=none +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DATE = June-18-2024 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EMAIL = jeff@joedog.org +EXEEXT = +F77 = +FFLAGS = +GREP = /usr/bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LDL = -ldl +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LN_S = cp -pR +LTLIBOBJS = +MAKEINFO = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = siege +PACKAGE_BUGREPORT = +PACKAGE_NAME = siege +PACKAGE_STRING = siege 4.1.6 +PACKAGE_TARNAME = siege +PACKAGE_URL = +PACKAGE_VERSION = 4.1.6 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PLATFORM = pc-x86_64-linux-gnu +PROGRAM = siege +PTHREAD_CFLAGS = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +PTHREAD_LDFLAGS = -lpthread +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +SSL_CFLAGS = +SSL_INCLUDE = +SSL_LDFLAGS = +SSL_LIBS = +STRIP = strip +VERSION = 4.1.6 +WARN_CFLAGS = -W -Wall -Wunused-value +Z_CFLAGS = +Z_INCLUDE = -I/include/zlib -I/include +Z_LDFLAGS = -L/usr/lib +Z_LIBS = -lz +abs_builddir = /mnt/e/webserv/siege-4.1.6/include +abs_srcdir = /mnt/e/webserv/siege-4.1.6/include +abs_top_builddir = /mnt/e/webserv/siege-4.1.6 +abs_top_srcdir = /mnt/e/webserv/siege-4.1.6 +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +SUBDIRS = joedog +AM_CFLAGS = $(WARN_CFLAGS) +AUTOMAKE_OPTIONS = foreign no-dependencies +DISTCLEANFILES = config.h stamp-h stamp-h.in +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign include/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then rm -f stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status include/config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/include/Makefile.am b/siege-4.1.6/include/Makefile.am new file mode 100644 index 0000000..ac58f9b --- /dev/null +++ b/siege-4.1.6/include/Makefile.am @@ -0,0 +1,30 @@ +## +## include/Makefile.am +## +## Copyright (C) 2000-2007 by +## Jeffrey Fulmer - , et al. +## This file is distributed as part of Siege +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License along +## with this program; if not, write to the Free Software Foundation, Inc. +## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +## + +SUBDIRS = joedog + +WARN_CFLAGS = @WARN_CFLAGS@ +AM_CFLAGS = $(WARN_CFLAGS) + +AUTOMAKE_OPTIONS = foreign no-dependencies + +DISTCLEANFILES = config.h stamp-h stamp-h.in diff --git a/siege-4.1.6/include/Makefile.in b/siege-4.1.6/include/Makefile.in new file mode 100644 index 0000000..ff2865f --- /dev/null +++ b/siege-4.1.6/include/Makefile.in @@ -0,0 +1,640 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = include +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(srcdir)/config.h.in $(top_srcdir)/utils/mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTHOR = @AUTHOR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CC_R = @CC_R@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMAIL = @EMAIL@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LDL = @LDL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PLATFORM = @PLATFORM@ +PROGRAM = @PROGRAM@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SSL_CFLAGS = @SSL_CFLAGS@ +SSL_INCLUDE = @SSL_INCLUDE@ +SSL_LDFLAGS = @SSL_LDFLAGS@ +SSL_LIBS = @SSL_LIBS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +Z_CFLAGS = @Z_CFLAGS@ +Z_INCLUDE = @Z_INCLUDE@ +Z_LDFLAGS = @Z_LDFLAGS@ +Z_LIBS = @Z_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = joedog +AM_CFLAGS = $(WARN_CFLAGS) +AUTOMAKE_OPTIONS = foreign no-dependencies +DISTCLEANFILES = config.h stamp-h stamp-h.in +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign include/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then rm -f stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status include/config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/include/config.h b/siege-4.1.6/include/config.h new file mode 100644 index 0000000..27d2998 --- /dev/null +++ b/siege-4.1.6/include/config.h @@ -0,0 +1,288 @@ +/* include/config.h. Generated from config.h.in by configure. */ +/* include/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +/* #undef CRAY_STACKSEG_END */ + +/* Define to 1 if using `alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#define HAVE_ALLOCA_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ARPA_INET_H 1 + +/* Discovered a random device */ +#define HAVE_DEV_RANDOM 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `freehostent' function. */ +/* #undef HAVE_FREEHOSTENT */ + +/* Define to 1 if you have the `gethostbyname' function. */ +#define HAVE_GETHOSTBYNAME 1 + +/* Define to 1 if you have the `gethostbyname_r' function. */ +#define HAVE_GETHOSTBYNAME_R 1 + +/* Define to 1 if you have the `getipnodebyname' function. */ +/* #undef HAVE_GETIPNODEBYNAME */ + +/* Define to 1 if you have the `getopt_long' function. */ +#define HAVE_GETOPT_LONG 1 + +/* Define to 1 if you have the `gmtime_r' function. */ +#define HAVE_GMTIME_R 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +/* #undef HAVE_LIBNSL */ + +/* Define to 1 if you have the `socket' library (-lsocket). */ +/* #undef HAVE_LIBSOCKET */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the `localtime_r' function. */ +#define HAVE_LOCALTIME_R 1 + +/* Define to 1 if you have the `memcpy' function. */ +#define HAVE_MEMCPY 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETDB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NETINET_IN_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_OPENSSL_E_OS2_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_OPENSSL_E_OS_H */ + +/* Define to 1 if you have the `poll' function. */ +#define HAVE_POLL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_PTHREAD_H 1 + +/* Define to 1 if you have the `rand_r' function. */ +#define HAVE_RAND_R 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SCHED_H 1 + +/* Define if we have shl_load() */ +/* #undef HAVE_SHL_LOAD */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SIGNAL_H 1 + +/* Define to 1 if you have the `snprintf' function. */ +#define HAVE_SNPRINTF 1 + +/* Define to 1 if you have the `socket' function. */ +#define HAVE_SOCKET 1 + +/* Discovered OpenSSL library for HTTPS */ +/* #undef HAVE_SSL */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strlen' function. */ +#define HAVE_STRLEN 1 + +/* Define to 1 if you have the `strncasecmp' function. */ +#define HAVE_STRNCASECMP 1 + +/* Define to 1 if you have the `strncmp' function. */ +#define HAVE_STRNCMP 1 + +/* Define to 1 if you have the `strncpy' function. */ +#define HAVE_STRNCPY 1 + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SELECT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIMES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have that is POSIX.1 compatible. */ +#define HAVE_SYS_WAIT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Discovered ZLIB for gzip/compress encoding */ +#define HAVE_ZLIB 1 + +/* Name of package */ +#define PACKAGE "siege" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "siege" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "siege 4.1.6" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "siege" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "4.1.6" + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif + + +/* Version number of package */ +#define VERSION "4.1.6" + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to `short' if does not define. */ +/* #undef int16_t */ + +/* Define to `int' if does not define. */ +/* #undef int32_t */ + +/* Define to `long long' if does not define. */ +/* #undef int64_t */ + +/* Define to `char' if does not define. */ +/* #undef int8_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +/* Define to `int' if does not define. */ +/* #undef ssize_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef u_int32_t */ + +/* Define to `unsigned short' if does not define. */ +/* #undef uint16_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef uint32_t */ + +/* Define to `unsigned long long' if does not define. */ +/* #undef uint64_t */ + +/* Define to `unsigned char' if does not define. */ +/* #undef uint8_t */ diff --git a/siege-4.1.6/include/config.h.in b/siege-4.1.6/include/config.h.in new file mode 100644 index 0000000..7968f15 --- /dev/null +++ b/siege-4.1.6/include/config.h.in @@ -0,0 +1,287 @@ +/* include/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARPA_INET_H + +/* Discovered a random device */ +#undef HAVE_DEV_RANDOM + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ERRNO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `freehostent' function. */ +#undef HAVE_FREEHOSTENT + +/* Define to 1 if you have the `gethostbyname' function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define to 1 if you have the `gethostbyname_r' function. */ +#undef HAVE_GETHOSTBYNAME_R + +/* Define to 1 if you have the `getipnodebyname' function. */ +#undef HAVE_GETIPNODEBYNAME + +/* Define to 1 if you have the `getopt_long' function. */ +#undef HAVE_GETOPT_LONG + +/* Define to 1 if you have the `gmtime_r' function. */ +#undef HAVE_GMTIME_R + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +#undef HAVE_LIBNSL + +/* Define to 1 if you have the `socket' library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the `localtime_r' function. */ +#undef HAVE_LOCALTIME_R + +/* Define to 1 if you have the `memcpy' function. */ +#undef HAVE_MEMCPY + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETDB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETINET_IN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_E_OS2_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_E_OS_H + +/* Define to 1 if you have the `poll' function. */ +#undef HAVE_POLL + +/* Define to 1 if you have the header file. */ +#undef HAVE_PTHREAD_H + +/* Define to 1 if you have the `rand_r' function. */ +#undef HAVE_RAND_R + +/* Define to 1 if you have the header file. */ +#undef HAVE_SCHED_H + +/* Define if we have shl_load() */ +#undef HAVE_SHL_LOAD + +/* Define to 1 if you have the header file. */ +#undef HAVE_SIGNAL_H + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Discovered OpenSSL library for HTTPS */ +#undef HAVE_SSL + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strlen' function. */ +#undef HAVE_STRLEN + +/* Define to 1 if you have the `strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the `strncmp' function. */ +#undef HAVE_STRNCMP + +/* Define to 1 if you have the `strncpy' function. */ +#undef HAVE_STRNCPY + +/* Define to 1 if you have the `strstr' function. */ +#undef HAVE_STRSTR + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SOCKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIMES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have that is POSIX.1 compatible. */ +#undef HAVE_SYS_WAIT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Discovered ZLIB for gzip/compress encoding */ +#undef HAVE_ZLIB + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define as the return type of signal handlers (`int' or `void'). */ +#undef RETSIGTYPE + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `short' if does not define. */ +#undef int16_t + +/* Define to `int' if does not define. */ +#undef int32_t + +/* Define to `long long' if does not define. */ +#undef int64_t + +/* Define to `char' if does not define. */ +#undef int8_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to `int' if does not define. */ +#undef ssize_t + +/* Define to `unsigned int' if does not define. */ +#undef u_int32_t + +/* Define to `unsigned short' if does not define. */ +#undef uint16_t + +/* Define to `unsigned int' if does not define. */ +#undef uint32_t + +/* Define to `unsigned long long' if does not define. */ +#undef uint64_t + +/* Define to `unsigned char' if does not define. */ +#undef uint8_t diff --git a/siege-4.1.6/include/joedog/Makefile b/siege-4.1.6/include/joedog/Makefile new file mode 100644 index 0000000..8406d3a --- /dev/null +++ b/siege-4.1.6/include/joedog/Makefile @@ -0,0 +1,505 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# include/joedog/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/siege +pkgincludedir = $(includedir)/siege +pkglibdir = $(libdir)/siege +pkglibexecdir = $(libexecdir)/siege +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +subdir = include/joedog +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/utils/mkinstalldirs $(noinst_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing aclocal-1.13 +ALLOCA = +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTHOR = Jeffrey Fulmer, et al. +AUTOCONF = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoconf +AUTOHEADER = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoheader +AUTOMAKE = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CC_R = +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = -I/include/zlib -I/include +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=none +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DATE = June-18-2024 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EMAIL = jeff@joedog.org +EXEEXT = +F77 = +FFLAGS = +GREP = /usr/bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LDL = -ldl +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LN_S = cp -pR +LTLIBOBJS = +MAKEINFO = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = siege +PACKAGE_BUGREPORT = +PACKAGE_NAME = siege +PACKAGE_STRING = siege 4.1.6 +PACKAGE_TARNAME = siege +PACKAGE_URL = +PACKAGE_VERSION = 4.1.6 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PLATFORM = pc-x86_64-linux-gnu +PROGRAM = siege +PTHREAD_CFLAGS = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +PTHREAD_LDFLAGS = -lpthread +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +SSL_CFLAGS = +SSL_INCLUDE = +SSL_LDFLAGS = +SSL_LIBS = +STRIP = strip +VERSION = 4.1.6 +WARN_CFLAGS = -W -Wall -Wunused-value +Z_CFLAGS = +Z_INCLUDE = -I/include/zlib -I/include +Z_LDFLAGS = -L/usr/lib +Z_LIBS = -lz +abs_builddir = /mnt/e/webserv/siege-4.1.6/include/joedog +abs_srcdir = /mnt/e/webserv/siege-4.1.6/include/joedog +abs_top_builddir = /mnt/e/webserv/siege-4.1.6 +abs_top_srcdir = /mnt/e/webserv/siege-4.1.6 +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../../ +top_builddir = ../.. +top_srcdir = ../.. +noinst_HEADERS = getopt.h boolean.h path.h defs.h +DISTCLEANFILES = path.h +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/joedog/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign include/joedog/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/include/joedog/Makefile.am b/siege-4.1.6/include/joedog/Makefile.am new file mode 100644 index 0000000..7b6348e --- /dev/null +++ b/siege-4.1.6/include/joedog/Makefile.am @@ -0,0 +1,26 @@ +## +## include/joedog/Makefile.am +## +## Copyright (C) 2000, 2001, 2002 by +## Jeffrey Fulmer - , et al +## This file is distributed as part of Siege +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License along +## with this program; if not, write to the Free Software Foundation, Inc. +## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +## + +noinst_HEADERS = getopt.h boolean.h path.h defs.h + +DISTCLEANFILES = path.h + diff --git a/siege-4.1.6/include/joedog/Makefile.in b/siege-4.1.6/include/joedog/Makefile.in new file mode 100644 index 0000000..61aa829 --- /dev/null +++ b/siege-4.1.6/include/joedog/Makefile.in @@ -0,0 +1,505 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = include/joedog +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/utils/mkinstalldirs $(noinst_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTHOR = @AUTHOR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CC_R = @CC_R@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMAIL = @EMAIL@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LDL = @LDL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PLATFORM = @PLATFORM@ +PROGRAM = @PROGRAM@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SSL_CFLAGS = @SSL_CFLAGS@ +SSL_INCLUDE = @SSL_INCLUDE@ +SSL_LDFLAGS = @SSL_LDFLAGS@ +SSL_LIBS = @SSL_LIBS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +Z_CFLAGS = @Z_CFLAGS@ +Z_INCLUDE = @Z_INCLUDE@ +Z_LDFLAGS = @Z_LDFLAGS@ +Z_LIBS = @Z_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_HEADERS = getopt.h boolean.h path.h defs.h +DISTCLEANFILES = path.h +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/joedog/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign include/joedog/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/include/joedog/boolean.h b/siege-4.1.6/include/joedog/boolean.h new file mode 100644 index 0000000..33f8182 --- /dev/null +++ b/siege-4.1.6/include/joedog/boolean.h @@ -0,0 +1,34 @@ +/** + * Copyright (C) 2002-2013 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef BOOLEAN_H +#define BOOLEAN_H + +typedef enum {boolean_false=0,boolean_true=1} BOOLEAN; + +#ifndef FALSE +# define FALSE boolean_false +#endif /*FALSE*/ + +#ifndef TRUE +# define TRUE boolean_true +#endif /*TRUE*/ + +#endif/*BOOLEAN_H*/ diff --git a/siege-4.1.6/include/joedog/defs.h b/siege-4.1.6/include/joedog/defs.h new file mode 100644 index 0000000..59e7cc0 --- /dev/null +++ b/siege-4.1.6/include/joedog/defs.h @@ -0,0 +1,65 @@ +/** + * Copyright (C) 2002-2015 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef JOEDOG_DEFS_H +#define JOEDOG_DEFS_H +#define private static +#define public + +#define ISALPHA(x) ((x >= 'a' && x <= 'z') || (x >= 'A' && x <= 'Z')) +#define ISSEPARATOR(x) (('='==(x))||(':'==(x))) +#define ISUPPER(x) ((unsigned)(x)-'A'<='Z'-'A') +#define ISLOWER(x) ((unsigned)(x)-'a'<='z'-'a') +#define ISSPACE(x) isspace((unsigned char)(x)) +#define ISOPERAND(x) ('<'==(x)||'>'==(x)||'='==(x)) +#define ISDIGIT(x) isdigit ((unsigned char)(x)) +#define ISXDIGIT(c) (((((((((c) - 48U) & 255) * 18 / 17 * 52 / 51 * 58 / 114 \ + * 13 / 11 * 14 / 13 * 35 + 35) / 36 * 35 / 33 * 34 / 33 * 35 / 170 ^ 4) \ + - 3) & 255) ^ 1) <= 2U) +/** + * Lifted from wget: Convert a sequence of ASCII hex digits X and Y + * to a number between 0 and 255. Uses XDIGIT_TO_NUM for conversion + * of individual digits. + */ +#define XDIGIT_TO_NUM(x) ((x) < 'A' ? (x) - '0' : TOUPPER (x) - 'A' + 10) +#define XNUM_TO_DIGIT(x) ("0123456789ABCDEF"[x]) +#define XNUM_TO_digit(x) ("0123456789abcdef"[x]) +#define X2DIGITS_TO_NUM(h1, h2) ((XDIGIT_TO_NUM (h1) << 4) + XDIGIT_TO_NUM (h2)) + +#define ISNUMBER(v) (((v) > (char)0x2f) && ((v) < (char)0x3a)) +#define ISQUOTE(x) (x == '"' || x == '\'') +#if STDC_HEADERS +# define TOLOWER(Ch) tolower (Ch) +# define TOUPPER(Ch) toupper (Ch) +#else +# define TOLOWER(Ch) (ISUPPER (Ch) ? tolower (Ch) : (Ch)) +# define TOUPPER(Ch) (ISLOWER (Ch) ? toupper (Ch) : (Ch)) +#endif + +typedef void (*method)(void *v); + +#ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +#endif /*EXIT_SUCESS*/ +#ifndef EXIT_FAILURE +# define EXIT_FAILURE 1 +#endif /*EXIT_FAILURE*/ + +#endif/*JOEDOG_DEFS_H*/ diff --git a/siege-4.1.6/include/joedog/getopt.h b/siege-4.1.6/include/joedog/getopt.h new file mode 100644 index 0000000..e081fd1 --- /dev/null +++ b/siege-4.1.6/include/joedog/getopt.h @@ -0,0 +1,171 @@ +/* Declarations for getopt. + Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + $Id: getopt.h,v 1.2 2013/08/19 14:07:45 jdfulmer Exp $ +*/ + +#ifndef _GETOPT_H + +#ifndef __need_getopt +# define _GETOPT_H 1 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +extern char *optarg; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +extern int optind; + +/* Callers store zero here to inhibit the error message `getopt' prints + for unrecognized options. */ + +extern int opterr; + +/* Set to an option character which was unrecognized. */ + +extern int optopt; + +#ifndef __need_getopt +/* Describe the long-named options requested by the application. + The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector + of `struct option' terminated by an element containing a name which is + zero. + + The field `has_arg' is: + no_argument (or 0) if the option does not take an argument, + required_argument (or 1) if the option requires an argument, + optional_argument (or 2) if the option takes an optional argument. + + If the field `flag' is not NULL, it points to a variable that is set + to the value given in the field `val' when the option is found, but + left unchanged if the option is not found. + + To have a long-named option do something other than set an `int' to + a compiled-in constant, such as set a value from `optarg', set the + option's `flag' field to zero and its `val' field to a nonzero + value (the equivalent single-letter option character, if there is + one). For long options that have a zero `flag' field, `getopt' + returns the contents of the `val' field. */ + +struct option +{ +# if defined __STDC__ && __STDC__ + const char *name; +# else + char *name; +# endif + /* has_arg can't be an enum because some compilers complain about + type mismatches in all the code that assumes it is an int. */ + int has_arg; + int *flag; + int val; +}; + +/* Names for the values of the `has_arg' field of `struct option'. */ + +# define no_argument 0 +# define required_argument 1 +# define optional_argument 2 +#endif /* need getopt */ + + +/* Get definitions and prototypes for functions to process the + arguments in ARGV (ARGC of them, minus the program name) for + options given in OPTS. + + Return the option character from OPTS just read. Return -1 when + there are no more options. For unrecognized options, or options + missing arguments, `optopt' is set to the option letter, and '?' is + returned. + + The OPTS string is a list of characters which are recognized option + letters, optionally followed by colons, specifying that that letter + takes an argument, to be placed in `optarg'. + + If a letter in OPTS is followed by two colons, its argument is + optional. This behavior is specific to the GNU `getopt'. + + The argument `--' causes premature termination of argument + scanning, explicitly telling `getopt' that there are no more + options. + + If OPTS begins with `--', then non-option arguments are treated as + arguments to the option '\0'. This behavior is specific to the GNU + `getopt'. */ + +#if defined __STDC__ && __STDC__ +# ifdef __GNU_LIBRARY__ +/* Many other libraries have conflicting prototypes for getopt, with + differences in the consts, in stdlib.h. To avoid compilation + errors, only prototype getopt for the GNU C library. */ +extern int getopt (int __argc, char *const *__argv, const char *__shortopts); +# else /* not __GNU_LIBRARY__ */ +extern int getopt (); +# endif /* __GNU_LIBRARY__ */ + +# ifndef __need_getopt +extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts, + const struct option *__longopts, int *__longind); +extern int getopt_long_only (int __argc, char *const *__argv, + const char *__shortopts, + const struct option *__longopts, int *__longind); + +/* Internal only. Users should not call this directly. */ +extern int _getopt_internal (int __argc, char *const *__argv, + const char *__shortopts, + const struct option *__longopts, int *__longind, + int __long_only); +# endif +#else /* not __STDC__ */ +extern int getopt (); +# ifndef __need_getopt +extern int getopt_long (); +extern int getopt_long_only (); + +extern int _getopt_internal (); +# endif +#endif /* __STDC__ */ + +#ifdef __cplusplus +} +#endif + +/* Make sure we later can get all the definitions and declarations. */ +#undef __need_getopt + +#endif /* getopt.h */ diff --git a/siege-4.1.6/include/joedog/path.h b/siege-4.1.6/include/joedog/path.h new file mode 100644 index 0000000..2411d3a --- /dev/null +++ b/siege-4.1.6/include/joedog/path.h @@ -0,0 +1,32 @@ +/** + * Path Header + * + * Copyright (C) 2000-2013 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#ifndef JOEDOG_PATH_H +#define JOEDOG_PATH_H + +#define SIEGE_HOME "/usr/local" +#define URL_FILE "/usr/local/etc/urls.txt" +#define CNF_FILE "/usr/local/etc/siegerc" +#define LOG_FILE "/usr/local/var/log/siege.log" +#define PLATFORM "pc-x86_64-linux-gnu" + +#endif/*JOEDOG_PATH_H*/ diff --git a/siege-4.1.6/include/stamp-h1 b/siege-4.1.6/include/stamp-h1 new file mode 100644 index 0000000..b330768 --- /dev/null +++ b/siege-4.1.6/include/stamp-h1 @@ -0,0 +1 @@ +timestamp for include/config.h diff --git a/siege-4.1.6/install-sh b/siege-4.1.6/install-sh new file mode 100644 index 0000000..0ae12c0 --- /dev/null +++ b/siege-4.1.6/install-sh @@ -0,0 +1,401 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2005-11-07.23 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +posix_glob= +posix_mkdir= + +# Symbolic mode for testing mkdir with directories. +# It is the same as 755, but also tests that "u+" works. +test_mode=u=rwx,g=rx,o=rx,u+wx + +# Desired mode of installed file. +mode=0755 + +# Desired mode of newly created intermediate directories. +# It is empty if not known yet. +intermediate_mode= + +chmodcmd=$chmodprog +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +test -n "$dir_arg" || trap '(exit $?); exit' 1 2 13 15 + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + posix_mkdir=false + if $mkdirprog -m $test_mode -p -- / >/dev/null 2>&1; then + posix_mkdir=true + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./-m "$test_mode" ./-p ./-- 2>/dev/null + fi ;; + esac + + if + $posix_mkdir && { + + # With -d, create the new directory with the user-specified mode. + # Otherwise, create it using the same intermediate mode that + # mkdir -p would use when creating intermediate directories. + # POSIX says that this mode is "$(umask -S),u+wx", so use that + # if umask -S works. + + if test -n "$dir_arg"; then + mkdir_mode=$mode + else + case $intermediate_mode in + '') + if umask_S=`(umask -S) 2>/dev/null`; then + intermediate_mode=$umask_S,u+wx + else + intermediate_mode=$test_mode + fi ;; + esac + mkdir_mode=$intermediate_mode + fi + + $mkdirprog -m "$mkdir_mode" -p -- "$dstdir" + } + then : + else + + # mkdir does not conform to POSIX, or it failed possibly due to + # a race condition. Create the directory the slow way, step by + # step, checking for races as we go. + + case $dstdir in + /*) pathcomp=/ ;; + -*) pathcomp=./ ;; + *) pathcomp= ;; + esac + + case $posix_glob in + '') + if (set -f) 2>/dev/null; then + posix_glob=true + else + posix_glob=false + fi ;; + esac + + oIFS=$IFS + IFS=/ + $posix_glob && set -f + set fnord $dstdir + shift + $posix_glob && set +f + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # Don't fail if two instances are running concurrently. + test -d "$pathcomp" || exit 1 + fi + pathcomp=$pathcomp/ + done + obsolete_mkdir_used=true + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd "$mode" "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$mode" "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dst"; then + $doit $rmcmd -f "$dst" 2>/dev/null \ + || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ + && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ + || { + echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + } || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/siege-4.1.6/libtool b/siege-4.1.6/libtool new file mode 100644 index 0000000..282c915 --- /dev/null +++ b/siege-4.1.6/libtool @@ -0,0 +1,7574 @@ +#! /bin/bash + +# libtoolT - Provide generalized library-building support services. +# Generated automatically by siege (GNU siege 4.1.6) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED="/usr/bin/sed" + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="/usr/bin/sed -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags=" CXX" + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host PC-MATISSE: + +# Shell to use when invoking shell scripts. +SHELL="/bin/bash" + +# Whether or not to build shared libraries. +build_libtool_libs=yes + +# Whether or not to build static libraries. +build_old_libs=yes + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=no + +# Whether or not to optimize for fast installation. +fast_install=yes + +# The host system. +host_alias= +host=x86_64-pc-linux-gnu +host_os=linux-gnu + +# The build system. +build_alias= +build=x86_64-pc-linux-gnu +build_os=linux-gnu + +# An echo program that does not interpret backslashes. +echo="echo" + +# The archiver. +AR="ar" +AR_FLAGS="cru" + +# A C compiler. +LTCC="gcc" + +# LTCC compiler flags. +LTCFLAGS="-g -O2" + +# A language-specific compiler. +CC="gcc" + +# Is the compiler the GNU C compiler? +with_gcc=yes + +gcc_dir=`gcc -print-file-name=. | /usr/bin/sed 's,/\.$,,'` +gcc_ver=`gcc -dumpversion` + +# An ERE matcher. +EGREP="/usr/bin/grep -E" + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# Whether we need hard or soft links. +LN_S="cp -pR" + +# A BSD-compatible nm program. +NM="/usr/bin/nm -B" + +# A symbol stripping program +STRIP="strip" + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=file + +# Used on cygwin: DLL creation program. +DLLTOOL="dlltool" + +# Used on cygwin: object dumper. +OBJDUMP="objdump" + +# Used on cygwin: assembler. +AS="as" + +# The name of the directory that contains temporary libtool files. +objdir=.libs + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Object file suffix (normally "o"). +objext="o" + +# Old archive suffix (normally "a"). +libext="a" + +# Shared library suffix (normally ".so"). +shrext_cmds='.so' + +# Executable file suffix (normally ""). +exeext="" + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" +pic_mode=default + +# What is the maximum length of a command? +max_cmd_len=32768 + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Must we lock files when doing compilation? +need_locks="no" + +# Do we need the lib prefix for modules? +need_lib_prefix=no + +# Do we need a version for libraries? +need_version=no + +# Whether dlopen is supported. +dlopen_support=unknown + +# Whether dlopen of programs is supported. +dlopen_self=unknown + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=unknown + +# Compiler flag to prevent dynamic linking. +link_static_flag="-static" + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\${wl}--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec="" + +# Library versioning type. +version_type=linux + +# Format of library name prefix. +libname_spec="lib\$name" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" + +# The coded name of the library, if different from the real name. +soname_spec="\${libname}\${release}\${shared_ext}\$major" + +# Commands used to build and install an old-style archive. +RANLIB="ranlib" +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib" +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib" +old_postuninstall_cmds="" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build and install a shared archive. +archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ + \$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ + \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" +postinstall_cmds="" +postuninstall_cmds="" + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds="" +module_expsym_cmds="" + +# Commands to strip libraries. +old_striplib="strip --strip-debug" +striplib="strip --strip-unneeded" + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=`echo "" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"` + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=`echo "" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"` + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps="" + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps="" + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=`echo "" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"` + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method="pass_all" + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd="\$MAGIC_CMD" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that forces no undefined symbols. +no_undefined_flag="" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval="" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" + +# This is the shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# This is the shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=no + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=yes + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist. +hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" + +# If ld is used when linking, flag to hardcode $libdir into +# a binary during linking. This must work even if $libdir does +# not exist. +hardcode_libdir_flag_spec_ld="" + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator="" + +# Set to yes if using DIR/libNAME during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=no + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=no + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=no + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=unknown + +# Compile-time system search path for libraries +sys_lib_search_path_spec=`echo "/lib64 /usr/lib64 /usr/local/lib64" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"` + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/lib/x86_64-linux-gnu/libfakeroot /usr/lib/wsl/lib /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 " + +# Fix the shell variable $srcfile for the compiler. +fix_srcfile_path="" + +# Set to yes if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds="" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + +# Symbols that must always be exported. +include_expsyms="" + +# ### END LIBTOOL CONFIG + +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.22 +TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" + +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + extracted_serial=`expr $extracted_serial + 1` + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + *.obj) xform=obj ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -pg pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ + -t[45]*|-txscale*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. +# for path in $notinst_path; do +# lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` +# deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` +# dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` +# done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + else + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \$*\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` + else + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# Libtool was configured on host PC-MATISSE: + +# Shell to use when invoking shell scripts. +SHELL="/bin/bash" + +# Whether or not to build shared libraries. +build_libtool_libs=yes + +# Whether or not to build static libraries. +build_old_libs=yes + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=no + +# Whether or not to optimize for fast installation. +fast_install=yes + +# The host system. +host_alias= +host=x86_64-pc-linux-gnu +host_os=linux-gnu + +# The build system. +build_alias= +build=x86_64-pc-linux-gnu +build_os=linux-gnu + +# An echo program that does not interpret backslashes. +echo="echo" + +# The archiver. +AR="ar" +AR_FLAGS="cru" + +# A C compiler. +LTCC="gcc" + +# LTCC compiler flags. +LTCFLAGS="-g -O2" + +# A language-specific compiler. +CC="g++" + +# Is the compiler the GNU C compiler? +with_gcc=yes + +gcc_dir=`gcc -print-file-name=. | /usr/bin/sed 's,/\.$,,'` +gcc_ver=`gcc -dumpversion` + +# An ERE matcher. +EGREP="/usr/bin/grep -E" + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# Whether we need hard or soft links. +LN_S="cp -pR" + +# A BSD-compatible nm program. +NM="/usr/bin/nm -B" + +# A symbol stripping program +STRIP="strip" + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=file + +# Used on cygwin: DLL creation program. +DLLTOOL="dlltool" + +# Used on cygwin: object dumper. +OBJDUMP="objdump" + +# Used on cygwin: assembler. +AS="as" + +# The name of the directory that contains temporary libtool files. +objdir=.libs + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Object file suffix (normally "o"). +objext="o" + +# Old archive suffix (normally "a"). +libext="a" + +# Shared library suffix (normally ".so"). +shrext_cmds='.so' + +# Executable file suffix (normally ""). +exeext="" + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" +pic_mode=default + +# What is the maximum length of a command? +max_cmd_len=32768 + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Must we lock files when doing compilation? +need_locks="no" + +# Do we need the lib prefix for modules? +need_lib_prefix=no + +# Do we need a version for libraries? +need_version=no + +# Whether dlopen is supported. +dlopen_support=unknown + +# Whether dlopen of programs is supported. +dlopen_self=unknown + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=unknown + +# Compiler flag to prevent dynamic linking. +link_static_flag="-static" + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\${wl}--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec="" + +# Library versioning type. +version_type=linux + +# Format of library name prefix. +libname_spec="lib\$name" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" + +# The coded name of the library, if different from the real name. +soname_spec="\${libname}\${release}\${shared_ext}\$major" + +# Commands used to build and install an old-style archive. +RANLIB="ranlib" +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib" +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib" +old_postuninstall_cmds="" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build and install a shared archive. +archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib" +postinstall_cmds="" +postuninstall_cmds="" + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds="" +module_expsym_cmds="" + +# Commands to strip libraries. +old_striplib="strip --strip-debug" +striplib="strip --strip-unneeded" + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=`echo "/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"` + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=`echo "/usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"` + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps="" + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s" + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=`echo "-L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.." | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"` + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method="pass_all" + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd="\$MAGIC_CMD" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that forces no undefined symbols. +no_undefined_flag="" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval="" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'" + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'" + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (lt_ptr) \\&\\2},/p'" + +# This is the shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# This is the shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=no + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=yes + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist. +hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir" + +# If ld is used when linking, flag to hardcode $libdir into +# a binary during linking. This must work even if $libdir does +# not exist. +hardcode_libdir_flag_spec_ld="" + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator="" + +# Set to yes if using DIR/libNAME during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=no + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=no + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=no + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=unknown + +# Compile-time system search path for libraries +sys_lib_search_path_spec=`echo "/lib64 /usr/lib64 /usr/local/lib64" | $SED -e "s@${gcc_dir}@\${gcc_dir}@g;s@${gcc_ver}@\${gcc_ver}@g"` + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /usr/lib/x86_64-linux-gnu/libfakeroot /usr/lib/wsl/lib /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 " + +# Fix the shell variable $srcfile for the compiler. +fix_srcfile_path="" + +# Set to yes if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds="" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="" + +# Symbols that must always be exported. +include_expsyms="" + +# ### END LIBTOOL TAG CONFIG: CXX + diff --git a/siege-4.1.6/src/Makefile b/siege-4.1.6/src/Makefile new file mode 100644 index 0000000..f3e7566 --- /dev/null +++ b/siege-4.1.6/src/Makefile @@ -0,0 +1,659 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/siege +pkgincludedir = $(includedir)/siege +pkglibdir = $(libdir)/siege +pkglibexecdir = $(libexecdir)/siege +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +bin_PROGRAMS = siege$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/utils/mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_siege_OBJECTS = array.$(OBJEXT) auth.$(OBJEXT) base64.$(OBJEXT) \ + browser.$(OBJEXT) cache.$(OBJEXT) cookie.$(OBJEXT) \ + cookies.$(OBJEXT) cfg.$(OBJEXT) creds.$(OBJEXT) crew.$(OBJEXT) \ + data.$(OBJEXT) date.$(OBJEXT) eval.$(OBJEXT) ftp.$(OBJEXT) \ + getopt.$(OBJEXT) getopt1.$(OBJEXT) handler.$(OBJEXT) \ + hash.$(OBJEXT) http.$(OBJEXT) init.$(OBJEXT) load.$(OBJEXT) \ + log.$(OBJEXT) main.$(OBJEXT) md5.$(OBJEXT) memory.$(OBJEXT) \ + notify.$(OBJEXT) page.$(OBJEXT) parser.$(OBJEXT) \ + perl.$(OBJEXT) response.$(OBJEXT) sock.$(OBJEXT) ssl.$(OBJEXT) \ + stralloc.$(OBJEXT) timer.$(OBJEXT) url.$(OBJEXT) \ + util.$(OBJEXT) version.$(OBJEXT) +siege_OBJECTS = $(am_siege_OBJECTS) +siege_LDADD = $(LDADD) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir)/include +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(siege_SOURCES) +DIST_SOURCES = $(siege_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing aclocal-1.13 +ALLOCA = +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTHOR = Jeffrey Fulmer, et al. +AUTOCONF = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoconf +AUTOHEADER = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoheader +AUTOMAKE = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CC_R = +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = -I/include/zlib -I/include +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=none +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DATE = June-18-2024 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EMAIL = jeff@joedog.org +EXEEXT = +F77 = +FFLAGS = +GREP = /usr/bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LDL = -ldl +LIBOBJS = +LIBS = $(SSL_LIBS) $(Z_LIBS) +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LN_S = cp -pR +LTLIBOBJS = +MAKEINFO = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = siege +PACKAGE_BUGREPORT = +PACKAGE_NAME = siege +PACKAGE_STRING = siege 4.1.6 +PACKAGE_TARNAME = siege +PACKAGE_URL = +PACKAGE_VERSION = 4.1.6 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PLATFORM = pc-x86_64-linux-gnu +PROGRAM = siege +PTHREAD_CFLAGS = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +PTHREAD_LDFLAGS = -lpthread +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +SSL_CFLAGS = +SSL_INCLUDE = +SSL_LDFLAGS = +SSL_LIBS = +STRIP = strip +VERSION = 4.1.6 +WARN_CFLAGS = -W -Wall -Wunused-value +Z_CFLAGS = +Z_INCLUDE = -I/include/zlib -I/include +Z_LDFLAGS = -L/usr/lib +Z_LIBS = -lz +abs_builddir = /mnt/e/webserv/siege-4.1.6/src +abs_srcdir = /mnt/e/webserv/siege-4.1.6/src +abs_top_builddir = /mnt/e/webserv/siege-4.1.6 +abs_top_srcdir = /mnt/e/webserv/siege-4.1.6 +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +AM_CFLAGS = $(SSL_INCLUDE) $(Z_INCLUDE) $(PTHREAD_CFLAGS) $(WARN_CFLAGS) $(SSL_CFLAGS) $(Z_CFLAGS) +AM_LDFLAGS = $(SSL_LDFLAGS) $(Z_LDFLAGS) $(PTHREAD_LDFLAGS) +siege_SOURCES = \ +ansidecl.h \ +array.c array.h \ +auth.c auth.h \ +base64.c base64.h \ +browser.c browser.h \ +cache.c cache.h \ +cookie.c cookie.h \ +cookies.c cookies.h \ +cfg.c cfg.h \ +creds.c creds.h \ +crew.c crew.h \ +data.c data.h \ +date.c date.h \ +eval.c eval.h \ +ftp.c ftp.h \ +getopt.c getopt1.c \ +handler.c handler.h \ +hash.c hash.h \ +http.c http.h \ +init.c init.h \ +load.c load.h \ +log.c log.h \ +main.c setup.h \ +md5.c md5.h \ +memory.c memory.h \ +notify.c notify.h \ +page.c page.h \ +parser.c parser.h \ +perl.c perl.h \ +response.c response.h \ +sock.c sock.h \ +ssl.c ssl.h \ +stralloc.c stralloc.h \ +timer.c timer.h \ +url.c url.h \ +util.c util.h \ +version.c version.h + +AUTOMAKE_OPTIONS = foreign no-dependencies +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +siege$(EXEEXT): $(siege_OBJECTS) $(siege_DEPENDENCIES) $(EXTRA_siege_DEPENDENCIES) + @rm -f siege$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(siege_OBJECTS) $(siege_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(AM_V_CC)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/src/Makefile.am b/siege-4.1.6/src/Makefile.am new file mode 100644 index 0000000..0672547 --- /dev/null +++ b/siege-4.1.6/src/Makefile.am @@ -0,0 +1,73 @@ +## +## src/Makefile.am +## +## Copyright (C) 2000-2010 by +## Jeffrey Fulmer - , et al. +## This file is distributed as part of Siege +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## + +bin_PROGRAMS = siege + +WARN_CFLAGS = @WARN_CFLAGS@ + +AM_CFLAGS = $(SSL_INCLUDE) $(Z_INCLUDE) $(PTHREAD_CFLAGS) $(WARN_CFLAGS) $(SSL_CFLAGS) $(Z_CFLAGS) + +AM_LDFLAGS = $(SSL_LDFLAGS) $(Z_LDFLAGS) $(PTHREAD_LDFLAGS) + +LIBS = $(SSL_LIBS) $(Z_LIBS) + +siege_SOURCES = \ +ansidecl.h \ +array.c array.h \ +auth.c auth.h \ +base64.c base64.h \ +browser.c browser.h \ +cache.c cache.h \ +cookie.c cookie.h \ +cookies.c cookies.h \ +cfg.c cfg.h \ +creds.c creds.h \ +crew.c crew.h \ +data.c data.h \ +date.c date.h \ +eval.c eval.h \ +ftp.c ftp.h \ +getopt.c getopt1.c \ +handler.c handler.h \ +hash.c hash.h \ +http.c http.h \ +init.c init.h \ +load.c load.h \ +log.c log.h \ +main.c setup.h \ +md5.c md5.h \ +memory.c memory.h \ +notify.c notify.h \ +page.c page.h \ +parser.c parser.h \ +perl.c perl.h \ +response.c response.h \ +sock.c sock.h \ +ssl.c ssl.h \ +stralloc.c stralloc.h \ +timer.c timer.h \ +url.c url.h \ +util.c util.h \ +version.c version.h + +AUTOMAKE_OPTIONS = foreign no-dependencies + diff --git a/siege-4.1.6/src/Makefile.in b/siege-4.1.6/src/Makefile.in new file mode 100644 index 0000000..d9c1541 --- /dev/null +++ b/siege-4.1.6/src/Makefile.in @@ -0,0 +1,659 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = siege$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/utils/mkinstalldirs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_siege_OBJECTS = array.$(OBJEXT) auth.$(OBJEXT) base64.$(OBJEXT) \ + browser.$(OBJEXT) cache.$(OBJEXT) cookie.$(OBJEXT) \ + cookies.$(OBJEXT) cfg.$(OBJEXT) creds.$(OBJEXT) crew.$(OBJEXT) \ + data.$(OBJEXT) date.$(OBJEXT) eval.$(OBJEXT) ftp.$(OBJEXT) \ + getopt.$(OBJEXT) getopt1.$(OBJEXT) handler.$(OBJEXT) \ + hash.$(OBJEXT) http.$(OBJEXT) init.$(OBJEXT) load.$(OBJEXT) \ + log.$(OBJEXT) main.$(OBJEXT) md5.$(OBJEXT) memory.$(OBJEXT) \ + notify.$(OBJEXT) page.$(OBJEXT) parser.$(OBJEXT) \ + perl.$(OBJEXT) response.$(OBJEXT) sock.$(OBJEXT) ssl.$(OBJEXT) \ + stralloc.$(OBJEXT) timer.$(OBJEXT) url.$(OBJEXT) \ + util.$(OBJEXT) version.$(OBJEXT) +siege_OBJECTS = $(am_siege_OBJECTS) +siege_LDADD = $(LDADD) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = +am__depfiles_maybe = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(siege_SOURCES) +DIST_SOURCES = $(siege_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTHOR = @AUTHOR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CC_R = @CC_R@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMAIL = @EMAIL@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LDL = @LDL@ +LIBOBJS = @LIBOBJS@ +LIBS = $(SSL_LIBS) $(Z_LIBS) +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PLATFORM = @PLATFORM@ +PROGRAM = @PROGRAM@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SSL_CFLAGS = @SSL_CFLAGS@ +SSL_INCLUDE = @SSL_INCLUDE@ +SSL_LDFLAGS = @SSL_LDFLAGS@ +SSL_LIBS = @SSL_LIBS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +Z_CFLAGS = @Z_CFLAGS@ +Z_INCLUDE = @Z_INCLUDE@ +Z_LDFLAGS = @Z_LDFLAGS@ +Z_LIBS = @Z_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CFLAGS = $(SSL_INCLUDE) $(Z_INCLUDE) $(PTHREAD_CFLAGS) $(WARN_CFLAGS) $(SSL_CFLAGS) $(Z_CFLAGS) +AM_LDFLAGS = $(SSL_LDFLAGS) $(Z_LDFLAGS) $(PTHREAD_LDFLAGS) +siege_SOURCES = \ +ansidecl.h \ +array.c array.h \ +auth.c auth.h \ +base64.c base64.h \ +browser.c browser.h \ +cache.c cache.h \ +cookie.c cookie.h \ +cookies.c cookies.h \ +cfg.c cfg.h \ +creds.c creds.h \ +crew.c crew.h \ +data.c data.h \ +date.c date.h \ +eval.c eval.h \ +ftp.c ftp.h \ +getopt.c getopt1.c \ +handler.c handler.h \ +hash.c hash.h \ +http.c http.h \ +init.c init.h \ +load.c load.h \ +log.c log.h \ +main.c setup.h \ +md5.c md5.h \ +memory.c memory.h \ +notify.c notify.h \ +page.c page.h \ +parser.c parser.h \ +perl.c perl.h \ +response.c response.h \ +sock.c sock.h \ +ssl.c ssl.h \ +stralloc.c stralloc.h \ +timer.c timer.h \ +url.c url.h \ +util.c util.h \ +version.c version.h + +AUTOMAKE_OPTIONS = foreign no-dependencies +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +siege$(EXEEXT): $(siege_OBJECTS) $(siege_DEPENDENCIES) $(EXTRA_siege_DEPENDENCIES) + @rm -f siege$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(siege_OBJECTS) $(siege_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +.c.o: + $(AM_V_CC)$(COMPILE) -c $< + +.c.obj: + $(AM_V_CC)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: + $(AM_V_CC)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/src/ansidecl.h b/siege-4.1.6/src/ansidecl.h new file mode 100644 index 0000000..23d85bf --- /dev/null +++ b/siege-4.1.6/src/ansidecl.h @@ -0,0 +1,434 @@ +/* ANSI and traditional C compatability macros + Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, + 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* ANSI and traditional C compatibility macros + + ANSI C is assumed if __STDC__ is #defined. + + Macro ANSI C definition Traditional C definition + ----- ---- - ---------- ----------- - ---------- + ANSI_PROTOTYPES 1 not defined + PTR `void *' `char *' + PTRCONST `void *const' `char *' + LONG_DOUBLE `long double' `double' + const not defined `' + volatile not defined `' + signed not defined `' + VA_START(ap, var) va_start(ap, var) va_start(ap) + + Note that it is safe to write "void foo();" indicating a function + with no return value, in all K+R compilers we have been able to test. + + For declaring functions with prototypes, we also provide these: + + PARAMS ((prototype)) + -- for functions which take a fixed number of arguments. Use this + when declaring the function. When defining the function, write a + K+R style argument list. For example: + + char *strcpy PARAMS ((char *dest, char *source)); + ... + char * + strcpy (dest, source) + char *dest; + char *source; + { ... } + + + VPARAMS ((prototype, ...)) + -- for functions which take a variable number of arguments. Use + PARAMS to declare the function, VPARAMS to define it. For example: + + int printf PARAMS ((const char *format, ...)); + ... + int + printf VPARAMS ((const char *format, ...)) + { + ... + } + + For writing functions which take variable numbers of arguments, we + also provide the VA_OPEN, VA_CLOSE, and VA_FIXEDARG macros. These + hide the differences between K+R and C89 more + thoroughly than the simple VA_START() macro mentioned above. + + VA_OPEN and VA_CLOSE are used *instead of* va_start and va_end. + Immediately after VA_OPEN, put a sequence of VA_FIXEDARG calls + corresponding to the list of fixed arguments. Then use va_arg + normally to get the variable arguments, or pass your va_list object + around. You do not declare the va_list yourself; VA_OPEN does it + for you. + + Here is a complete example: + + int + printf VPARAMS ((const char *format, ...)) + { + int result; + + VA_OPEN (ap, format); + VA_FIXEDARG (ap, const char *, format); + + result = vfprintf (stdout, format, ap); + VA_CLOSE (ap); + + return result; + } + + + You can declare variables either before or after the VA_OPEN, + VA_FIXEDARG sequence. Also, VA_OPEN and VA_CLOSE are the beginning + and end of a block. They must appear at the same nesting level, + and any variables declared after VA_OPEN go out of scope at + VA_CLOSE. Unfortunately, with a K+R compiler, that includes the + argument list. You can have multiple instances of VA_OPEN/VA_CLOSE + pairs in a single function in case you need to traverse the + argument list more than once. + + For ease of writing code which uses GCC extensions but needs to be + portable to other compilers, we provide the GCC_VERSION macro that + simplifies testing __GNUC__ and __GNUC_MINOR__ together, and various + wrappers around __attribute__. Also, __extension__ will be #defined + to nothing if it doesn't work. See below. + + This header also defines a lot of obsolete macros: + CONST, VOLATILE, SIGNED, PROTO, EXFUN, DEFUN, DEFUN_VOID, + AND, DOTS, NOARGS. Don't use them. */ + +#ifndef _ANSIDECL_H +#define _ANSIDECL_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* Every source file includes this file, + so they will all get the switch for lint. */ +/* LINTLIBRARY */ + +/* Using MACRO(x,y) in cpp #if conditionals does not work with some + older preprocessors. Thus we can't define something like this: + +#define HAVE_GCC_VERSION(MAJOR, MINOR) \ + (__GNUC__ > (MAJOR) || (__GNUC__ == (MAJOR) && __GNUC_MINOR__ >= (MINOR))) + +and then test "#if HAVE_GCC_VERSION(2,7)". + +So instead we use the macro below and test it against specific values. */ + +/* This macro simplifies testing whether we are using gcc, and if it + is of a particular minimum version. (Both major & minor numbers are + significant.) This macro will evaluate to 0 if we are not using + gcc at all. */ +#ifndef GCC_VERSION +#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__) +#endif /* GCC_VERSION */ + +#if defined (__STDC__) || defined(__cplusplus) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(_WIN32) +/* All known AIX compilers implement these things (but don't always + define __STDC__). The RISC/OS MIPS compiler defines these things + in SVR4 mode, but does not define __STDC__. */ +/* eraxxon@alumni.rice.edu: The Compaq C++ compiler, unlike many other + C++ compilers, does not define __STDC__, though it acts as if this + was so. (Verified versions: 5.7, 6.2, 6.3, 6.5) */ + +#define ANSI_PROTOTYPES 1 +#define PTR void * +#define PTRCONST void *const +#define LONG_DOUBLE long double + +/* PARAMS is often defined elsewhere (e.g. by libintl.h), so wrap it in + a #ifndef. */ +#ifndef PARAMS +#define PARAMS(ARGS) ARGS +#endif + +#define VPARAMS(ARGS) ARGS +#define VA_START(VA_LIST, VAR) va_start(VA_LIST, VAR) + +/* variadic function helper macros */ +/* "struct Qdmy" swallows the semicolon after VA_OPEN/VA_FIXEDARG's + use without inhibiting further decls and without declaring an + actual variable. */ +#define VA_OPEN(AP, VAR) { va_list AP; va_start(AP, VAR); { struct Qdmy +#define VA_CLOSE(AP) } va_end(AP); } +#define VA_FIXEDARG(AP, T, N) struct Qdmy + +#undef const +#undef volatile +#undef signed + +/* inline requires special treatment; it's in C99, and GCC >=2.7 supports + it too, but it's not in C89. */ +#undef inline +#if __STDC_VERSION__ >= 199901L || defined(__cplusplus) || (defined(__SUNPRO_C) && defined(__C99FEATURES__)) +/* it's a keyword */ +#else +# if GCC_VERSION >= 2007 +# define inline __inline__ /* __inline__ prevents -pedantic warnings */ +# else +# define inline /* nothing */ +# endif +#endif + +/* These are obsolete. Do not use. */ +#ifndef IN_GCC +#define CONST const +#define VOLATILE volatile +#define SIGNED signed + +#define PROTO(type, name, arglist) type name arglist +#define EXFUN(name, proto) name proto +#define DEFUN(name, arglist, args) name(args) +#define DEFUN_VOID(name) name(void) +#define AND , +#define DOTS , ... +#define NOARGS void +#endif /* ! IN_GCC */ + +#else /* Not ANSI C. */ + +#undef ANSI_PROTOTYPES +#define PTR char * +#define PTRCONST PTR +#define LONG_DOUBLE double + +#define PARAMS(args) () +#define VPARAMS(args) (va_alist) va_dcl +#define VA_START(va_list, var) va_start(va_list) + +#define VA_OPEN(AP, VAR) { va_list AP; va_start(AP); { struct Qdmy +#define VA_CLOSE(AP) } va_end(AP); } +#define VA_FIXEDARG(AP, TYPE, NAME) TYPE NAME = va_arg(AP, TYPE) + +/* some systems define these in header files for non-ansi mode */ +#undef const +#undef volatile +#undef signed +#undef inline +#define const +#define volatile +#define signed +#define inline + +#ifndef IN_GCC +#define CONST +#define VOLATILE +#define SIGNED + +#define PROTO(type, name, arglist) type name () +#define EXFUN(name, proto) name() +#define DEFUN(name, arglist, args) name arglist args; +#define DEFUN_VOID(name) name() +#define AND ; +#define DOTS +#define NOARGS +#endif /* ! IN_GCC */ + +#endif /* ANSI C. */ + +/* Define macros for some gcc attributes. This permits us to use the + macros freely, and know that they will come into play for the + version of gcc in which they are supported. */ + +#if (GCC_VERSION < 2007) +# define __attribute__(x) +#endif + +/* Attribute __malloc__ on functions was valid as of gcc 2.96. */ +#ifndef ATTRIBUTE_MALLOC +# if (GCC_VERSION >= 2096) +# define ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +# else +# define ATTRIBUTE_MALLOC +# endif /* GNUC >= 2.96 */ +#endif /* ATTRIBUTE_MALLOC */ + +/* Attributes on labels were valid as of gcc 2.93 and g++ 4.5. For + g++ an attribute on a label must be followed by a semicolon. */ +#ifndef ATTRIBUTE_UNUSED_LABEL +# ifndef __cplusplus +# if GCC_VERSION >= 2093 +# define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED +# else +# define ATTRIBUTE_UNUSED_LABEL +# endif +# else +# if GCC_VERSION >= 4005 +# define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED ; +# else +# define ATTRIBUTE_UNUSED_LABEL +# endif +# endif +#endif + +#ifndef ATTRIBUTE_UNUSED +#define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +#endif /* ATTRIBUTE_UNUSED */ + +/* Before GCC 3.4, the C++ frontend couldn't parse attributes placed after the + identifier name. */ +#if ! defined(__cplusplus) || (GCC_VERSION >= 3004) +# define ARG_UNUSED(NAME) NAME ATTRIBUTE_UNUSED +#else /* !__cplusplus || GNUC >= 3.4 */ +# define ARG_UNUSED(NAME) NAME +#endif /* !__cplusplus || GNUC >= 3.4 */ + +#ifndef ATTRIBUTE_NORETURN +#define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) +#endif /* ATTRIBUTE_NORETURN */ + +/* Attribute `nonnull' was valid as of gcc 3.3. */ +#ifndef ATTRIBUTE_NONNULL +# if (GCC_VERSION >= 3003) +# define ATTRIBUTE_NONNULL(m) __attribute__ ((__nonnull__ (m))) +# else +# define ATTRIBUTE_NONNULL(m) +# endif /* GNUC >= 3.3 */ +#endif /* ATTRIBUTE_NONNULL */ + +/* Attribute `pure' was valid as of gcc 3.0. */ +#ifndef ATTRIBUTE_PURE +# if (GCC_VERSION >= 3000) +# define ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define ATTRIBUTE_PURE +# endif /* GNUC >= 3.0 */ +#endif /* ATTRIBUTE_PURE */ + +/* Use ATTRIBUTE_PRINTF when the format specifier must not be NULL. + This was the case for the `printf' format attribute by itself + before GCC 3.3, but as of 3.3 we need to add the `nonnull' + attribute to retain this behavior. */ +#ifndef ATTRIBUTE_PRINTF +#define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) ATTRIBUTE_NONNULL(m) +#define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2) +#define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3) +#define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4) +#define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5) +#define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6) +#endif /* ATTRIBUTE_PRINTF */ + +/* Use ATTRIBUTE_FPTR_PRINTF when the format attribute is to be set on + a function pointer. Format attributes were allowed on function + pointers as of gcc 3.1. */ +#ifndef ATTRIBUTE_FPTR_PRINTF +# if (GCC_VERSION >= 3001) +# define ATTRIBUTE_FPTR_PRINTF(m, n) ATTRIBUTE_PRINTF(m, n) +# else +# define ATTRIBUTE_FPTR_PRINTF(m, n) +# endif /* GNUC >= 3.1 */ +# define ATTRIBUTE_FPTR_PRINTF_1 ATTRIBUTE_FPTR_PRINTF(1, 2) +# define ATTRIBUTE_FPTR_PRINTF_2 ATTRIBUTE_FPTR_PRINTF(2, 3) +# define ATTRIBUTE_FPTR_PRINTF_3 ATTRIBUTE_FPTR_PRINTF(3, 4) +# define ATTRIBUTE_FPTR_PRINTF_4 ATTRIBUTE_FPTR_PRINTF(4, 5) +# define ATTRIBUTE_FPTR_PRINTF_5 ATTRIBUTE_FPTR_PRINTF(5, 6) +#endif /* ATTRIBUTE_FPTR_PRINTF */ + +/* Use ATTRIBUTE_NULL_PRINTF when the format specifier may be NULL. A + NULL format specifier was allowed as of gcc 3.3. */ +#ifndef ATTRIBUTE_NULL_PRINTF +# if (GCC_VERSION >= 3003) +# define ATTRIBUTE_NULL_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) +# else +# define ATTRIBUTE_NULL_PRINTF(m, n) +# endif /* GNUC >= 3.3 */ +# define ATTRIBUTE_NULL_PRINTF_1 ATTRIBUTE_NULL_PRINTF(1, 2) +# define ATTRIBUTE_NULL_PRINTF_2 ATTRIBUTE_NULL_PRINTF(2, 3) +# define ATTRIBUTE_NULL_PRINTF_3 ATTRIBUTE_NULL_PRINTF(3, 4) +# define ATTRIBUTE_NULL_PRINTF_4 ATTRIBUTE_NULL_PRINTF(4, 5) +# define ATTRIBUTE_NULL_PRINTF_5 ATTRIBUTE_NULL_PRINTF(5, 6) +#endif /* ATTRIBUTE_NULL_PRINTF */ + +/* Attribute `sentinel' was valid as of gcc 3.5. */ +#ifndef ATTRIBUTE_SENTINEL +# if (GCC_VERSION >= 3005) +# define ATTRIBUTE_SENTINEL __attribute__ ((__sentinel__)) +# else +# define ATTRIBUTE_SENTINEL +# endif /* GNUC >= 3.5 */ +#endif /* ATTRIBUTE_SENTINEL */ + + +#ifndef ATTRIBUTE_ALIGNED_ALIGNOF +# if (GCC_VERSION >= 3000) +# define ATTRIBUTE_ALIGNED_ALIGNOF(m) __attribute__ ((__aligned__ (__alignof__ (m)))) +# else +# define ATTRIBUTE_ALIGNED_ALIGNOF(m) +# endif /* GNUC >= 3.0 */ +#endif /* ATTRIBUTE_ALIGNED_ALIGNOF */ + +/* Useful for structures whose layout must much some binary specification + regardless of the alignment and padding qualities of the compiler. */ +#ifndef ATTRIBUTE_PACKED +# define ATTRIBUTE_PACKED __attribute__ ((packed)) +#endif + +/* Attribute `hot' and `cold' was valid as of gcc 4.3. */ +#ifndef ATTRIBUTE_COLD +# if (GCC_VERSION >= 4003) +# define ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define ATTRIBUTE_COLD +# endif /* GNUC >= 4.3 */ +#endif /* ATTRIBUTE_COLD */ +#ifndef ATTRIBUTE_HOT +# if (GCC_VERSION >= 4003) +# define ATTRIBUTE_HOT __attribute__ ((__hot__)) +# else +# define ATTRIBUTE_HOT +# endif /* GNUC >= 4.3 */ +#endif /* ATTRIBUTE_HOT */ + +/* We use __extension__ in some places to suppress -pedantic warnings + about GCC extensions. This feature didn't work properly before + gcc 2.8. */ +#if GCC_VERSION < 2008 +#define __extension__ +#endif + +/* This is used to declare a const variable which should be visible + outside of the current compilation unit. Use it as + EXPORTED_CONST int i = 1; + This is because the semantics of const are different in C and C++. + "extern const" is permitted in C but it looks strange, and gcc + warns about it when -Wc++-compat is not used. */ +#ifdef __cplusplus +#define EXPORTED_CONST extern const +#else +#define EXPORTED_CONST const +#endif + +/* Be conservative and only use enum bitfields with C++ or GCC. + FIXME: provide a complete autoconf test for buggy enum bitfields. */ + +#ifdef __cplusplus +#define ENUM_BITFIELD(TYPE) enum TYPE +#elif (GCC_VERSION > 2000) +#define ENUM_BITFIELD(TYPE) __extension__ enum TYPE +#else +#define ENUM_BITFIELD(TYPE) unsigned int +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ansidecl.h */ diff --git a/siege-4.1.6/src/array.c b/siege-4.1.6/src/array.c new file mode 100644 index 0000000..a36ad8b --- /dev/null +++ b/siege-4.1.6/src/array.c @@ -0,0 +1,235 @@ +/** + * Dynamic Array + * + * Copyright (C) 2006-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#include +#include +#include +#include +#include +#include +#include + +typedef void *array; + +struct ARRAY_T +{ + int index; + int length; + array * data; + method free; +}; + +size_t ARRAYSIZE = sizeof(struct ARRAY_T); + +ARRAY +new_array() +{ + ARRAY this; + + this = xcalloc(sizeof(struct ARRAY_T), 1); + this->index = -1; + this->length = 0; + this->free = NULL; + return this; +} + +ARRAY +array_destroy(ARRAY this) +{ + int i; + + if (this == NULL) return NULL; + + if (this->free == NULL) { + this->free = free; + } + + for (i = 0; i < this->length; i++) { + this->free(this->data[i]); + } + xfree(this->data); + xfree(this); + this = NULL; + return this; +} + +ARRAY +array_destroyer(ARRAY this, method m) +{ + this->free = m; + return array_destroy(this); +} + +void +array_set_destroyer(ARRAY this, method m) +{ + this->free = m; +} + + +void +array_push(ARRAY this, void *thing) +{ + int len = 0; + + if (thing==NULL) return; + + len = strlen(thing)+1; + array_npush(this, (void*)thing, len); + return; +} + +void +array_npush(ARRAY this, void *thing, size_t len) +{ + array arr; + if (thing==NULL) return; + if (this->data == NULL && this->length == 0) { + this->data = xmalloc(sizeof(array)); + } else { + this->data = realloc(this->data,(this->length+1)*sizeof(array)); + } + arr = xmalloc(len+1); + memset(arr, '\0', len+1); + memcpy(arr, thing, len); + this->data[this->length] = arr; + this->length += 1; + return; +} + +void * +array_get(ARRAY this, int index) +{ + if (index > this->length) return NULL; + + return this->data[index]; +} + +void * +array_remove (ARRAY this, int index) { + int length = 0; + array arr; + + if (index > this->length) return NULL; + + arr = this->data[index]; + length = --this->length; + + for (; index < length; index++) { + this->data[index] = this->data[index+1]; + } + + return arr; +} + +void * +array_pop(ARRAY this) +{ + if (this == NULL) return NULL; + return this->length ? this->data[--this->length] : NULL; +} + +void * +array_next(ARRAY this) +{ + this->index++; + return this->data[(this->index) % this->length]; +} + +void * +array_prev(ARRAY this) +{ + this->index--; + return this->data[((this->index) + (this->length - 1)) % this->length] ; +} + +size_t +array_length(ARRAY this) +{ + return this->length; +} + +char * +array_to_string(ARRAY this) +{ + size_t i; + int len = 0; + char *str; + + if (this->length == 0) return "NULL"; + + for (i = 0; i < array_length(this); i++) { + len += strlen(array_get(this, i))+3; + } + str = (char*)malloc(len+1); + memset(str, '\0', len+1); + + for (i = 0; i < array_length(this); i++) { + strcat(str, "["); + strcat(str, array_get(this, i)); + if (i == array_length(this) - 1) { + strcat(str, "]"); + } else { + strcat(str, "],"); + } + } + return str; +} + +void +array_print(ARRAY this) +{ + printf("%s\n", array_to_string(this)); +} + + +#if 0 +#include +int +main (int argc, char *argv[]) +{ + int x; + int i; + int len; + ARRAY A = new_array(); + void *v; +for (i = 0; i < 1000000; i++) { + array_push(A, "Zero"); + array_push(A, "One"); + array_push(A, "Two"); + array_push(A, "Three"); + array_push(A, "Four"); + array_push(A, "Five"); + array_push(A, "Six-six-six"); + + while ((v = array_pop(A)) != NULL) { + printf("popped: %s\n", (char*)v); + xfree(v); + } + +} + A = array_destroy(A); + return 0; +} +#endif + + diff --git a/siege-4.1.6/src/array.h b/siege-4.1.6/src/array.h new file mode 100644 index 0000000..310c578 --- /dev/null +++ b/siege-4.1.6/src/array.h @@ -0,0 +1,50 @@ +/** + * Dynamic Array + * + * Copyright (C) 2006-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef ARRAY_H +#define ARRAY_H + +#include +#include + +/** + * ARRAY object + */ +typedef struct ARRAY_T *ARRAY; +extern size_t ARRAYSIZE; + +ARRAY new_array(); +ARRAY array_destroy(ARRAY this); +ARRAY array_destroyer(ARRAY this, method m); +void array_set_destroyer(ARRAY this, method m); +void array_push(ARRAY this, void *thing); +void array_npush(ARRAY this, void *thing, size_t len); +void * array_get(ARRAY this, int index); +void * array_remove (ARRAY this, int index); +void * array_pop(ARRAY this); +void * array_next(ARRAY this); +void * array_prev(ARRAY this); +size_t array_length(ARRAY this); +char * array_to_string(ARRAY this); + +#endif/*ARRAY_H*/ + diff --git a/siege-4.1.6/src/auth.c b/siege-4.1.6/src/auth.c new file mode 100644 index 0000000..5aeafe9 --- /dev/null +++ b/siege-4.1.6/src/auth.c @@ -0,0 +1,1190 @@ +/** + * HTTP Authentication + * + * Copyright (C) 2002-2016 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * Additional copyright information is noted below + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_SSL +#include +#include +#include +# if OPENSSL_VERSION_NUMBER < 0x00907001L +# define DES_key_schedule des_key_schedule +# define DES_cblock des_cblock +# define DES_set_odd_parity des_set_odd_parity +# define DES_set_key des_set_key +# define DES_ecb_encrypt des_ecb_encrypt +# define DESKEY(x) x +# define DESKEYARG(x) x +# else +# define DESKEYARG(x) *x +# define DESKEY(x) &x +# endif +#endif + +typedef enum +{ + TYPE_N = 0, + TYPE_1 = 1, + TYPE_2 = 2, + TYPE_3 = 3, + TYPE_L = 4 +} STATE; + +struct AUTH_T { + ARRAY creds; + BOOLEAN okay; + struct { + char *encode; + } basic; + struct { + char *encode; + } digest; + struct { + STATE state; + char *encode; + BOOLEAN ready; + unsigned char nonce[8]; + } ntlm; + struct { + BOOLEAN required; /* boolean, TRUE == use a proxy server. */ + char *hostname; /* hostname for the proxy server. */ + int port; /* port number for proxysrv */ + char *encode; /* base64 encoded username and password */ + } proxy; + pthread_mutex_t lock; +}; + +struct DIGEST_CRED { + char *username; + char *password; + char *cnonce_value; + char *h_a1; + char nc[9]; + unsigned int nc_value; +}; + +struct DIGEST_CHLG { + char *realm; + char *domain; + char *nonce; + char *opaque; + char *stale; + char *algorithm; + char *qop; +}; + +typedef enum { + REALM, + DOMAIN, + NONCE, + OPAQUE, + STALE, + ALGORITHM, + QOP, + UNKNOWN +} KEY_HEADER_E; + +/** + * Flag bits definitions available at on + * http://davenport.sourceforge.net/ntlm.html + */ +#define NTLMFLAG_NEGOTIATE_OEM (1<<1) +#define NTLMFLAG_NEGOTIATE_NTLM_KEY (1<<9) +#define BASE64_LENGTH(len) (4 * (((len) + 2) / 3)) + +size_t AUTHSIZE = sizeof(struct AUTH_T); + +private BOOLEAN __basic_header(AUTH this, SCHEME scheme, CREDS creds); +private BOOLEAN __ntlm_header(AUTH this, SCHEME scheme, const char *header, CREDS creds); +private DCHLG * __digest_challenge(const char *challenge); +private DCRED * __digest_credentials(CREDS creds, unsigned int *randseed); +private KEY_HEADER_E __get_keyval(const char *key); +private char * __get_random_string(size_t length, unsigned int *randseed); +private char * __get_h_a1(const DCHLG *chlg, DCRED *cred, const char *nonce_value); +private char * __get_md5_str(const char *buf); +private BOOLEAN __str_list_contains(const char *str, const char *pattern, size_t pattern_len); +#ifdef HAVE_SSL +private void __mkhash(const char *pass, unsigned char *nonce, unsigned char *lmresp, unsigned char *ntresp); +#endif/*HAVE_SSL*/ + +AUTH +new_auth() +{ + AUTH this; + + this = calloc(AUTHSIZE, 1); + this->creds = new_array(); + this->basic.encode = NULL; + this->digest.encode = NULL; + this->ntlm.encode = NULL; + this->ntlm.state = TYPE_N; + this->proxy.encode = NULL; + return this; +} + +AUTH +auth_destroy(AUTH this) +{ + this->creds = array_destroy(this->creds); + xfree(this->basic.encode); + xfree(this->digest.encode); + xfree(this->ntlm.encode); + xfree(this->proxy.encode); + xfree(this); + return NULL; +} + +void +auth_add(AUTH this, CREDS creds) +{ + array_npush(this->creds, creds, CREDSIZE); + return; +} + +void +auth_display(AUTH this, SCHEME scheme) +{ + size_t i; + char space[] = " "; + BOOLEAN first = TRUE; + //XXX: Needs to be reformatted for siege -C + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (creds_get_scheme(tmp) == scheme) { + printf("%scredentials: %s:%s:%s\n", first==TRUE?"":space, creds_get_username(tmp), creds_get_password(tmp), creds_get_realm(tmp)); + first = FALSE; + } + } +} + +char * +auth_get_basic_header(AUTH this, SCHEME scheme) +{ + if (scheme == PROXY) { + return this->proxy.encode; + } else { + return this->basic.encode; + } +} + +BOOLEAN +auth_set_basic_header(AUTH this, SCHEME scheme, char *realm) +{ + size_t i; + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (realm == NULL) break; + if (strmatch(creds_get_realm(tmp), realm)) { + if (creds_get_scheme(tmp) == scheme) { + return __basic_header(this, scheme, tmp); + } + } + } + /** + * didn't match a realm, trying 'any' + */ + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (strmatch(creds_get_realm(tmp), "any")) { + if (creds_get_scheme(tmp) == scheme) { + return __basic_header(this, scheme, tmp); + } + } + } + return FALSE; +} + +BOOLEAN +auth_set_ntlm_header(AUTH this, SCHEME scheme, char *header, char *realm) +{ + size_t i; + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (realm == NULL) break; + if (strmatch(creds_get_realm(tmp), realm)) { + if (creds_get_scheme(tmp) == HTTP || creds_get_scheme(tmp) == HTTPS) { + return __ntlm_header(this, scheme, header, tmp); + } + } + } + /** + * didn't match a realm, trying 'any' + */ + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (strmatch(creds_get_realm(tmp), "any")) { + if (creds_get_scheme(tmp) == HTTP || creds_get_scheme(tmp) == HTTPS) { + return __ntlm_header(this, scheme, header, tmp); + } + } + } + return FALSE; +} + +char * +auth_get_ntlm_header(AUTH this, SCHEME scheme) +{ + if (scheme == PROXY) { + return this->proxy.encode; + } else { + return this->ntlm.encode; + } +} + +char * +auth_get_digest_header(AUTH this, SCHEME scheme, DCHLG *chlg, DCRED *cred, const char *method, const char *uri) +{ + size_t len; + char *cnonce = NULL; + char *nonce_count = NULL; + char *qop = NULL; + char *response = NULL; + char *request_digest = NULL; + char *h_a1 = NULL; + char *h_a2 = NULL; + char *opaque = NULL; + char *result = NULL; + char *tmp = NULL; + + /** + * The user probably didn't set login credentials. + * We'll return "" here and display a message after + * the authorization failure. + */ + if (chlg == NULL || cred == NULL) return ""; + + if (chlg != NULL && chlg->qop != NULL) { + nonce_count = xstrcat(", nc=", cred->nc, NULL); + cnonce = xstrcat(", cnonce=\"", cred->cnonce_value, "\"", NULL); + + if (NULL == (h_a1 = __get_h_a1(chlg, cred, chlg->nonce))) { + fprintf(stderr, "error calling __get_h_a1\n"); + return NULL; + } + + if (__str_list_contains(chlg->qop, "auth", 4)) { + qop = xstrdup(", qop=auth"); + tmp = xstrcat(method, ":", uri, NULL); + h_a2 = __get_md5_str(tmp); + xfree(tmp); + + tmp = xstrcat(h_a1,":",chlg->nonce,":",cred->nc,":",cred->cnonce_value,":auth:",h_a2,NULL); + request_digest = __get_md5_str(tmp); + xfree(tmp); + response = xstrcat(", response=\"", request_digest, "\"", NULL); + } else { + fprintf(stderr, "error quality of protection not supported: %s\n", chlg->qop); + return NULL; + } + } else { + if (NULL == (h_a1 = __get_h_a1(chlg, cred, ""))) { + NOTIFY(ERROR, "__get_h_a1\n"); + return NULL; + } + tmp = xstrcat(method, ":", uri, NULL); + h_a2 = __get_md5_str(tmp); + xfree(tmp); + tmp = xstrcat(h_a1, ":", chlg->nonce, ":", h_a2, NULL); + request_digest = __get_md5_str(tmp); + xfree(tmp); + response = xstrcat(" response=\"", request_digest, "\"", NULL); + } + if (chlg != NULL && chlg->opaque != NULL) + opaque = xstrcat(", opaque=\"", chlg->opaque, "\"", NULL); + + result = xstrcat ( + "Digest username=\"", cred->username, "\", realm=\"", chlg->realm, "\", nonce=\"", chlg->nonce, + "\", uri=\"", uri, "\", algorithm=", chlg->algorithm, response, opaque ? opaque : "", qop ? qop : "", + nonce_count ? nonce_count : "", cnonce ? cnonce : "", NULL + ); + + (cred->nc_value)++; + snprintf(cred->nc, sizeof(cred->nc), "%.8x", cred->nc_value); + + if (0 == strcasecmp("MD5", chlg->algorithm)) + xfree(h_a1); + + xfree(nonce_count); + xfree(cnonce); + xfree(qop); + xfree(response); + xfree(request_digest); + xfree(h_a2); + xfree(opaque); + + len = strlen(result)+32; + + if (scheme == PROXY) { + this->proxy.encode = xmalloc(len); + memset(this->proxy.encode, '\0', len); + snprintf(this->proxy.encode, len, "Proxy-Authorization: %s\015\012", result); + xfree(result); + return this->proxy.encode; + } else { + this->digest.encode = xmalloc(len); + memset(this->digest.encode, '\0', len); + snprintf(this->digest.encode, len, "Authorization: %s\015\012", result); + xfree(result); + return this->digest.encode; + } +} + +BOOLEAN +auth_set_digest_header(AUTH this, DCHLG **chlg, DCRED **cred, unsigned int *rand, char *realm, char *str) { + size_t i; + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (realm == NULL) break; + if (strmatch(creds_get_realm(tmp), realm)) { + *chlg = __digest_challenge(str); + *cred = __digest_credentials(tmp, rand); + if (*cred == NULL || *chlg == NULL) return FALSE; + return TRUE; + } + } + /** + * didn't match a realm, trying 'any' + */ + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (strmatch(creds_get_realm(tmp), "any")) { + *chlg = __digest_challenge(str); + *cred = __digest_credentials(tmp, rand); + if (*cred == NULL || *chlg == NULL) return FALSE; + return TRUE; + } + } + return FALSE; +} + +BOOLEAN +auth_get_proxy_required(AUTH this) +{ + if (this == NULL) + return FALSE; + return this->proxy.required; +} + +char * +auth_get_proxy_host(AUTH this) +{ + return this->proxy.hostname; +} + +int +auth_get_proxy_port(AUTH this) +{ + return this->proxy.port; +} + +void +auth_set_proxy_required(AUTH this, BOOLEAN required) +{ + this->proxy.required = required; +} + +void +auth_set_proxy_host(AUTH this, char *host) +{ + this->proxy.hostname = xstrdup(host); + this->proxy.required = TRUE; +} + +void +auth_set_proxy_port(AUTH this, int port) +{ + this->proxy.port = port; +} + +char * +auth_get_ftp_username(AUTH this, char *realm) +{ + size_t i; + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (strmatch(creds_get_realm(tmp), realm)) { + if (creds_get_scheme(tmp) == FTP) { + return creds_get_username(tmp); + } + } + } + /** + * didn't match a realm, trying 'any' + */ + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (strmatch(creds_get_realm(tmp), "any")) { + if (creds_get_scheme(tmp) == FTP) { + return creds_get_username(tmp); + } + } + } + return ""; +} + +char * +auth_get_ftp_password(AUTH this, char *realm) +{ + size_t i; + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (strmatch(creds_get_realm(tmp), realm)) { + if (creds_get_scheme(tmp) == FTP) { + return creds_get_password(tmp); + } + } + } + /** + * didn't match a realm, trying 'any' + */ + for (i = 0; i < array_length(this->creds); i++) { + CREDS tmp = array_get(this->creds, i); + if (strmatch(creds_get_realm(tmp), "any")) { + if (creds_get_scheme(tmp) == FTP) { + return creds_get_password(tmp); + } + } + } + return ""; +} + +private BOOLEAN +__basic_header(AUTH this, SCHEME scheme, CREDS creds) +{ + char buf[256]; + char *hdr; + size_t len; + BOOLEAN ret = TRUE; + + memset(buf, '\0', sizeof(buf)); + pthread_mutex_lock(&(this->lock)); + snprintf(buf, sizeof buf,"%s:%s",creds_get_username(creds), creds_get_password(creds)); + if (scheme==PROXY) { + xfree(this->proxy.encode); + if ((base64_encode(buf, strlen(buf), &hdr) < 0)) { + ret = FALSE; + } else { + len = strlen(hdr)+32; + this->proxy.encode = xmalloc(len); + memset(this->proxy.encode, '\0', len); + snprintf(this->proxy.encode, len, "Proxy-Authorization: Basic %s\015\012", hdr); + } + } else { + xfree(this->basic.encode); + if ((base64_encode(buf, strlen(buf), &hdr) < 0 )) { + ret = FALSE; + } else { + len = strlen(hdr)+32; + this->basic.encode = xmalloc(len); + memset(this->basic.encode, '\0', len); + snprintf(this->basic.encode, len, "Authorization: Basic %s\015\012", hdr); + } + } + pthread_mutex_unlock(&(this->lock)); + return ret; +} + +/** + * NTLM authentication is based on Daniel Stenberg's + * implementation from libcurl and contribution to wget. + * See: http://curl.haxx.se and http://www.gnu.org/software/wget/ + * Copyright (c) 1996 - 2015, Daniel Stenberg, daniel@haxx.se. + * MIT (or Modified BSD)-style license. + * Copyright (C) 2011 by Free Software Foundation + * Modified for Siege by J. Fulmer + * Copyright (C) 2015 GNU Public License v3 + */ +#define SHORTPAIR(x) (char) ((x) & 0xff), (char) ((x) >> 8) +#define LONGQUARTET(x) ((x) & 0xff), (((x) >> 8)&0xff), \ + (((x) >>16)&0xff), ((x)>>24) + +private BOOLEAN +__ntlm_header(AUTH this, SCHEME scheme, const char *header, CREDS creds) +{ +#ifndef HAVE_SSL + NOTIFY( + ERROR, "NTLM authentication requires libssl: %d, %d, %s, %s", + this->okay, scheme, header, creds_get_username(creds) + ); // this message is mainly intended to silence the compiler + return FALSE; +#else + size_t size = 0; + size_t final = 0; + const char *domstr = ""; + const char *srvstr = ""; + size_t domlen = strlen(domstr); + size_t srvlen = strlen(srvstr); + size_t srvoff; + size_t domoff; + char *hdr; + char tmp[BUFSIZ]; + char buf[256]; + + /** + * The header is head->auth.challenge.www which was set in client.c + * It includes everything after 'WWW-Authenticate: ' which means it + * must begin NTLM for this authentication mechanism. Let's check it + */ + if (strncasecmp(header, "NTLM", 4)) { + return FALSE; + } + + NOTIFY( // honestly this is here to silence the compiler... + DEBUG, "Parsing NTLM header: %d, %d, %s, %s", + this->okay, scheme, header, creds_get_username(creds) + ); + + header += 4; // Step past NTLM + while (*header && ISSPACE(*header)) { + header++; + } + + if (*header) { + /** + * We got a type-2 message here: + * + * Index Description Content + * 0 NTLMSSP Signature Null-terminated ASCII "NTLMSSP" + * (0x4e544c4d53535000) + * 8 NTLM Message Type long (0x02000000) + * 12 Target Name security buffer(*) + * 20 Flags long + * 24 Challenge 8 bytes + * (32) Context (optional) 8 bytes (two consecutive longs) + * (40) Target Information (optional) security buffer(*) + * 32 (48) start of data block + */ + ssize_t size; + memset(tmp, '\0', strlen(header)); + if ((size = base64_decode(header, &tmp)) < 0) { + return FALSE; + } + + if (size >= 48) { + /* the nonce of interest is index [24 .. 31], 8 bytes */ + memcpy (this->ntlm.nonce, &tmp[24], 8); + } + this->ntlm.state = TYPE_2; + } else { + if (this->ntlm.state >= TYPE_1) { + return FALSE; /* this is an error */ + } + this->ntlm.state = TYPE_1; /* we should send type-1 */ + } + + switch (this->ntlm.state) { + case TYPE_1: + case TYPE_N: + case TYPE_L: + srvoff = 32; + domoff = srvoff + srvlen; + /** + * Create and send a type-1 message: + * Index Description Content + * 0 NTLMSSP Signature Null-terminated ASCII "NTLMSSP" + * (0x4e544c4d53535000) + * 8 NTLM Message Type long (0x01000000) + * 12 Flags long + * 16 Supplied Domain security buffer(*) + * 24 Supplied Workstation security buffer(*) + * 32 start of data block + */ + snprintf ( + buf, sizeof(buf), "NTLMSSP%c" + "\x01%c%c%c" /* 32-bit type = 1 */ + "%c%c%c%c" /* 32-bit NTLM flag field */ + "%c%c" /* domain length */ + "%c%c" /* domain allocated space */ + "%c%c" /* domain name offset */ + "%c%c" /* 2 zeroes */ + "%c%c" /* host length */ + "%c%c" /* host allocated space */ + "%c%c" /* host name offset */ + "%c%c" /* 2 zeroes */ + "%s" /* host name */ + "%s", /* domain string */ + 0, /* trailing zero */ + 0,0,0, /* part of type-1 long */ + LONGQUARTET( + /* equals 0x0202 */ + NTLMFLAG_NEGOTIATE_OEM| /* 2 */ + NTLMFLAG_NEGOTIATE_NTLM_KEY /* 200 */ + ), + SHORTPAIR(domlen), + SHORTPAIR(domlen), + SHORTPAIR(domoff), + 0,0, + SHORTPAIR(srvlen), + SHORTPAIR(srvlen), + SHORTPAIR(srvoff), + 0,0, + srvstr, domstr + ); + size = 32 + srvlen + domlen; + if ((base64_encode(buf, size, &hdr) < 0 )) { + return FALSE; + } + + final = strlen(hdr) + 23; + this->ntlm.encode = xmalloc(final); + this->ntlm.state = TYPE_2; /* we sent type one */ + memset(this->ntlm.encode, '\0', final); + snprintf(this->ntlm.encode, final, "Authorization: NTLM %s\015\012", hdr); + break; + case TYPE_2: + /** + * We have type-2; need to create a type-3 message: + * + * Index Description Content + * 0 NTLMSSP Signature Null-terminated ASCII "NTLMSSP" + * (0x4e544c4d53535000) + * 8 NTLM Message Type long (0x03000000) + * 12 LM/LMv2 Response security buffer(*) + * 20 NTLM/NTLMv2 Response security buffer(*) + * 28 Domain Name security buffer(*) + * 36 User Name security buffer(*) + * 44 Workstation Name security buffer(*) + * (52) Session Key (optional) security buffer(*) + * (60) Flags (optional) long + * 52 (64) start of data block + */ + { + size_t lmrespoff; + size_t ntrespoff; + size_t usroff; + unsigned char lmresp[0x18]; /* fixed-size */ + unsigned char ntresp[0x18]; /* fixed-size */ + size_t usrlen; + const char *usr; + + usr = strchr(creds_get_username(creds), '\\'); + if (!usr) { + usr = strchr(creds_get_username(creds), '/'); + } + + if (usr) { + domstr = creds_get_username(creds); + domlen = (size_t) (usr - domstr); + usr++; + } else { + usr = creds_get_username(creds); + } + usrlen = strlen(usr); + __mkhash(creds_get_password(creds), &this->ntlm.nonce[0], lmresp, ntresp); + domoff = 64; + usroff = domoff + domlen; + srvoff = usroff + usrlen; + lmrespoff = srvoff + srvlen; + ntrespoff = lmrespoff + 0x18; + size = (size_t) snprintf ( + buf, sizeof(buf), + "NTLMSSP%c" + "\x03%c%c%c" /* type-3, 32 bits */ + "%c%c%c%c" /* LanManager length + allocated space */ + "%c%c" /* LanManager offset */ + "%c%c" /* 2 zeroes */ + "%c%c" /* NT-response length */ + "%c%c" /* NT-response allocated space */ + "%c%c" /* NT-response offset */ + "%c%c" /* 2 zeroes */ + "%c%c" /* domain length */ + "%c%c" /* domain allocated space */ + "%c%c" /* domain name offset */ + "%c%c" /* 2 zeroes */ + "%c%c" /* user length */ + "%c%c" /* user allocated space */ + "%c%c" /* user offset */ + "%c%c" /* 2 zeroes */ + "%c%c" /* host length */ + "%c%c" /* host allocated space */ + "%c%c" /* host offset */ + "%c%c%c%c%c%c" /* 6 zeroes */ + "\xff\xff" /* message length */ + "%c%c" /* 2 zeroes */ + "\x01\x82" /* flags */ + "%c%c" /* 2 zeroes */ + /* domain string */ + /* user string */ + /* host string */ + /* LanManager response */ + /* NT response */ + , + 0, /* zero termination */ + 0,0,0, /* type-3 long, the 24 upper bits */ + SHORTPAIR(0x18), /* LanManager response length, twice */ + SHORTPAIR(0x18), + SHORTPAIR(lmrespoff), + 0x0, 0x0, + SHORTPAIR(0x18), + SHORTPAIR(0x18), + SHORTPAIR(ntrespoff), + 0x0, 0x0, + SHORTPAIR(domlen), + SHORTPAIR(domlen), + SHORTPAIR(domoff), + 0x0, 0x0, + SHORTPAIR(usrlen), + SHORTPAIR(usrlen), + SHORTPAIR(usroff), + 0x0, 0x0, + SHORTPAIR(srvlen), + SHORTPAIR(srvlen), + SHORTPAIR(srvoff), + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, + 0x0, 0x0 + ); + + size=64; + buf[62]=buf[63]=0; + + if ((size + usrlen + domlen) >= sizeof(buf)) + return FALSE; + + memcpy(&buf[size], domstr, domlen); + size += domlen; + + memcpy(&buf[size], usr, usrlen); + size += usrlen; + + /* we append the binary hashes to the end of the blob */ + if (size < (sizeof(buf) - 0x18)) { + memcpy(&buf[size], lmresp, 0x18); + size += 0x18; + } + + if (size < (sizeof(buf) - 0x18)) { + memcpy(&buf[size], ntresp, 0x18); + size += 0x18; + } + + buf[56] = (char) (size & 0xff); + buf[57] = (char) (size >> 8); + if ((base64_encode(buf, size, &hdr) < 0)) { + return FALSE; + } + + this->ntlm.state = TYPE_3; /* we sent a type-3 */ + this->ntlm.ready = TRUE; + final = strlen(hdr) + 23; + this->ntlm.encode = (char*)xrealloc(this->ntlm.encode, final); + memset(this->ntlm.encode, '\0', final); + snprintf(this->ntlm.encode, final, "Authorization: NTLM %s\015\012", hdr); + break; + } + case TYPE_3: + this->ntlm.ready = TRUE; + break; + default: + break; + } + return TRUE; +#endif/*HAVE_SSL*/ +} + +/** + * Copyright (C) 2011 by Free Software Foundation, Inc. + * Contributed by Daniel Stenberg. + * This code is part of wget and based on mk_lm_hash from libcurl + * Modified by J. Fulmer for siege + */ +#ifdef HAVE_SSL +static void +setup_des_key(unsigned char *key_56, DES_key_schedule DESKEYARG(ks)) +{ + DES_cblock key; + + key[0] = key_56[0]; + key[1] = ((key_56[0] << 7) & 0xFF) | (key_56[1] >> 1); + key[2] = ((key_56[1] << 6) & 0xFF) | (key_56[2] >> 2); + key[3] = ((key_56[2] << 5) & 0xFF) | (key_56[3] >> 3); + key[4] = ((key_56[3] << 4) & 0xFF) | (key_56[4] >> 4); + key[5] = ((key_56[4] << 3) & 0xFF) | (key_56[5] >> 5); + key[6] = ((key_56[5] << 2) & 0xFF) | (key_56[6] >> 6); + key[7] = (key_56[6] << 1) & 0xFF; + + DES_set_odd_parity(&key); + DES_set_key(&key, ks); +} +#endif/*HAVE_SSL*/ + +/** + * Copyright (C) 2011 by Free Software Foundation, Inc. + * Contributed by Daniel Stenberg. + * This code is part of wget and based on mk_lm_hash from libcurl + * Modified by J. Fulmer for siege + */ +#ifdef HAVE_SSL +static void +calc_resp(unsigned char *keys, unsigned char *plaintext, unsigned char *results) +{ + DES_key_schedule ks; + + setup_des_key(keys, DESKEY(ks)); + DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) results, DESKEY(ks), DES_ENCRYPT); + + setup_des_key(keys+7, DESKEY(ks)); + DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results+8), DESKEY(ks), DES_ENCRYPT); + + setup_des_key(keys+14, DESKEY(ks)); + DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results+16), DESKEY(ks), DES_ENCRYPT); +} +#endif/*HAVE_SSL*/ + +/** + * Copyright (C) 2011 by Free Software Foundation, Inc. + * Contributed by Daniel Stenberg. + * This code is part of wget and based on mk_lm_hash from libcurl + * Modified by J. Fulmer for siege + */ +#ifdef HAVE_SSL +private void +__mkhash(const char *password, unsigned char *nonce, unsigned char *lmresp, unsigned char *ntresp) +{ + unsigned char *pw; + unsigned char lmbuffer[21]; + unsigned char ntbuffer[21]; + static const unsigned char magic[] = { + 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 + }; + size_t i, len = strlen(password); + + pw = (unsigned char *) alloca (len < 7 ? 14 : len * 2); + + if (len > 14) + len = 14; + + for (i=0; iusername = xstrdup(creds_get_username(creds)); + result->password = xstrdup(creds_get_password(creds)); + /* Generate a pseudo random cnonce */ + result->cnonce_value = __get_random_string(DIGEST_CNONCE_SIZE, randseed); + result->nc_value = 1U; + snprintf(result->nc, sizeof(result->nc), "%.8x", result->nc_value); + result->h_a1 = NULL; + + return result; +} + +private DCHLG * +__digest_challenge(const char *challenge) +{ + DCHLG *result; + char *key; + char *val; + const char *beg; + const char *end; + KEY_HEADER_E keyval; + + result = xcalloc(1, sizeof(struct DIGEST_CHLG)); + + for (beg = end = challenge; !isspace(*end) && *end; ++end); + + if (strncasecmp("Digest", beg, end - beg)) { + fprintf(stderr, "no Digest keyword in challenge [%s]\n", challenge); + return NULL; + } + + for (beg = end; isspace(*beg); ++beg); + + while (*beg != '\0') { + + /* find key */ + while (isspace(*beg)) + beg++; + + end = beg; + while (*end != '=' && *end != ',' && *end != '\0' && !isspace(*end)) + end++; + + key = xmalloc((1 + end - beg) * sizeof(char)); + memcpy(key, beg, end - beg); + key[end - beg] = '\0'; + + beg = end; + while (isspace(*beg)) + beg++; + + /* find value */ + val = NULL; + if (*beg == '=') { + beg++; + while (isspace(*beg)) + beg++; + + if (*beg == '\"') { /* quoted string */ + beg++; + end = beg; + while (*end != '\"' && *end != '\0') { + if (*end == '\\' && end[1] != '\0') { + end++; /* escaped char */ + } + end++; + } + val = xmalloc((1 + end - beg) * sizeof(char)); + memcpy(val, beg, end - beg); + val[end - beg] = '\0'; + beg = end; + if (*beg != '\0') { + beg++; + } + } + else { /* token */ + end = beg; + while (*end != ',' && *end != '\0' && !isspace(*end)) + end++; + + val = xmalloc((1 + end - beg) * sizeof(char)); + memcpy(val, beg, end - beg); + val[end - beg] = '\0'; + beg = end; + } + } + + while (*beg != ',' && *beg != '\0') + beg++; + + if (*beg != '\0') { + beg++; + } + + keyval = __get_keyval(key); + switch (keyval) { + case REALM: + result->realm = val; + break; + case DOMAIN: + result->domain = val; + break; + case NONCE: + result->nonce = val; + break; + case OPAQUE: + result->opaque = val; + break; + case STALE: + result->stale = val; + break; + case ALGORITHM: + result->algorithm = val; + break; + case QOP: + result->qop = val; + break; + default: + fprintf(stderr, "unknown key [%s]\n", key); + xfree(val); + break; + } + xfree(key); + } + + return result; +} + +private char * +__get_md5_str(const char *buf) +{ + const char *hex = "0123456789abcdef"; + struct md5_ctx ctx; + unsigned char hash[16]; + char *r, *result; + size_t length; + int i; + + length = strlen(buf); + result = xmalloc(33 * sizeof(char)); + md5_init_ctx(&ctx); + md5_process_bytes(buf, length, &ctx); + md5_finish_ctx(&ctx, hash); + + for (i = 0, r = result; i < 16; i++) { + *r++ = hex[hash[i] >> 4]; + *r++ = hex[hash[i] & 0xF]; + } + *r = '\0'; + + return result; +} + + +private char * +__get_h_a1(const DCHLG *chlg, DCRED *cred, const char *nonce_value) +{ + char *h_usrepa, *result, *tmp; + + if (0 == strcasecmp("MD5", chlg->algorithm)) { + tmp = xstrcat(cred->username, ":", chlg->realm, ":", cred->password, NULL); + h_usrepa = __get_md5_str(tmp); + xfree(tmp); + result = h_usrepa; + } + else if (0 == strcasecmp("MD5-sess", chlg->algorithm)) { + if ((NULL == cred->h_a1)) { + tmp = xstrcat(cred->username, ":", chlg->realm, ":", cred->password, NULL); + h_usrepa = __get_md5_str(tmp); + xfree(tmp); + tmp = xstrcat(h_usrepa, ":", nonce_value, ":", cred->cnonce_value, NULL); + result = __get_md5_str(tmp); + xfree(tmp); + cred->h_a1 = result; + } + else { + return cred->h_a1; + } + } + else { + fprintf(stderr, "invalid call to %s algorithm is [%s]\n", __FUNCTION__, chlg->algorithm); + return NULL; + } + + return result; +} + +private BOOLEAN +__str_list_contains(const char *str, const char *pattern, size_t pattern_len) +{ + const char *ptr; + + ptr = str; + do { + if (0 == strncmp(ptr, pattern, pattern_len) + && ((',' == ptr[pattern_len]) || ('\0' == ptr[pattern_len]))) { + return TRUE; + } + + if (NULL != (ptr = strchr(ptr, ','))) ptr++; + } + while (NULL != ptr); + + return FALSE; +} + diff --git a/siege-4.1.6/src/auth.h b/siege-4.1.6/src/auth.h new file mode 100644 index 0000000..6fe8a16 --- /dev/null +++ b/siege-4.1.6/src/auth.h @@ -0,0 +1,57 @@ +/** + * HTTP Authentication + * + * Copyright (C) 2002-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef __AUTH_H +#define __AUTH_H + +#include +#include +#include + +typedef struct AUTH_T *AUTH; +extern size_t AUTHSIZE; + +typedef struct DIGEST_CRED DCRED; +typedef struct DIGEST_CHLG DCHLG; +typedef enum { BASIC, DIGEST, NTLM } TYPE; + +AUTH new_auth(); +AUTH auth_destroy(AUTH this); +void auth_add(AUTH this, CREDS creds); +void auth_display(AUTH this, SCHEME scheme); +char * auth_get_basic_header(AUTH this, SCHEME scheme); +BOOLEAN auth_set_basic_header(AUTH this, SCHEME scheme, char *realm); +char * auth_get_ntlm_header(AUTH this, SCHEME scheme); +BOOLEAN auth_set_ntlm_header(AUTH this, SCHEME scheme, char *header, char *realm); +char * auth_get_digest_header(AUTH this, SCHEME scheme, DCHLG *chlg, DCRED *cred, const char *meth, const char *uri); +BOOLEAN auth_set_digest_header(AUTH this, DCHLG **ch, DCRED **cr, unsigned int *rand, char *realm, char *str); +BOOLEAN auth_get_proxy_required(AUTH this); +void auth_set_proxy_required(AUTH this, BOOLEAN required); +char * auth_get_proxy_host(AUTH this); +void auth_set_proxy_host(AUTH this, char *host); +int auth_get_proxy_port(AUTH this); +void auth_set_proxy_port(AUTH this, int port); +char * auth_get_ftp_username(AUTH this, char *realm); +char * auth_get_ftp_password(AUTH this, char *realm); + + +#endif/*__AUTH_H*/ diff --git a/siege-4.1.6/src/base64.c b/siege-4.1.6/src/base64.c new file mode 100644 index 0000000..5ff6419 --- /dev/null +++ b/siege-4.1.6/src/base64.c @@ -0,0 +1,174 @@ +/* + * Copyright (c) 1995 - 1999 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include "base64.h" + +/* The last #include file should be: */ +#ifdef MALLOCDEBUG +#include "memdebug.h" +#endif + +static char base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +static int pos(char c) +{ + char *p; + for(p = base64; *p; p++) + if(*p == c) + return p - base64; + return -1; +} + +int base64_encode(const void *data, int size, char **str) +{ + char *s, *p; + int i; + int c; + const unsigned char *q; + + p = s = (char*)malloc(size*4/3+4); + if (p == NULL) + return -1; + q = (const unsigned char*)data; + i=0; + for(i = 0; i < size;){ + c=q[i++]; + c*=256; + if(i < size) + c+=q[i]; + i++; + c*=256; + if(i < size) + c+=q[i]; + i++; + p[0]=base64[(c&0x00fc0000) >> 18]; + p[1]=base64[(c&0x0003f000) >> 12]; + p[2]=base64[(c&0x00000fc0) >> 6]; + p[3]=base64[(c&0x0000003f) >> 0]; + if(i > size) + p[3]='='; + if(i > size+1) + p[2]='='; + p+=4; + } + *p=0; + *str = s; + return strlen(s); +} + +int base64_decode(const char *str, void *data) +{ + const char *p; + unsigned char *q; + int c; + int x; + int done = 0; + q=(unsigned char*)data; + for(p=str; *p && !done; p+=4){ + x = pos(p[0]); + if(x >= 0) + c = x; + else{ + done = 3; + break; + } + c*=64; + + x = pos(p[1]); + if(x >= 0) + c += x; + else + return -1; + c*=64; + + if(p[2] == '=') + done++; + else{ + x = pos(p[2]); + if(x >= 0) + c += x; + else + return -1; + } + c*=64; + + if(p[3] == '=') + done++; + else{ + if(done) + return -1; + x = pos(p[3]); + if(x >= 0) + c += x; + else + return -1; + } + if(done < 3) + *q++=(c&0x00ff0000)>>16; + + if(done < 2) + *q++=(c&0x0000ff00)>>8; + if(done < 1) + *q++=(c&0x000000ff)>>0; + } + return q - (unsigned char*)data; +} +#if 0 +#include + +"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz" +"IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg" +"dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu" +"dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo" +"ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4="; +int +main(int argc, char **argv) +{ + int i; + char buf[BUFSIZ]; + unsigned l; + + (void)argc; + (void)argv; + + l = sizeof buf; + base64_decode(test1, buf); + printf("%s\n", buf); + return (0); +} +#endif diff --git a/siege-4.1.6/src/base64.h b/siege-4.1.6/src/base64.h new file mode 100644 index 0000000..5763a50 --- /dev/null +++ b/siege-4.1.6/src/base64.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 1995, 1996, 1997 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * All rights reserved. + * + * Portions by Jeffrey Fulmer (c) 2015 + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef __BASE64_H +#define __BASE64_H + +int base64_encode(const void *data, int size, char **str); +int base64_decode(const char *str, void *data); + + +#endif/*__BASE64_H*/ diff --git a/siege-4.1.6/src/browser.c b/siege-4.1.6/src/browser.c new file mode 100644 index 0000000..0a4b8db --- /dev/null +++ b/siege-4.1.6/src/browser.c @@ -0,0 +1,1114 @@ +/** + * Browser instance + * + * Copyright (C) 2016 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(hpux) || defined(__hpux) || defined(WINDOWS) +# define SIGNAL_CLIENT_PLATFORM +#endif + +#ifdef SIGNAL_CLIENT_PLATFORM +static pthread_once_t once = PTHREAD_ONCE_INIT; +#endif/*SIGNAL_CLIENT_PLATFORM*/ + +float __himark = 0; +float __lomark = -1; + +struct BROWSER_T +{ + int id; + size_t tid; + ARRAY urls; + ARRAY parts; + HASH cookies; + CONN * conn; +#ifdef SIGNAL_CLIENT_PLATFORM + sigset_t sigs; +#else + int type; + int state; +#endif + float total; + float available; + float lowest; + float highest; + float elapsed; + float time; + float himark; + float lomark; + clock_t start; + clock_t stop; + struct tms t_start; + struct tms t_stop; + struct { + DCHLG *wchlg; + DCRED *wcred; + int www; + DCHLG *pchlg; + DCRED *pcred; + int proxy; + struct { + int www; + int proxy; + } bids; + struct { + TYPE www; + TYPE proxy; + } type; + } auth; + unsigned int code; + unsigned int count; + unsigned int okay; + unsigned int fail; + unsigned long hits; + unsigned long long bytes; + unsigned int rseed; +}; + +size_t BROWSERSIZE = sizeof(struct BROWSER_T); + +private BOOLEAN __init_connection(BROWSER this, URL U); +private BOOLEAN __request(BROWSER this, URL U); +private BOOLEAN __http(BROWSER this, URL U); +private BOOLEAN __ftp(BROWSER this, URL U); +private BOOLEAN __no_follow(const char *hostname); +private void __increment_failures(); +private int __select_color(int code); +private void __display_result(BROWSER this, RESPONSE resp, URL U, unsigned long bytes, float etime); + + +#ifdef SIGNAL_CLIENT_PLATFORM +private void __signal_handler(int sig); +private void __signal_init(); +#else/*CANCEL_CLIENT_PLATFORM*/ +private void __signal_cleanup(); +#endif/*SIGNAL_CLIENT_PLATFORM*/ + + +BROWSER +new_browser(int id) +{ + BROWSER this; + + this = calloc(BROWSERSIZE,1); + this->id = id; + this->total = 0.0; + this->available = 0.0; + this->count = 0.0; + this->okay = 0; + this->fail = 0; + this->lowest = -1; + this->highest = 0.0; + this->elapsed = 0.0; + this->bytes = 0.0; + this->urls = NULL; + this->parts = new_array(); + this->rseed = urandom(); + return this; +} + +BROWSER +browser_destroy(BROWSER this) +{ + if (this != NULL) { + /** + * NOTE: this->urls is a reference to main.c:urls It was + * never instantiated in this class. We'll reclaim that + * memory when we deconstruct main.c:urls + */ + + if (this->parts != NULL) { + URL u; + while ((u = (URL)array_pop(this->parts)) != NULL) { + u = url_destroy(u); + } + this->parts = array_destroy(this->parts); + } + xfree(this); + } + this = NULL; + return this; +} + +unsigned long +browser_get_hits(BROWSER this) +{ + return this->hits; +} + +unsigned long long +browser_get_bytes(BROWSER this) +{ + return this->bytes; +} + +float +browser_get_time(BROWSER this) +{ + return this->time; +} + +unsigned int +browser_get_code(BROWSER this) +{ + return this->code; +} + +unsigned int +browser_get_okay(BROWSER this) +{ + return this->okay; +} + +unsigned int +browser_get_fail(BROWSER this) +{ + return this->fail; +} + +float +browser_get_himark(BROWSER this) +{ + return this->himark; +} + +float +browser_get_lomark(BROWSER this) +{ + return this->lomark; +} + +void * +start(BROWSER this) +{ + int x; + int y; + int max_y; + int ret; + int len; + this->conn = NULL; + this->conn = xcalloc(sizeof(CONN), 1); + this->conn->sock = -1; + this->conn->page = new_page(""); + this->conn->cache = new_cache(); + +#ifdef SIGNAL_CLIENT_PLATFORM + pthread_once(&this->once, __signal_init); + sigemptyset(&this->sigs); + sigaddset(&this->sigs, SIGUSR1); + pthread_sigmask(SIG_UNBLOCK, &this->sigs, NULL); +#else /*CANCEL_CLIENT_PLATFORM*/ + #if defined(_AIX) + pthread_cleanup_push((void(*)(void*))__signal_cleanup, NULL); + #else + pthread_cleanup_push((void*)__signal_cleanup, this->conn); + #endif + + /** + * NOTE: Beginning with siege 4.1.4, all platforms are cancel + * deferred. Execution continues until control reaches + * a cancel point specified by pthread_testcancel(); + */ + pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED, &this->type); + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &this->state); +#endif/*SIGNAL_CLIENT_PLATFORM*/ + + if (my.login == TRUE) { + URL tmp = new_url(array_next(my.lurl)); + url_set_ID(tmp, 0); + __request(this, tmp); + } + + len = (my.reps == -1) ? (int)array_length(this->urls) : my.reps; + y = (my.reps == -1) ? 0 : this->id * (my.length / my.cusers); + max_y = (int)array_length(this->urls); + for (x = 0; x < len; x++, y++) { + x = ((my.secs > 0) && ((my.reps <= 0)||(my.reps == MAXREPS))) ? 0 : x; + if (my.internet == TRUE) { + y = (unsigned int) (((double)pthread_rand_np(&(this->rseed)) / + ((double)RAND_MAX + 1) * my.length ) + .5); + y = (y >= my.length)?my.length-1:y; + y = (y < 0)?0:y; + } else { + /** + * URLs accessed sequentially; when reaching the end, start over + * with clean slate, ie. reset (delete) cookies (eg. to let a new + * session start) + */ + if (y >= max_y) { + y = 0; + if (my.expire) { + cookies_delete_all(my.cookies); + } + } + } + if (y >= max_y || y < 0) { + y = 0; + } + + /** + * This is the initial request from the command line + * or urls.txt file. If it is text/html then it will + * be parsed in __http request function. + */ + URL tmp = array_get(this->urls, y); + if (tmp != NULL && url_get_hostname(tmp) != NULL) { + this->auth.bids.www = 0; /* reset */ + if ((ret = __request(this, tmp))==FALSE) { + __increment_failures(); + } + } + + /** + * If we parsed http resources, we'll request them here + */ + if (my.parser == TRUE && this->parts != NULL) { + URL u; + while ((u = (URL)array_pop(this->parts)) != NULL) { + if (url_get_scheme(u) == UNSUPPORTED) { + ;; + } else if (my.cache && is_cached(this->conn->cache, u)) { + RESPONSE r = new_response(); + response_set_code(r, "HTTP/1.1 200 OK"); + response_set_from_cache(r, TRUE); + __display_result(this, r, u, 0, 0.00); + r = response_destroy(r); + ;; + } else { + this->auth.bids.www = 0; + // We'll only request files on the same host as the page + if (! __no_follow(url_get_hostname(u))) { + if ((ret = __request(this, u))==FALSE) { + __increment_failures(); + } + } + } + u = url_destroy(u); + } + } + + /** + * This feels like a safe cancel point + */ + pthread_testcancel(); + + /** + * Delay between interactions -D num /--delay=num + */ + if (my.delay >= 1) { + pthread_sleep_np( + (unsigned int) (((double)pthread_rand_np(&(this->rseed)) / + ((double)RAND_MAX + 1) * my.delay ) + .5) + ); + } else if (my.delay >= .001) { + pthread_usleep_np( + (unsigned int) (((double)pthread_rand_np(&(this->rseed)) / + ((double)RAND_MAX + 1) * my.delay * 1000000 ) + .0005) + ); + } + + if (my.failures > 0 && my.failed >= my.failures) { + break; + } + } + +#ifdef SIGNAL_CLIENT_PLATFORM +#else/*CANCEL_CLIENT_PLATFORM*/ + // XXX: every cleanup must have a pop + pthread_cleanup_pop(0); +#endif/*SIGNAL_CLIENT_PLATFORM*/ + + if (this->conn->sock >= 0){ + this->conn->connection.reuse = 0; + socket_close(this->conn); + } + this->conn->page = page_destroy(this->conn->page); + this->conn->cache = cache_destroy(this->conn->cache); //XXX: do we want to persist this? + xfree(this->conn); + this->conn = NULL; + + return NULL; +} + +void +browser_set_urls(BROWSER this, ARRAY urls) +{ + this->urls = urls; +} + +void +browser_set_cookies(BROWSER this, HASH cookies) +{ + int i = 0; + + this->cookies = cookies; + + if (this->cookies != NULL) { + char **keys = hash_get_keys(this->cookies); + for (i = 0; i < hash_get_entries(this->cookies); i ++){ + /** + * We need a local copy of the variable to pass to cookies_add + */ + char *tmp; + int len = strlen(hash_get(this->cookies, keys[i])); + tmp = xmalloc(len+2); + memset(tmp, '\0', len+2); + snprintf(tmp, len+1, "%s", (char*)hash_get(this->cookies, keys[i])); + cookies_add(my.cookies, tmp, "."); + xfree(tmp); + } + } +} + +private BOOLEAN +__request(BROWSER this, URL U) { + this->conn->scheme = url_get_scheme(U); + + switch (this->conn->scheme) { + case FTP: + return __ftp(this, U); + case HTTP: + case HTTPS: + default: + return __http(this, U); + } +} + +/** + * HTTP client request. + * The protocol is executed in http.c + * This function invoked functions inside that module + * and it gathers statistics about the request. + */ +private BOOLEAN +__http(BROWSER this, URL U) +{ + unsigned long bytes = 0; + int code, okay, fail; + float etime; + clock_t start, stop; + struct tms t_start, t_stop; + RESPONSE resp; + char *meta = NULL; +#ifdef HAVE_LOCALTIME_R + struct tm keepsake; +#endif/*HAVE_LOCALTIME_R*/ + time_t now; + struct tm *tmp; + size_t len; + char fmtime[65]; + URL redirect_url = NULL; + + page_clear(this->conn->page); + + if (my.csv) { + now = time(NULL); + #ifdef HAVE_LOCALTIME_R + tmp = (struct tm *)localtime_r(&now, &keepsake); + #else + tmp = localtime(&now); + #endif/*HAVE_LOCALTIME_R*/ + if (tmp) { + len = strftime(fmtime, 64, "%Y-%m-%d %H:%M:%S", tmp); + if (len == 0) { + memset(fmtime, '\0', 64); + snprintf(fmtime, 64, "n/a"); + } + } else { + snprintf(fmtime, 64, "n/a"); + } + } + + if (url_get_scheme(U) == UNSUPPORTED) { + if (my.verbose && !my.get && !my.print) { + NOTIFY ( + ERROR, + "%s %d %6.2f secs: %7d bytes ==> %s\n", + "UNSPPRTD", 501, 0.00, 0, "PROTOCOL NOT SUPPORTED BY SIEGE" + ); + } /* end if my.verbose */ + return FALSE; + } + + /* record transaction start time */ + start = times(&t_start); + if (! __init_connection(this, U)) return FALSE; + + /** + * write to socket with a GET/POST/PUT/DELETE/HEAD + */ + if (url_get_method(U) == POST || url_get_method(U) == PUT || url_get_method(U) == PATCH || + url_get_method(U) == DELETE || url_get_method(U) == OPTIONS) { + if ((http_post(this->conn, U)) == FALSE) { + this->conn->connection.reuse = 0; + socket_close(this->conn); + return FALSE; + } + } else { + if ((http_get(this->conn, U)) == FALSE) { + this->conn->connection.reuse = 0; + socket_close(this->conn); + return FALSE; + } + } + + /** + * read from socket and collect statistics. + */ + if ((resp = http_read_headers(this->conn, U))==NULL) { + this->conn->connection.reuse = 0; + socket_close(this->conn); + echo ("%s:%d NULL headers", __FILE__, __LINE__); + return FALSE; + } + + code = response_get_code(resp); + + if (code == 418) { + /** + * I don't know what server we're talking to but I + * know what it's not. It's not an HTTP server.... + */ + this->conn->connection.reuse = 0; + socket_close(this->conn); + stop = times(&t_stop); + etime = elapsed_time(stop - start); + this->hits ++; + this->time += etime; + this->fail += 1; + + __display_result(this, resp, U, 0, etime); + resp = response_destroy(resp); + return FALSE; + } + + bytes = http_read(this->conn, resp); + if (my.print) { + printf("%s\n", page_value(this->conn->page)); + } + + if (my.parser == TRUE) { + if (strmatch(response_get_content_type(resp), "text/html") && code < 300) { + int i; + html_parser(this->parts, U, page_value(this->conn->page)); + for (i = 0; i < (int)array_length(this->parts); i++) { + URL url = (URL)array_get(this->parts, i); + if (url_is_redirect(url)) { + URL tmp = (URL)array_remove(this->parts, i); + meta = xstrdup(url_get_absolute(tmp)); + tmp = url_destroy(tmp); + } + } + } + } + + if (!my.zero_ok && (bytes < 1)) { + this->conn->connection.reuse = 0; + socket_close(this->conn); + resp = response_destroy(resp); + echo ("%s:%d zero bytes back from server", __FILE__, __LINE__); + return FALSE; + } + stop = times(&t_stop); + etime = elapsed_time(stop - start); + okay = response_success(resp); + fail = response_failure(resp); + /** + * quantify the statistics for this client. + */ + this->bytes += bytes; + this->time += etime; + this->code += okay; + this->fail += fail; + if (code == 200) { + this->okay++; + } + + /** + * check to see if this transaction is the longest or shortest + */ + if (etime > __himark) { + __himark = etime; + } + if ((__lomark < 0) || (etime < __lomark)) { + __lomark = etime; + } + this->himark = __himark; + this->lomark = __lomark; + + /** + * verbose output, print statistics to stdout + */ + __display_result(this, resp, U, bytes, etime); + + /** + * close the socket and free memory. + */ + if (!my.keepalive) { + socket_close(this->conn); + } + + switch (code) { + case 200: + if (meta != NULL && strlen(meta) > 2) { + /** + * + */ + redirect_url = url_normalize(U, meta); + xfree(meta); + meta = NULL; + page_clear(this->conn->page); + if (empty(url_get_hostname(redirect_url))) { + url_set_hostname(redirect_url, url_get_hostname(U)); + } + url_set_redirect(U, FALSE); + url_set_redirect(redirect_url, FALSE); + if ((__request(this, redirect_url)) == FALSE) { + redirect_url = url_destroy(redirect_url); + return FALSE; + } + redirect_url = url_destroy(redirect_url); + } + break; + case 201: + if (my.follow && response_get_location(resp) != NULL) { + redirect_url = url_normalize(U, response_get_location(resp)); + if (empty(url_get_hostname(redirect_url))) { + url_set_hostname(redirect_url, url_get_hostname(U)); + } + if ((__request(this, redirect_url)) == FALSE) { + redirect_url = url_destroy(redirect_url); + return FALSE; + } + } + break; + case 301: + case 302: + case 303: + case 307: + if (my.follow && response_get_location(resp) != NULL) { + /** + * XXX: What if the server sends us + * Location: path/file.htm + * OR + * Location: /path/file.htm + */ + redirect_url = url_normalize(U, response_get_location(resp)); + + if (empty(url_get_hostname(redirect_url))) { + url_set_hostname(redirect_url, url_get_hostname(U)); + } + if (code == 307) { + url_set_conttype(redirect_url,url_get_conttype(U)); + url_set_method(redirect_url, url_get_method(U)); + + if (url_get_method(redirect_url) == POST || url_get_method(redirect_url) == PUT || + url_get_method(redirect_url) == PATCH || url_get_method(U) == DELETE || + url_get_method(U) == OPTIONS) { + url_set_postdata(redirect_url, url_get_postdata(U), url_get_postlen(U)); + } + } + if ((__request(this, redirect_url)) == FALSE) { + redirect_url = url_destroy(redirect_url); + return FALSE; + } + } + redirect_url = url_destroy(redirect_url); + break; + case 401: + /** + * WWW-Authenticate challenge from the WWW server + */ + this->auth.www = (this->auth.www==0) ? 1 : this->auth.www; + if ((this->auth.bids.www++) < my.bids - 1) { + BOOLEAN b; + if (response_get_www_auth_type(resp) == DIGEST) { + this->auth.type.www = DIGEST; + b = auth_set_digest_header( + my.auth, &(this->auth.wchlg), &(this->auth.wcred), &(this->rseed), + response_get_www_auth_realm(resp), response_get_www_auth_challenge(resp) + ); + if (b == FALSE) { + fprintf(stderr, "ERROR: Unable to respond to an authorization challenge\n"); + fprintf(stderr, " in the following realm: '%s'\n", response_get_www_auth_realm(resp)); + fprintf(stderr, " Did you set login credentials in the conf file?\n"); + resp = response_destroy(resp); + return FALSE; + } + } + if (response_get_www_auth_type(resp) == NTLM) { + this->auth.type.www = NTLM; + b = auth_set_ntlm_header ( + my.auth, HTTP, response_get_www_auth_challenge(resp), response_get_www_auth_realm(resp) + ); + } + if (response_get_www_auth_type(resp) == BASIC) { + this->auth.type.www = BASIC; + auth_set_basic_header(my.auth, HTTP, response_get_www_auth_realm(resp)); + } + if ((__request(this, U)) == FALSE) { + fprintf(stderr, "ERROR from http_request\n"); + return FALSE; + } + } + break; + case 407: + /** + * Proxy-Authenticate challenge from the proxy server. + */ + this->auth.proxy = (this->auth.proxy==0) ? 1 : this->auth.proxy; + if ((this->auth.bids.proxy++) < my.bids - 1) { + if (response_get_proxy_auth_type(resp) == DIGEST) { + BOOLEAN b; + this->auth.type.proxy = DIGEST; + b = auth_set_digest_header ( + my.auth, &(this->auth.pchlg), &(this->auth.pcred), &(this->rseed), + response_get_proxy_auth_realm(resp), response_get_proxy_auth_challenge(resp) + ); + if (b == FALSE) { + fprintf(stderr, "ERROR: Unable to respond to a proxy authorization challenge\n"); + fprintf(stderr, " in the following HTTP realm: '%s'\n", response_get_proxy_auth_realm(resp)); + fprintf(stderr, " Did you set proxy-login credentials in the conf file?\n"); + resp = response_destroy(resp); + return FALSE; + } + } + if (response_get_proxy_auth_type(resp) == BASIC) { + this->auth.type.proxy = BASIC; + auth_set_basic_header(my.auth, PROXY, response_get_proxy_auth_realm(resp)); + } + if ((__request(this, U)) == FALSE) + return FALSE; + } + break; + case 408: + case 500: + case 501: + case 502: + case 503: + case 504: + case 505: + case 506: + case 507: + case 508: + case 509: + return FALSE; + default: + break; + } + + this->hits++; + resp = response_destroy(resp); + + return TRUE; +} + +/** + * HTTP client request. + * The protocol is executed in http.c + * This function invoked functions inside that module + * and it gathers statistics about the request. + */ +private BOOLEAN +__ftp(BROWSER this, URL U) +{ + int pass; + int fail; + int code = 0; // capture the relevant return code + float etime; // elapsed time + CONN *D = NULL; // FTP data connection + size_t bytes = 0; // bytes from server + clock_t start, stop; + struct tms t_start, t_stop; + + D = xcalloc(sizeof(CONN), 1); + D->sock = -1; + + if (! __init_connection(this, U)) { + NOTIFY ( + ERROR, "%s:%d connection failed %s:%d", + __FILE__, __LINE__, url_get_hostname(U), url_get_port(U) + ); + xfree(D); + return FALSE; + } + + start = times(&t_start); + if (this->conn->sock < 0) { + NOTIFY ( + ERROR, "%s:%d connection failed %s:%d", + __FILE__, __LINE__, url_get_hostname(U), url_get_port(U) + ); + socket_close(this->conn); + xfree(D); + return FALSE; + } + + if (url_get_username(U) == NULL || strlen(url_get_username(U)) < 1) { + url_set_username(U, auth_get_ftp_username(my.auth, url_get_hostname(U))); + } + + if (url_get_password(U) == NULL || strlen(url_get_password(U)) < 1) { + url_set_password(U, auth_get_ftp_password(my.auth, url_get_hostname(U))); + } + if (ftp_login(this->conn, U) == FALSE) { + if (my.verbose) { + int color = __select_color(this->conn->ftp.code); + DISPLAY ( + color, "FTP/%d %6.2f secs: %7lu bytes ==> %-6s %s", + this->conn->ftp.code, 0.0, bytes, url_get_method_name(U), url_get_request(U) + ); + } + xfree(D); + this->fail += 1; + return FALSE; + } + + ftp_pasv(this->conn); + if (this->conn->ftp.pasv == TRUE) { + debug("Connecting to: %s:%d", this->conn->ftp.host, this->conn->ftp.port); + D->sock = new_socket(D, this->conn->ftp.host, this->conn->ftp.port); + if (D->sock < 0) { + debug ( + "%s:%d connection failed. error %d(%s)",__FILE__, __LINE__, errno,strerror(errno) + ); + this->fail += 1; + socket_close(D); + xfree(D); + return FALSE; + } + } + if (url_get_method(U) == POST || url_get_method(U) == PUT || url_get_method(U) == PATCH || + url_get_method(U) == DELETE || url_get_method(U) == OPTIONS) { + ftp_stor(this->conn, U); + bytes = ftp_put(D, U); + code = this->conn->ftp.code; + } else { + if (ftp_size(this->conn, U) == TRUE) { + if (ftp_retr(this->conn, U) == TRUE) { + bytes = ftp_get(D, U, this->conn->ftp.size); + } + } + code = this->conn->ftp.code; + } + socket_close(D); + ftp_quit(this->conn); + + pass = (bytes == this->conn->ftp.size) ? 1 : 0; + fail = (pass == 0) ? 1 : 0; + stop = times(&t_stop); + etime = elapsed_time(stop - start); + this->bytes += bytes; + this->time += etime; + this->code += pass; + this->fail += fail; + + /** + * check to see if this transaction is the longest or shortest + */ + if (etime > __himark) { + __himark = etime; + } + if ((__lomark < 0) || (etime < __lomark)) { + __lomark = etime; + } + this->himark = __himark; + this->lomark = __lomark; + + if (my.verbose) { + int color = (my.color == TRUE) ? __select_color(code) : -1; + DISPLAY ( + color, "FTP/%d %6.2f secs: %7lu bytes ==> %-6s %s", + code, etime, bytes, url_get_method_name(U), url_get_request(U) + ); + } + this->hits++; + xfree(D); + return TRUE; +} + +private BOOLEAN +__init_connection(BROWSER this, URL U) +{ + this->conn->pos_ini = 0; + this->conn->inbuffer = 0; + this->conn->content.transfer = NONE; + this->conn->content.length = (size_t)~0L;// VL - issue #2, 0 is a legit.value + this->conn->connection.keepalive = (this->conn->connection.max==1)?0:my.keepalive; + this->conn->connection.reuse = (this->conn->connection.max==1)?0:my.keepalive; + this->conn->connection.tested = (this->conn->connection.tested==0)?1:this->conn->connection.tested; + this->conn->auth.www = this->auth.www; + this->conn->auth.wchlg = this->auth.wchlg; + this->conn->auth.wcred = this->auth.wcred; + this->conn->auth.proxy = this->auth.proxy; + this->conn->auth.pchlg = this->auth.pchlg; + this->conn->auth.pcred = this->auth.pcred; + this->conn->auth.type.www = this->auth.type.www; + this->conn->auth.type.proxy = this->auth.type.proxy; + memset(this->conn->buffer, 0, sizeof(this->conn->buffer)); + + debug ( + "%s:%d attempting connection to %s:%d", + __FILE__, __LINE__, + (auth_get_proxy_required(my.auth))?auth_get_proxy_host(my.auth):url_get_hostname(U), + (auth_get_proxy_required(my.auth))?auth_get_proxy_port(my.auth):url_get_port(U) + ); + + if (!this->conn->connection.reuse || this->conn->connection.status == 0) { + if (auth_get_proxy_required(my.auth)) { + debug ( + "%s:%d creating new socket: %s:%d", + __FILE__, __LINE__, auth_get_proxy_host(my.auth), auth_get_proxy_port(my.auth) + ); + this->conn->sock = new_socket(this->conn, auth_get_proxy_host(my.auth), auth_get_proxy_port(my.auth)); + } else { + debug ( + "%s:%d creating new socket: %s:%d", + __FILE__, __LINE__, url_get_hostname(U), url_get_port(U) + ); + this->conn->sock = new_socket(this->conn, url_get_hostname(U), url_get_port(U)); + } + } + + if (my.keepalive) { + this->conn->connection.reuse = TRUE; + } + + if (this->conn->sock < 0) { + debug ( + "%s:%d connection failed. error %d(%s)",__FILE__, __LINE__, errno,strerror(errno) + ); + socket_close(this->conn); + return FALSE; + } + + debug ( + "%s:%d good socket connection: %s:%d", + __FILE__, __LINE__, + (auth_get_proxy_required(my.auth))?auth_get_proxy_host(my.auth):url_get_hostname(U), + (auth_get_proxy_required(my.auth))?auth_get_proxy_port(my.auth):url_get_port(U) + ); + + if (url_get_scheme(U) == HTTPS) { + if (auth_get_proxy_required(my.auth)) { + https_tunnel_request(this->conn, url_get_hostname(U), url_get_port(U)); + https_tunnel_response(this->conn); + } + this->conn->encrypt = TRUE; + if (SSL_initialize(this->conn, url_get_hostname(U))==FALSE) { + return FALSE; + } + } + return TRUE; +} + +private void +__display_result(BROWSER this, RESPONSE resp, URL U, unsigned long bytes, float etime) +{ + char fmtime[65]; + #ifdef HAVE_LOCALTIME_R + struct tm keepsake; + #endif/*HAVE_LOCALTIME_R*/ + time_t now; + struct tm * tmp; + size_t len; + + + if (my.csv) { + now = time(NULL); + #ifdef HAVE_LOCALTIME_R + tmp = (struct tm *)localtime_r(&now, &keepsake); + #else + tmp = localtime(&now); + #endif/*HAVE_LOCALTIME_R*/ + if (tmp) { + len = strftime(fmtime, 64, "%Y-%m-%d %H:%M:%S", tmp); + if (len == 0) { + memset(fmtime, '\0', 64); + snprintf(fmtime, 64, "n/a"); + } + } else { + snprintf(fmtime, 64, "n/a"); + } + } + + /** + * verbose output, print statistics to stdout + */ + if ((my.verbose && !my.get && !my.print) && (!my.debug)) { + int color = (my.color == TRUE) ? __select_color(response_get_code(resp)) : -1; + DATE date = new_date(NULL); + char *stamp = (my.timestamp)?date_stamp(date):""; + char *cached = response_get_from_cache(resp) ? "(C)":" "; + if (my.color && response_get_from_cache(resp) == TRUE) { + color = GREEN; + } + + if (my.csv) { + if (my.display) + DISPLAY(color, "%s%s%s%4d,%s,%d,%6.2f,%7lu,%s,%d,%s", + stamp, (my.mark)?my.markstr:"", (my.mark)?",":"", this->id, response_get_protocol(resp), + response_get_code(resp), etime, bytes, url_get_display(U), url_get_ID(U), fmtime + ); + else + DISPLAY(color, "%s%s%s%s,%d,%6.2f,%7lu,%s,%d,%s", + stamp, (my.mark)?my.markstr:"", (my.mark)?",":"", response_get_protocol(resp), + response_get_code(resp), etime, bytes, url_get_display(U), url_get_ID(U), fmtime + ); + } else { + if (my.display) + DISPLAY( + color, "%4d) %s %d %6.2f secs: %7lu bytes ==> %-4s %s", + this->id, response_get_protocol(resp), response_get_code(resp), + etime, bytes, url_get_method_name(U), url_get_display(U) + ); + else + DISPLAY ( + color, "%s%s %d%s %5.2f secs: %7lu bytes ==> %-4s %s", + stamp, response_get_protocol(resp), response_get_code(resp), cached, + etime, bytes, url_get_method_name(U), url_get_display(U) + ); + } /* else not my.csv */ + date = date_destroy(date); + } + return; +} + +private void +__increment_failures() +{ + pthread_mutex_lock(&(my.lock)); + my.failed++; + pthread_mutex_unlock(&(my.lock)); + pthread_testcancel(); +} + +private BOOLEAN +__no_follow(const char *hostname) +{ + int i; + + for (i = 0; i < my.nomap->index; i++) { + if (stristr(hostname, my.nomap->line[i]) != NULL) { + return TRUE; + } + } + return FALSE; +} + + +private int +__select_color(int code) +{ + switch(code) { + case 150: + case 200: + case 201: + case 202: + case 203: + case 204: + case 205: + case 206: + case 226: + return BLUE; + case 300: + case 301: + case 302: + case 303: + case 304: + case 305: + case 306: + case 307: + return CYAN; + case 400: + case 401: + case 402: + case 403: + case 404: + case 405: + case 406: + case 407: + case 408: + case 409: + case 410: + case 411: + case 412: + case 413: + case 414: + case 415: + case 416: + case 417: + return MAGENTA; + case 500: + case 501: + case 502: + case 503: + case 504: + case 505: + default: // WTF? + return RED; + } + return RED; +} + +#ifdef SIGNAL_CLIENT_PLATFORM +private void +__signal_handler(int sig) +{ + pthread_exit(&sig); +} + +private void +__signal_init() +{ + struct sigaction sa; + + sa.sa_handler = signal_handler; + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sigaction(SIGUSR1, &sa, NULL); +} +#else/*CANCEL_CLIENT_PLATFORM*/ +private void +__signal_cleanup() +{ + return; +} +#endif diff --git a/siege-4.1.6/src/browser.h b/siege-4.1.6/src/browser.h new file mode 100644 index 0000000..0ce99f4 --- /dev/null +++ b/siege-4.1.6/src/browser.h @@ -0,0 +1,46 @@ +/** + * Browser instance + * + * Copyright (C) 2016 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef __BROWSER_H +#define __BROWSER_H + +#include +#include + +typedef struct BROWSER_T *BROWSER; +extern size_t BROWSERSIZE; + +BROWSER new_browser(int id); +BROWSER browser_destroy(BROWSER this); +void * start(BROWSER this); +void browser_set_urls(BROWSER this, ARRAY urls); +void browser_set_cookies(BROWSER this, HASH cookies); +unsigned long browser_get_hits(BROWSER this); +unsigned long long browser_get_bytes(BROWSER this); +float browser_get_time(BROWSER this); +unsigned int browser_get_code(BROWSER this); +unsigned int browser_get_okay(BROWSER this); +unsigned int browser_get_fail(BROWSER this); +float browser_get_himark(BROWSER this); +float browser_get_lomark(BROWSER this); + +#endif/*__BROWSER_H*/ diff --git a/siege-4.1.6/src/cache.c b/siege-4.1.6/src/cache.c new file mode 100644 index 0000000..e8c1714 --- /dev/null +++ b/siege-4.1.6/src/cache.c @@ -0,0 +1,244 @@ +/** + * HTTP Logical Local Cache + * (we don't actually store anything) + * + * Copyright (C) 2016 + * Jeffrey Fulmer - , et al. + * + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define xfree(x) free(x) +#define xmalloc(x) malloc(x) +#define xstrdup(x) strdup(x) + +struct CACHE_T +{ + HASH cache; + int hlen; + char * header; +}; + +private const char* keys[] = { "ET_", "LM_", "EX_", NULL }; +private char * __build_key(CTYPE type, URL U); + +size_t CACHESIZE = sizeof(struct CACHE_T); + +CACHE +new_cache() +{ + CACHE this = calloc(CACHESIZE, 1); + this->cache = new_hash(); + this->header = NULL; + hash_set_destroyer(this->cache, (void*)date_destroy); + return this; +} + +CACHE +cache_destroy(CACHE this) +{ + if (this != NULL) { + this->cache = hash_destroy(this->cache); + xfree(this); + this = NULL; + } + return this; +} + +BOOLEAN +cache_contains(CACHE this, CTYPE type, URL U) +{ + char *key; + BOOLEAN found = FALSE; + + if (!my.cache) return FALSE; + + key = __build_key(type, U); + if (key == NULL) { + return FALSE; + } + found = hash_contains(this->cache, key); + + xfree(key); + return found; +} + +BOOLEAN +is_cached(CACHE this, URL U) +{ + DATE day = NULL; + char *key = __build_key(C_EXPIRES, U); + + if (hash_contains(this->cache, key)) { + day = (DATE)hash_get(this->cache, key); + if (date_expired(day) == FALSE) { + return TRUE; + } else { + hash_remove(this->cache, key); + return FALSE; + } + } + return FALSE; +} + +void +cache_add(CACHE this, CTYPE type, URL U, char *date) +{ + char *key = __build_key(type, U); + + if (key == NULL) return; + + if (type != C_EXPIRES && hash_contains(this->cache, key)) { + // NOTE: hash destroyer was set in the constructor + hash_remove(this->cache, key); + } + + switch (type) { + case C_ETAG: + hash_nadd(this->cache, key, new_etag(date), DATESIZE); + break; + case C_EXPIRES: + if (hash_contains(this->cache, key) == TRUE) { + break; + } + hash_nadd(this->cache, key, new_date(date), DATESIZE); + break; + default: + hash_nadd(this->cache, key, new_date(date), DATESIZE); + break; + } + xfree(key); + + return; +} + +DATE +cache_get(CACHE this, CTYPE type, URL U) +{ + DATE date; + char *key = __build_key(type, U); + + if (key == NULL) return NULL; + + date = (DATE)hash_get(this->cache, key); + xfree(key); + + return date; +} + +/** + * Yeah, this function is kind of kludgy. We have to + * localize everything in order to fit it into our OO + * architecture but the benefits out-weigh the negatives + * + * From an API perspective, we don't want to worry about + * managing memory outside of the object. + */ +char * +cache_get_header(CACHE this, CTYPE type, URL U) +{ + DATE d = NULL; + DATE e = NULL; + char *key = NULL; + char *exp = NULL; + char *ptr = NULL; + char tmp[256]; + + /** + * If we don't have it cached, there's no + * point in continuing... + */ + if (! cache_contains(this, type, U)) { + return NULL; + } + + /** + * Check it's freshness + */ + exp = __build_key(C_EXPIRES, U); + if (exp) { + e = (DATE)hash_get(this->cache, exp); + xfree(exp); + if (date_expired(e)) { + // remove entries + return NULL; + } + } + + /** + * If we can't build a key, we better bail... + */ + key = __build_key(type, U); + if (key == NULL) { + return NULL; + } + + /** + * At this point we should be able to grab + * a date but we'll test and bail on failure + */ + d = (DATE)hash_get(this->cache, key); + if (d == NULL) { + return NULL; + } + + memset(tmp, '\0', 256); + switch (type) { + case C_ETAG: + ptr = strdup(date_get_etag(d)); // need a local copy + if (empty(ptr)) return ""; // should never happen + snprintf(tmp, 256, "If-None-Match: %s\015\012", ptr); + this->header = strdup(tmp); + xfree(ptr); + return this->header; + default: + ptr = strdup(date_get_rfc850(d)); + if (empty(ptr)) return ""; + snprintf(tmp, 256, "If-Modified-Since: %s\015\012", ptr); + this->header = strdup(tmp); + xfree(ptr); + return this->header; + } + return NULL; // Unsupported header or a WTF? +} + +private char * +__build_key(CTYPE type, URL U) +{ + int len = 0; + char *key = NULL; + + if (U == NULL || url_get_request(U) == NULL || strlen(url_get_request(U)) < 1) { + return NULL; + } + len = strlen(url_get_request(U)) + strlen(keys[type])+1; + key = (char *)xmalloc(len+1); + memset(key, '\0', len+1); + snprintf(key, len, "%s%s", keys[type], url_get_request(U)); + return key; +} diff --git a/siege-4.1.6/src/cache.h b/siege-4.1.6/src/cache.h new file mode 100644 index 0000000..e7e9961 --- /dev/null +++ b/siege-4.1.6/src/cache.h @@ -0,0 +1,51 @@ +/** + * HTTP Cache + * + * Copyright (C) 2013-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef __CACHE_H +#define __CACHE_H + +#include +#include +#include +#include +#include + +typedef enum { + C_ETAG = 0, + C_LAST = 1, + C_EXPIRES = 2 +} CTYPE; + + +typedef struct CACHE_T *CACHE; +extern size_t CACHESIZE; + +CACHE new_cache(); +CACHE cache_destroy(CACHE this); +BOOLEAN cache_contains(CACHE this, CTYPE type, URL U); +void cache_add(CACHE this, CTYPE type, URL U, char *date); +DATE cache_get(CACHE this, CTYPE type, URL U); +char * cache_get_header(CACHE this, CTYPE type, URL U); +BOOLEAN is_cached(CACHE this, URL U); + + +#endif/*__CACHE_H*/ diff --git a/siege-4.1.6/src/cfg.c b/siege-4.1.6/src/cfg.c new file mode 100644 index 0000000..8105ea0 --- /dev/null +++ b/siege-4.1.6/src/cfg.c @@ -0,0 +1,236 @@ +/** + * Configuration file support + * + * Copyright (C) 2000-2015 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * -- + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +BOOLEAN is_variable_line(char *line); + +/** + * Ignores comment lines beginning with + * '#' empty lines beginning with \n + * Takes a char* as an argument + */ +void +parse(char *str) +{ + char *ch; + char *sp; + char *sl; + + /** + * An indented comment could be problematic. + * Let's trim the string then see if the first + * character is a comment. + */ + str = trim(str); + if (str[0] == '#') { + str[0] = '\0'; + } + + sp = strchr(str, ' '); + sl = strchr(str, '/'); + if (sl==NULL && sp != NULL) { + ch = (char *)strstr(str, "#"); + if (ch) {*ch = '\0';} + } + ch = (char *)strstr(str, "\n"); + if (ch) {*ch = '\0';} + + trim(str); +} + +int +count(char* s, char c) +{ + return *s == '\0' ? 0 : count(s + 1, c) + (*s == c); +} + +/** + * Reads filename into memory and populates + * the config_t struct with the result. Uses + * parse to ignore comments and empty lines. + */ +int +read_cfg_file(LINES *l, char *filename) +{ + /* file pointer */ + FILE *file; + HASH H; + char *line; + char *option; + char *value; + + /* char array to hold contents */ + + /* make sure LINES has been initialized. */ + if (!l) { + printf("Structure not initialized!\n"); + return -1; + } + + if ((file = fopen(filename, "r")) == NULL) { + /* this is a fatal problem, but we want + to enlighten the user before dying */ + NOTIFY(WARNING, "unable to open file: %s", filename); + display_help(); + exit(EXIT_FAILURE); + } + + line = xmalloc(BUFSIZE); + memset(line, '\0', BUFSIZE); + + H = new_hash(); + + l->index = 0; + while (fgets(line, BUFSIZE, file) != NULL) { + int num; char *p = strchr(line, '\n'); + /** + * if the line is longer than our buffer, we're + * just going to chuck it rather then fsck with it. + */ + if(p) { + *p = '\0'; + } else { + /** + * Small fix by Gargoyle - 19/07/2006 + * Check to see if we are at the end of the file. If so + * keep the line, otherwise throw it away! + */ + if ((num = fgetc(file)) != EOF) { + while ((num = fgetc(file)) != EOF && num != '\n'); + line[0]='\0'; + } + } + parse(line); + chomp(line); + if (strlen(line) == 0) { + ; + } else if (is_variable_line(line)) { + char *tmp = line; + option = tmp; + while (*tmp && !ISSPACE((int)*tmp) && !ISSEPARATOR(*tmp)) + tmp++; + *tmp++=0; + while (ISSPACE((int)*tmp) || ISSEPARATOR(*tmp)) + tmp++; + value = tmp; + while (*tmp) + tmp++; + *tmp++=0; + hash_add(H, option, value); + } else { + char *tmp = xstrdup(line); + int r = 0; + int cnt = 0; + cnt += count(tmp, '$'); + while (strstr(tmp, "$")) { + if (strstr(tmp, "\\$")) { + tmp = escape(tmp); + } else { + tmp = evaluate(H, tmp); + } + r++; + if (r == cnt) break; + } + l->line = (char**)realloc(l->line, sizeof(char *) * (l->index + 1)); + l->line[l->index] = (char *)strdup(tmp); + l->index++; + + free(tmp); + } + memset(line, 0, BUFSIZE); + } + + fclose(file); + xfree(line); + hash_destroy(H); + return l->index; +} + +int +read_cmd_line(LINES *l, char *url) +{ + int x = 0; + /* char array to hold contents */ + char head[BUFSIZE]; + + /* make sure config_t has been initialized. */ + if(!l){ + printf("Structure not initialized!\n"); + return -1; + } + + l->index = 0; + while(x < 4){ + snprintf(head, sizeof(head), "%s", url); + parse(head); + chomp(head); + if (strlen(head) == 0); + else { + l->line = (char**)realloc(l->line, sizeof(char *) * (l->index + 1)); + l->line[l->index] = (char *)strdup(head); + l->index++; + } + x++; + } + return l->index; +} + +BOOLEAN +is_variable_line(char *line) +{ + char *pos, *x; + char c; + /** + * check for variable assignment; make sure that on the left side + * of the = is nothing but letters, numbers, and/or underscores. + */ + pos = strstr(line, "="); + if (pos != NULL) { + for (x = line; x < pos; x++) { + c = *x; + /* c must be A-Z, a-z, 0-9, or underscore. */ + if ((c < 'a' || c > 'z') && + (c < 'A' || c > 'Z') && + (c < '0' || c > '9') && + (c != '_')){ + return FALSE; + } + } + } else { + /** + * if it has no '=' then it can't be a variable line + */ + return FALSE; + } + return TRUE; +} + diff --git a/siege-4.1.6/src/cfg.h b/siege-4.1.6/src/cfg.h new file mode 100644 index 0000000..392d941 --- /dev/null +++ b/siege-4.1.6/src/cfg.h @@ -0,0 +1,31 @@ +/** + * Configuration file support + * + * Copyright (C) 2000-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * -- + * + */ +#ifndef CFG_H +#define CFG_H +#include + +int read_cfg_file( LINES *l, char *filename ); +int read_cmd_line( LINES *l, char *url ); + +#endif/*CFG_H*/ diff --git a/siege-4.1.6/src/cookie.c b/siege-4.1.6/src/cookie.c new file mode 100644 index 0000000..100f3d3 --- /dev/null +++ b/siege-4.1.6/src/cookie.c @@ -0,0 +1,511 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct COOKIE_T { + char* name; + char* value; + char* domain; + char* path; + time_t expires; + char * expstr; + char * none; + char * string; + BOOLEAN session; + BOOLEAN secure; +}; + +size_t COOKIESIZE = sizeof(struct COOKIE_T); + +private BOOLEAN __parse_input(COOKIE this, char *str, char *host); +private char * __parse_pair(char **str); +private int __parse_time(const char *str); +private int __mkmonth(char * s, char ** ends); +private char * months[12] = { + "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" +}; + +/** + * Creates a cookie with the value of the + * Set-cookie header. + * + * Set-Cookie: exes=X; expires=Fri, 01-May-2015 12:51:25 GMT + * ^ strip ^ ^_ pass all this to the constructor ^ + */ +COOKIE +new_cookie(char *str, char *host) +{ + COOKIE this; + + this = calloc(sizeof(struct COOKIE_T), 1); + this->name = NULL; + this->value = NULL; + this->domain = NULL; + this->expires = 0; + this->expstr = NULL; + this->string = NULL; + this->session = TRUE; + this->none = strdup("none"); + if (__parse_input(this, str, host) == FALSE) { + return cookie_destroy(this); + } + return this; +} + +/** + * Destroys a cookie by freeing all allocated memory + */ +COOKIE +cookie_destroy(COOKIE this) +{ + if (this != NULL) { + free(this->name); + free(this->value); + free(this->domain); + free(this->expstr); + free(this->path); + free(this->none); + free(this->string); + free(this); + } + return NULL; +} + +void +cookie_set_name(COOKIE this, char *str) +{ + size_t len = strlen(str)+1; + this->name = malloc(sizeof this->name * len); + memset(this->name, '\0', len); + memcpy(this->name, str, len); +} + +void +cookie_set_value(COOKIE this, char *str) +{ + size_t len = strlen(str)+1; + this->value = malloc(sizeof this->value * len); + memset(this->value, '\0', len); + memcpy(this->value, str, len); +} + +void +cookie_set_path(COOKIE this, char *str) +{ + size_t len = strlen(str)+1; + this->path = malloc(sizeof this->path * len); + memset(this->path, '\0', len); + memcpy(this->path, str, len); +} + +void +cookie_set_domain(COOKIE this, char *str) +{ + size_t len = strlen(str)+1; + this->domain = malloc(sizeof this->domain * len); + memset(this->domain, '\0', len); + memcpy(this->domain, str, len); +} + +void +cookie_set_expires(COOKIE this, time_t expires) +{ + this->expires = expires; +} + +/** + * Returns the name of the cookie + * Example: Set-Cookie: exes=X; expires=Fri, 01-May-2015 12:51:25 GMT + * Returns: exes + */ +char * +cookie_get_name(COOKIE this) +{ + if (this == NULL && this->name == NULL) + return this->none; + return this->name; +} + +/** + * Returns the value of the cookie + * Example: Set-Cookie: exes=X; expires=Fri, 01-May-2015 12:51:25 GMT + * Returns: X + */ +char * +cookie_get_value(COOKIE this) +{ + if (this == NULL && this->value == NULL) + return this->none; + return this->value; +} + +/** + * Returns the value of the domain + */ +char * +cookie_get_domain(COOKIE this) +{ + if (this == NULL && this->domain == NULL) + return this->none; + return this->domain; +} + +/** + * Returns the value of the path + */ +char * +cookie_get_path(COOKIE this) +{ + if (this == NULL && this->path == NULL) + return this->none; + return this->path; +} + +time_t +cookie_get_expires(COOKIE this) +{ + if (this == NULL) + return -1; + return this->expires; +} + +BOOLEAN +cookie_get_session(COOKIE this) +{ + if (this == NULL) + return TRUE; + return this->session; +} + +/** + * Returns the string value of the cookie + * (Mainly a debugging tool; we want cookie_expires for anything useful) + * Example: Set-Cookie: exes=X; expires=Fri, 01-May-2015 12:51:25 GMT + * Returns: Fri, 01 May 2015 12:51:25 -0400 + * + * @return this->expstr Encapsulated memory free'd in the deconstuctor + */ +char * +cookie_expires_string(COOKIE this) +{ + /*if (this->expstr == NULL) + this->expstr = malloc(sizeof (char*) * 128); + else */ + this->expstr = realloc(this->expstr, sizeof(this->expstr)*128); + memset(this->expstr, '\0', 128); + struct tm * timeinfo; + timeinfo = localtime (&this->expires); + strftime(this->expstr, 128, "%a, %d %b %Y %H:%M:%S %z", timeinfo); + return this->expstr; +} + +char * +cookie_to_string(COOKIE this) +{ + int len = 4096; + + if (this->name == NULL || this->value == NULL || this->domain == NULL) return NULL; + + this->string = realloc(this->string, sizeof(this->string)*len); + memset(this->string, '\0', len); + + snprintf( + this->string, len, "%s=%s; domain=%s; path=%s; expires=%lld", + this->name, this->value, (this->domain != NULL) ? this->domain : "none", + (this->path != NULL) ? this->path : "/", (long long)this->expires + ); + return this->string; +} + +/** + * XXX: should add this to convenience lib + */ +void * +strealloc(char *old, char *str) +{ + size_t num = strlen(str) + 1; + char *newptr = realloc(old, sizeof (char*) * num); + if (newptr) { + memset(newptr, '\0', num+1); + memcpy(newptr, str, num); + } + return newptr; +} + +void +cookie_reset_value(COOKIE this, char *value) +{ + this->value = strealloc(this->value, value); +} + +COOKIE +cookie_clone(COOKIE this, COOKIE that) +{ + this->value = strealloc(this->value, cookie_get_value(that)); + this->domain = strealloc(this->domain, cookie_get_domain(that)); + this->path = strealloc(this->path, cookie_get_path(that)); + //if ((time_t*)cookie_get_expires(that) != 0) { + if (this->expires > 0) { + this->expires = time((time_t*)cookie_get_expires(that)); + } + if (this->session == TRUE) { + this->session = cookie_get_session(that); + } + return this; +} + +private BOOLEAN +__parse_input(COOKIE this, char *str, char *host) +{ + char *tmp; + char *key; + char *val; + char *pos; + int expires = 0; + + if (str == NULL) { + printf("Coookie: Unable to parse header string"); + return FALSE; + } + while (*str && *str == ' ') str++; // assume nothing... + + char *newline = (char*)str; + while ((tmp = __parse_pair(&newline)) != NULL) { + key = tmp; + while (*tmp && !ISSPACE((int)*tmp) && !ISSEPARATOR(*tmp)) + tmp++; + *tmp++=0; + while (ISSPACE((int)*tmp) || ISSEPARATOR(*tmp)) + tmp++; + val = tmp; + while (*tmp) + tmp++; + if (!strncasecmp(key, "expires", 7)) { + expires = __parse_time(val); + if (expires != -1) { + this->session = FALSE; + this->expires = expires; + } // else this->expires was initialized 0 in the constructor + } else if (!strncasecmp(key, "max-age", 7)) { + struct tm *gmt; + long max = -1; + time_t now = time(NULL); + gmt = gmtime(&now); + now = mktime(gmt); + max = atof(val); + if (max != -1) { + /** + * XXX: This "works" but I can't implement it until I understand the hour diff + * + time_t tmp = now+max-3600; + char buf1[20]; + char buf2[20]; + strftime(buf1, 20, "%Y-%m-%d %H:%M:%S", localtime(&this->expires)); + strftime(buf2, 20, "%Y-%m-%d %H:%M:%S", localtime(&tmp)); + printf("!!!!!!!!!!!!!!! %ld %ld !!!!!!!!!!!!!!!\n", this->expires, tmp); + printf("expires: %s\n", buf1); + printf("max-age: %s\n", buf2); + this->expires = tmp; // I can't use this until I understand the hour diff + */ + this->session = FALSE; + } + } else if (!strncasecmp(key, "path", 4)) { + this->path = strdup(val); + } else if (!strncasecmp(key, "domain", 6)) { + cookie_set_domain(this, val); + } else if (!strncasecmp(key, "secure", 6)) { + this->secure = TRUE; + } else { + this->name = strdup(key); + this->value = strdup(val); + } + } + if (this->expires < 1000) { + this->session = TRUE; + } + + if (this->domain == NULL) { + pos = strchr (host, '.'); + if (pos == NULL) + this->domain = xstrdup("."); + else + this->domain = xstrdup(pos); + } + return TRUE; +} + +private char * +__parse_pair(char **str) +{ + int okay = 0; + char *p = *str; + char *pair = NULL; + + if (!str || !*str) return NULL; + + pair = p; + if (p == NULL) return NULL; + + while (*p != '\0' && *p != ';') { + if (!*p) { + *str = p; + return NULL; + } + if (*p == '=') okay = 1; + p++; + } + *p++ = '\0'; + *str = p; + trim(pair); + + if (okay) { + return pair; + } else { + return NULL; + } +} + + +/** + * We'll travel back in time to Jan 2, 1900 to determine + * what timezone we're in. With that information, we can + * return an offset in hours. For example, EST returns -5 + */ +private int +__utc_offset() +{ + int hrs; + struct tm * ptr; + time_t zip = 24*60*60L; + + ptr = localtime(&zip); + hrs = ptr->tm_hour; + + if (ptr->tm_mday < 2) + hrs -= 24; + + return hrs; +} + + +/** + * Mostly copied from the MIT reference library HTWWWStr.c + * (c) COPYRIGHT MIT 1995. + * Please first read the full copyright statement in the file COPYRIGH + * With changes by J. Fulmer for the inclusion to siege. + * + * Wkd, 00 Mon 0000 00:00:00 GMT (RFC1123) + * Weekday, 00-Mon-00 00:00:00 GMT (RFC850) + * Wkd Mon 00 00:00:00 0000 GMT (CTIME) + * 1*DIGIT (delta-seconds) + */ +private int +__parse_time(const char *str) +{ + char * s; + struct tm tm; + time_t rv; + time_t now; + + if (!str) return 0; + + if ((s = strchr(str, ','))) { /* Thursday, 10-Jun-93 01:29:59 GMT */ + s++; /* or: Thu, 10 Jan 1993 01:29:59 GMT */ + while (*s && *s==' ') s++; + if (strchr(s,'-')) { /* First format */ + if ((int)strlen(s) < 18) { + return 0; + } + tm.tm_mday = strtol(s, &s, 10); + tm.tm_mon = __mkmonth(++s, &s); + tm.tm_year = strtol(++s, &s, 10) - 1900; + tm.tm_hour = strtol(++s, &s, 10); + tm.tm_min = strtol(++s, &s, 10); + tm.tm_sec = strtol(++s, &s, 10); + } else { /* Second format */ + if ((int)strlen(s) < 20) { + return 0; + } + tm.tm_mday = strtol(s, &s, 10); + tm.tm_mon = __mkmonth(s, &s); + tm.tm_year = strtol(s, &s, 10) - 1900; + tm.tm_hour = strtol(s, &s, 10); + tm.tm_min = strtol(++s, &s, 10); + tm.tm_sec = strtol(++s, &s, 10); + } + } else if (isdigit((int) *str)) { + if (strchr(str, 'T')) { /* ISO (limited format) date string */ + s = (char *) str; + while (*s && *s==' ') s++; + if ((int)strlen(s) < 21) { + return 0; + } + tm.tm_year = strtol(s, &s, 10) - 1900; + tm.tm_mon = strtol(++s, &s, 10); + tm.tm_mday = strtol(++s, &s, 10); + tm.tm_hour = strtol(++s, &s, 10); + tm.tm_min = strtol(++s, &s, 10); + tm.tm_sec = strtol(++s, &s, 10); + } else { /* delta seconds */ + return atol(str); + } + } else { /* Try the other format: Wed Jun 9 01:29:59 1993 GMT */ + s = (char *) str; + while (*s && *s != ' ') s++; // trim the weekday + if ((int)strlen(s) < 20) { + return 0; + } + tm.tm_mon = __mkmonth(s, &s); + tm.tm_mday = strtol(s, &s, 10); + tm.tm_hour = strtol(s, &s, 10); + tm.tm_min = strtol(++s, &s, 10); + tm.tm_sec = strtol(++s, &s, 10); + tm.tm_year = strtol(s, &s, 10) - 1900; + } + if (tm.tm_sec < 0 || tm.tm_sec > 59 || + tm.tm_min < 0 || tm.tm_min > 59 || + tm.tm_hour < 0 || tm.tm_hour > 23 || + tm.tm_mday < 1 || tm.tm_mday > 31 || + tm.tm_mon < 0 || tm.tm_mon > 11) { + return 0; + } + tm.tm_isdst = -1; + rv = mktime(&tm); + if (!strstr(str, " GMT") && !strstr(str, " UTC")) { + // It's not zulu time, so assume it's in local time + rv += __utc_offset() * 3600; + } + + if (rv == -1) { + return rv; + } + + now = time (NULL); + + if (rv - now < 0) { + return 0; + } + return rv; +} + +private int +__mkmonth(char * s, char ** ends) +{ + char * ptr = s; + while (!isalpha((int) *ptr)) ptr++; + if (*ptr) { + int i; + *ends = ptr+3; + for (i=0; i<12; i++) + if (!strncasecmp(months[i], ptr, 3)) return i; + } + return 0; +} + diff --git a/siege-4.1.6/src/cookie.h b/siege-4.1.6/src/cookie.h new file mode 100644 index 0000000..e906c49 --- /dev/null +++ b/siege-4.1.6/src/cookie.h @@ -0,0 +1,52 @@ +#ifndef __COOKIE_H +#define __COOKIE_H + +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#ifdef HAVE_SYS_TIMES_H +# include +#endif/*HAVE_SYS_TIMES_H*/ + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif/*TIME_WITH_SYS_TIME*/ + +#include +#include +#include + +#define MAX_COOKIE_SIZE 4096 + +typedef struct COOKIE_T *COOKIE; +extern size_t COOKIESIZE; + +COOKIE new_cookie(char *str, char *host); +COOKIE cookie_destroy(COOKIE this); + +void cookie_set_name(COOKIE this, char *str); +void cookie_set_value(COOKIE this, char *str); +void cookie_reset_value(COOKIE this, char *str); +void cookie_set_path(COOKIE this, char *str); +void cookie_set_domain(COOKIE this, char *str); +void cookie_set_expires(COOKIE this, time_t expires); +char * cookie_get_name(COOKIE this); +char * cookie_get_value(COOKIE this); +char * cookie_get_domain(COOKIE this); +char * cookie_get_path(COOKIE this); +time_t cookie_get_expires(COOKIE this); +BOOLEAN cookie_get_session(COOKIE this); +char * cookie_expires_string(COOKIE this); +char * cookie_to_string(COOKIE this); +COOKIE cookie_clone(COOKIE this, COOKIE that); + +#endif/*__COOKIE_H*/ + diff --git a/siege-4.1.6/src/cookies.c b/siege-4.1.6/src/cookies.c new file mode 100644 index 0000000..5c53c15 --- /dev/null +++ b/siege-4.1.6/src/cookies.c @@ -0,0 +1,408 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct NODE { + size_t threadID; + COOKIE cookie; + struct NODE *next; +} NODE; + +struct COOKIES_T { + NODE * head; + size_t size; + char * file; +}; + + +private NODE * __delete_node(NODE *node); +private BOOLEAN __exists(char *file); +private BOOLEAN __save_cookies(COOKIES this); +private BOOLEAN __endswith(const char *str, const char *suffix); + +COOKIES +new_cookies() { + int len; + COOKIES this; + char name[] = "/.siege/cookies.txt"; + + this = calloc(sizeof(struct COOKIES_T), 1); + this->size = 0; + char *p = getenv("HOME"); + len = p ? strlen(p) : 60; + len += strlen(name)+1; + this->file = xmalloc(sizeof (char*) * len); + memset(this->file, '\0', len); + snprintf(this->file, len, "%s%s", getenv("HOME"), name); + return this; +} + +COOKIES +cookies_destroy(COOKIES this) +{ + NODE *cur = NULL; + __save_cookies(this); + cur = this->head; + while (cur) { + cur = __delete_node(cur); + } + xfree(this->file); + free(this); + return NULL; +} + +BOOLEAN +cookies_add(COOKIES this, char *str, char *host) +{ + size_t id = pthread_self(); + //int hlen = 0; + //int dlen = 0; + NODE *cur = NULL; + NODE *pre = NULL; + NODE *new = NULL; + BOOLEAN found = FALSE; + BOOLEAN valid = FALSE; + COOKIE oreo = new_cookie(str, host); + if (oreo == NULL) return FALSE; + if (cookie_get_name(oreo) == NULL || cookie_get_value(oreo) == NULL) return FALSE; + for (cur = pre = this->head; cur != NULL; pre = cur, cur = cur->next) { + const char *domainptr = cookie_get_domain(cur->cookie); + if (*domainptr == '.') ++domainptr; + //hlen = host ? strlen(host) : 0; + //dlen = domainptr ? strlen(domainptr) : 0; + if (__endswith(host, domainptr)){ + valid = TRUE; + } + if (valid && cur->threadID == id && + !strcasecmp(cookie_get_name(cur->cookie), cookie_get_name(oreo))) { + cookie_reset_value(cur->cookie, cookie_get_value(oreo)); + oreo = cookie_destroy(oreo); + found = TRUE; + break; + } + } + + if (!found) { + new = (NODE*)malloc(sizeof(NODE)); + new->threadID = id; + new->cookie = oreo; + new->next = cur; + if (cur == this->head) + this->head = new; + else + pre->next = new; + } + + return TRUE; +} + +BOOLEAN +cookies_delete(COOKIES this, char *str) +{ + NODE *cur; + NODE *pre; + BOOLEAN ret = FALSE; + pthread_t id = pthread_self(); + + for (cur = pre = this->head; cur != NULL; pre = cur, cur = cur->next) { + if (cur->threadID == id) { + char *name = cookie_get_name(cur->cookie); + if (!strcasecmp(name, str)) { + cur->cookie = cookie_destroy(cur->cookie); + pre->next = cur->next; + if (cur == this->head) { + this->head = cur->next; + pre = this->head; + } else { + pre->next = cur->next; + } + ret = TRUE; + break; + } + } + } + return ret; +} + +BOOLEAN +cookies_delete_all(COOKIES this) +{ + NODE *cur; + NODE *pre; + pthread_t id = pthread_self(); + + // XXX: delete cookies by thread; not every cookie in the list + for (cur = pre = this->head; cur != NULL; pre = cur, cur = cur->next) { + if (cur->threadID == id) { + //char *name = cookie_get_name(cur->cookie); + cur->cookie = cookie_destroy(cur->cookie); + pre->next = cur->next; + if (cur == this->head) { + this->head = cur->next; + pre = this->head; + } else { + pre->next = cur->next; + } + } + } + return TRUE; +} + +char * +cookies_header(COOKIES this, char *host, char *newton) +{ + NODE *pre; + NODE *cur; + time_t tmp; + time_t now; + struct tm tm; + char oreo[MAX_COOKIES_SIZE]; + size_t id = pthread_self(); + + memset(oreo, '\0', sizeof oreo); + + tmp = time(NULL); + gmtime_r(&tmp, &tm); + tm.tm_isdst = -1; // force mktime to figure it out! + now = mktime(&tm); + + for (cur=pre=this->head; cur != NULL; pre=cur, cur=cur->next) { + /** + * for the purpose of matching, we'll ignore the leading '.' + */ + const char *domainptr = cookie_get_domain(cur->cookie); + if (*domainptr == '.') ++domainptr; + if (my.get || my.print || cur->threadID == id) { + if (__endswith(host, domainptr)) { + if (cookie_get_expires(cur->cookie) <= now && cookie_get_session(cur->cookie) != TRUE) { + cookies_delete(this, cookie_get_name(cur->cookie)); + continue; + } + if (strlen(oreo) > 0) { + xstrncat(oreo, ";", sizeof(oreo) - 10 - strlen(oreo)); + } + xstrncat(oreo, cookie_get_name(cur->cookie), sizeof(oreo) - 10 - strlen(oreo)); + xstrncat(oreo, "=", sizeof(oreo) - 10 - strlen(oreo)); + xstrncat(oreo, cookie_get_value(cur->cookie), sizeof(oreo) - 10 - strlen(oreo)); + } + } + } + if (strlen(oreo) > 0) { + strncpy(newton, "Cookie: ", 9); + xstrncat(newton, oreo, MAX_COOKIE_SIZE); + xstrncat(newton, "\015\012", 2); + } + + return newton; +} + +void +cookies_list(COOKIES this) +{ + NODE *cur = NULL; + NODE *pre = NULL; + + for (cur = pre = this->head; cur != NULL; pre = cur, cur = cur->next) { + COOKIE tmp = cur->cookie; + if (tmp == NULL) + ; + else printf( + "%lld: NAME: %s\n VALUE: %s\n Expires: %s\n", + (long long)cur->threadID, cookie_get_name(tmp), cookie_get_value(tmp), cookie_expires_string(tmp) + ); + } +} + +private NODE * +__delete_node(NODE *node) +{ + + if (node == NULL) return NULL; + NODE *tmp = node->next; + node->cookie = cookie_destroy(node->cookie); + free(node); + node = tmp; + return node; +} + +private void +__strip(char *str) +{ + char *ch; + ch = (char *)strstr(str, "#"); + if (ch){*ch = '\0';} + ch = (char *)strstr(str, "\n"); + if (ch){*ch = '\0';} +} + +HASH +load_cookies(COOKIES this) +{ + FILE * fp; + int n = -1; + HASH HOH; + HASH IDX; + const size_t len = 4096; // max cookie size + char line[len]; + + if (! __exists(this->file)) { + return NULL; + } + + fp = fopen(this->file, "r"); + if (fp == NULL) { + return NULL; + } + + HOH = new_hash(); + IDX = new_hash(); + + /** + * We're going to treat this file like it's editable + * which means it will permit comments and white space + * formatting. Siege users are a savvy bunch, they may + * want to add cookies by hand... + */ + memset(line, '\0', len); + while (fgets(line, len, fp) != NULL){ + char *p = strchr(line, '\n'); + if (p) { + *p = '\0'; + } else { + int i; + if ((i = fgetc(fp)) != EOF) { + while ((i = fgetc(fp)) != EOF && i != '\n'); + line[0]='\0'; + } + } + __strip(line); + chomp(line); + if (strlen(line) > 1) { + int num = 2; + char **pair; + pair = split('|', line, &num); + trim(pair[0]); + trim(pair[1]); + if (pair[0] != NULL && pair[1] != NULL) { + if (hash_get(IDX, pair[0]) == NULL) { + char tmp[1024]; + n += 1; + memset(tmp, '\0', 1024); + snprintf(tmp, 1024, "%d", n); + hash_add(IDX, pair[0], tmp); + } + HASH tmp = (HASH)hash_get(HOH, hash_get(IDX, pair[0])); + if (tmp == NULL) { + tmp = new_hash(); + hash_add(tmp, pair[1], pair[1]); + hash_nadd(HOH, hash_get(IDX, pair[0]), tmp, HASHSIZE); + } else { + hash_add(tmp, pair[1], pair[1]); + } + } + split_free(pair, num); + } + memset(line, '\0', len); + } + fclose(fp); + hash_destroy(IDX); + return HOH; +} + +private BOOLEAN +__save_cookies(COOKIES this) +{ + FILE * fp; + char * line; + size_t len = 4096+24; // max cookie size plus ID + time_t now; + + NODE * cur = NULL; + now = time(NULL); + fp = fopen(this->file, "w"); + if (fp == NULL) { + fprintf(stderr, "ERROR: Unable to open cookies file: %s\n", this->file); + return FALSE; + } + fputs("#\n", fp); + fputs("# Siege cookies file. You may edit this file to add cookies\n",fp); + fputs("# manually but comments and formatting will be removed. \n",fp); + fputs("# All cookies that expire in the future will be preserved. \n",fp); + fputs("# ---------------------------------------------------------\n",fp); + line = malloc(sizeof(char *) * len); + + for (cur = this->head; cur != NULL; cur = cur->next) { + COOKIE tmp = cur->cookie; + /** + * Criteria for saving cookies: + * 1.) It's not null (obvs) + * 2.) It's not a session cookie + * 3.) It's not expired. + * All cookies which meet the requirement are stored + * whether they were used during this session or not. + */ + if (tmp != NULL && cookie_get_session(tmp) != TRUE && cookie_get_expires(cur->cookie) >= now) { + memset(line, '\0', len); + if (cookie_to_string(tmp) != NULL) { + snprintf(line, len, "%ld | %s\n", cur->threadID, cookie_to_string(tmp)); + } + fputs(line, fp); + } + } + free(line); + fclose(fp); + return TRUE; +} + +/** + * returns TRUE if the file exists, + */ +private BOOLEAN +__exists(char *file) +{ + int fd; + + if ((fd = open(file, O_RDONLY)) < 0) { + /** + * The file does NOT exist so the descriptor is -1 + * No need to close it. + */ + return FALSE; + } else { + /** + * Party on Garth... + */ + close(fd); + return TRUE; + } + return FALSE; +} + + +private BOOLEAN +__endswith(const char *str, const char *suffix) +{ + if (!str || !suffix) + return FALSE; + size_t lenstr = strlen(str); + size_t lensuffix = strlen(suffix); + if (lensuffix > lenstr) + return FALSE; + if (! strncmp(str + lenstr - lensuffix, suffix, lensuffix)) { + return TRUE; + } + return FALSE; +} + diff --git a/siege-4.1.6/src/cookies.h b/siege-4.1.6/src/cookies.h new file mode 100644 index 0000000..6324a3d --- /dev/null +++ b/siege-4.1.6/src/cookies.h @@ -0,0 +1,26 @@ +#ifndef __COOKIES_H +#define __COOKIES_H + +#include +#include +#include +#include + +#define MAX_COOKIES_SIZE 81920 + +typedef struct COOKIES_T *COOKIES; + +COOKIES new_cookies(); +COOKIES cookies_destroy(COOKIES this); +BOOLEAN cookies_add(COOKIES this, char *str, char *host); +BOOLEAN cookies_add_id(COOKIES this, char *str, char *host, size_t id); +char * cookies_header(COOKIES this, char *host, char *newton); +size_t cookies_length(COOKIES this); +BOOLEAN cookies_delete(COOKIES this, char *str); +BOOLEAN cookies_delete_all(COOKIES this); +void cookies_list(COOKIES this); +HASH load_cookies(COOKIES this); + +#endif/*__COOKIES_H*/ + + diff --git a/siege-4.1.6/src/creds.c b/siege-4.1.6/src/creds.c new file mode 100644 index 0000000..ee4d06d --- /dev/null +++ b/siege-4.1.6/src/creds.c @@ -0,0 +1,153 @@ +/** + * HTTP authentication credentials + * + * Copyright (C) 2000-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#include +#include +#include +#include +#include +#include + +struct CREDS_T { + SCHEME scheme; + char *username; + char *password; + char *realm; +}; + +size_t CREDSIZE = sizeof(struct CREDS_T); + +private void __parse_input(CREDS this, char *str); + + +CREDS +new_creds(SCHEME scheme, char *str) +{ + CREDS this; + + this = calloc(sizeof(struct CREDS_T), 1); + this->scheme = scheme; + this->username = NULL; + this->password = NULL; + this->realm = NULL; + __parse_input(this, str); + return this; +} + +CREDS +creds_destroy(CREDS this) +{ + xfree(this->username); + xfree(this->password); + xfree(this->realm); + xfree(this); + return NULL; +} + +SCHEME +creds_get_scheme(CREDS this) +{ + return this->scheme; +} + +char * +creds_get_username(CREDS this) +{ + return this->username; +} + +char * +creds_get_password(CREDS this) +{ + return this->password; +} + +char * +creds_get_realm(CREDS this) +{ + return this->realm; +} + +void +creds_set_username(CREDS this, char *username) +{ + size_t len = strlen(username); + + this->username = malloc(len+1); + memset(this->username, '\0', len+1); + memcpy(this->username, username, len); + return; +} + +void +creds_set_password(CREDS this, char *password) +{ + size_t len = strlen(password); + + this->password = malloc(len+1); + memset(this->password, '\0', len+1); + memcpy(this->password, password, len); + return; +} + +void +creds_set_realm(CREDS this, char *realm) +{ + size_t len = strlen(realm); + + this->realm = malloc(len+1); + memset(this->realm, '\0', len+1); + memcpy(this->realm, realm, len); + return; +} + + +private void +__parse_input(CREDS this, char *str) +{ + char *usr; + char *pwd; + char *rlm; + char *tmp; + char any[] = "any\0"; + + usr = tmp = str; + while (*tmp && *tmp != ':' && *tmp != '\0') + tmp++; + + *tmp++=0; + pwd = tmp; + while (*tmp && *tmp != ':' && *tmp != '\0') + tmp++; + + if ('\0' != *tmp) { + *tmp++=0; + rlm = tmp; + } else { + rlm = NULL; + } + + creds_set_username(this, usr); + creds_set_password(this, pwd); + creds_set_realm(this, (rlm==NULL)?any:rlm); +} + diff --git a/siege-4.1.6/src/creds.h b/siege-4.1.6/src/creds.h new file mode 100644 index 0000000..e84f447 --- /dev/null +++ b/siege-4.1.6/src/creds.h @@ -0,0 +1,42 @@ +/** + * HTTP authentication credentials + * + * Copyright (C) 2000-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef __CREDS_H +#define __CREDS_H + +#include + +typedef struct CREDS_T *CREDS; +extern size_t CREDSIZE; + +CREDS new_creds(SCHEME scheme, char *str); +CREDS creds_destroy(CREDS this); +SCHEME creds_get_scheme(CREDS this); +char *creds_get_username(CREDS this); +char *creds_get_password(CREDS this); +char *creds_get_realm(CREDS this); +void creds_set_username(CREDS this, char *username); +void creds_set_password(CREDS this, char *password); +void creds_set_realm(CREDS this, char *realm); + +#endif/*__CREDS*/ + diff --git a/siege-4.1.6/src/crew.c b/siege-4.1.6/src/crew.c new file mode 100644 index 0000000..cd08c2c --- /dev/null +++ b/siege-4.1.6/src/crew.c @@ -0,0 +1,335 @@ +/** + * Thread pool + * + * Copyright (C) 2000-2015 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#include +#include +#include +#include +#include +#include +#include + +private void *crew_thread(void *); + +struct CREW_T +{ + int size; + int maxsize; + int cursize; + int total; + WORK *head; + WORK *tail; + BOOLEAN block; + BOOLEAN closed; + BOOLEAN shutdown; + pthread_t *threads; + pthread_mutex_t lock; + pthread_cond_t not_empty; + pthread_cond_t not_full; + pthread_cond_t empty; +}; + +CREW +new_crew(int size, int maxsize, BOOLEAN block) +{ + int x; + int c; + CREW this; + + if ((this = calloc(sizeof(*this),1)) == NULL) + return NULL; + + if ((this->threads = (pthread_t *)malloc(sizeof(pthread_t)*size)) == NULL) + return NULL; + + this->size = size; + this->maxsize = maxsize; + this->cursize = 0; + this->total = 0; + this->block = block; + this->head = NULL; + this->tail = NULL; + this->closed = FALSE; + this->shutdown = FALSE; + + if ((c = pthread_mutex_init(&(this->lock), NULL)) != 0) + return NULL; + if ((c = pthread_cond_init(&(this->not_empty), NULL)) != 0) + return NULL; + if ((c = pthread_cond_init(&(this->not_full), NULL)) != 0) + return NULL; + if ((c = pthread_cond_init(&(this->empty), NULL)) != 0) + return NULL; + + for (x = 0; x != size; x++) { + if ((c = pthread_create(&(this->threads[x]), NULL, crew_thread, (void *)this)) != 0) { + switch (errno) { + case EINVAL: { NOTIFY(ERROR, "Error creating additional threads %s:%d", __FILE__, __LINE__); break; } + case EPERM: { NOTIFY(ERROR, "Inadequate permission to create pool %s:%d", __FILE__, __LINE__); break; } + case EAGAIN: { NOTIFY(ERROR, "Inadequate resources to create pool %s:%d", __FILE__, __LINE__); break; } + case ENOMEM: { NOTIFY(ERROR, "Exceeded thread limit for this system %s:%d", __FILE__, __LINE__); break; } + default: { NOTIFY(ERROR, "Unknown error building thread pool %s:%d", __FILE__, __LINE__); break; } + } return NULL; + } + } + return this; +} + +private void +*crew_thread(void *crew) +{ + int c; + WORK *workptr; + CREW this = (CREW)crew; + + while (TRUE) { + if ((c = pthread_mutex_lock(&(this->lock))) != 0) { + NOTIFY(FATAL, "mutex lock"); + } + while ((this->cursize == 0) && (!this->shutdown)) { + if ((c = pthread_cond_wait(&(this->not_empty), &(this->lock))) != 0) + NOTIFY(FATAL, "pthread wait"); + } + + if (this->shutdown == TRUE) { + if ((c = pthread_mutex_unlock(&(this->lock))) != 0) { + NOTIFY(FATAL, "mutex unlock"); + } + pthread_exit(NULL); + } + workptr = this->head; + + this->cursize--; + if (this->cursize == 0) { + this->head = this->tail = NULL; + } else { + this->head = workptr->next; + } + if ((this->block) && (this->cursize == (this->maxsize - 1))) { + if ((c = pthread_cond_broadcast(&(this->not_full))) != 0) { + NOTIFY(FATAL, "pthread broadcast"); + } + } + if (this->cursize == 0) { + if ((c = pthread_cond_signal(&(this->empty))) != 0){ + NOTIFY(FATAL, "pthread signal"); + } + } + if ((c = pthread_mutex_unlock(&(this->lock))) != 0) { + NOTIFY(FATAL, "pthread unlock"); + } + + (*(workptr->routine))(workptr->arg); + + xfree(workptr); + } + + return(NULL); +} + +BOOLEAN +crew_add(CREW crew, void (*routine)(), void *arg) +{ + int c; + WORK *workptr; + + if ((c = pthread_mutex_lock(&(crew->lock))) != 0) { + NOTIFY(FATAL, "pthread lock"); + } + if ((crew->cursize == crew->maxsize) && !crew->block) { + if ((c = pthread_mutex_unlock(&(crew->lock))) != 0) { + NOTIFY(FATAL, "pthread unlock"); + } + return FALSE; + } + + while ((crew->cursize == crew->maxsize ) && (!(crew->shutdown || crew->closed))) { + if ((c = pthread_cond_wait(&(crew->not_full), &(crew->lock))) != 0) { + NOTIFY(FATAL, "pthread wait"); + } + } + if (crew->shutdown || crew->closed) { + if ((c = pthread_mutex_unlock(&(crew->lock))) != 0) { + NOTIFY(FATAL, "pthread unlock"); + } + return FALSE; + } + if ((workptr = (WORK *)malloc(sizeof(WORK))) == NULL) { + NOTIFY(FATAL, "out of memory"); + } + workptr->routine = routine; + workptr->arg = arg; + workptr->next = NULL; + + if (crew->cursize == 0) { + crew->tail = crew->head = workptr; + if ((c = pthread_cond_broadcast(&(crew->not_empty))) != 0) { + NOTIFY(FATAL, "pthread signal"); + } + } else { + crew->tail->next = workptr; + crew->tail = workptr; + } + + crew->cursize++; + crew->total ++; + if ((c = pthread_mutex_unlock(&(crew->lock))) != 0) { + NOTIFY(FATAL, "pthread unlock"); + } + + return TRUE; +} + +BOOLEAN +crew_cancel(CREW this) +{ + int x; + int size; + + /* XXX we store the size in a local + variable because crew->size gets + whacked when we cancel threads */ + size = this->size; + + crew_set_shutdown(this, TRUE); + for (x = 0; x < size; x++) { +#if defined(hpux) || defined(__hpux) + pthread_kill(this->threads[x], SIGUSR1); +#else + pthread_cancel(this->threads[x]); +#endif + } + return TRUE; +} + +BOOLEAN +crew_join(CREW crew, BOOLEAN finish, void **payload) +{ + int x; + int c; + + if ((c = pthread_mutex_lock(&(crew->lock))) != 0) { + NOTIFY(FATAL, "pthread lock"); + } + + if (crew->closed || crew->shutdown) { + if ((c = pthread_mutex_unlock(&(crew->lock))) != 0) { + NOTIFY(FATAL, "pthread unlock"); + } + return FALSE; + } + + crew->closed = TRUE; + + if (finish == TRUE) { + while ((crew->cursize != 0) && (!crew->shutdown)) { + int rc; + struct timespec ts; + struct timeval tp; + + rc = gettimeofday(&tp,NULL); + if( rc != 0 ) + perror("gettimeofday"); + ts.tv_sec = tp.tv_sec+60; + ts.tv_nsec = tp.tv_usec*1000; + rc = pthread_cond_timedwait(&(crew->empty), &(crew->lock), &ts); + if (rc==ETIMEDOUT) { + pthread_mutex_unlock(&crew->lock); + } + + if (rc != 0) { + NOTIFY(FATAL, "pthread wait"); + } + } + } + + crew->shutdown = TRUE; + + if ((c = pthread_mutex_unlock(&(crew->lock))) != 0) { + NOTIFY(FATAL, "pthread_mutex_unlock"); + } + + if ((c = pthread_cond_broadcast(&(crew->not_empty))) != 0) { + NOTIFY(FATAL, "pthread broadcast"); + } + + if ((c = pthread_cond_broadcast(&(crew->not_full))) != 0) { + NOTIFY(FATAL, "pthread broadcast"); + } + + for (x = 0; x < crew->size; x++) { + if ((c = pthread_join(crew->threads[x], payload)) != 0) { + NOTIFY(FATAL, "pthread_join"); + } + } + + return TRUE; +} + +void crew_destroy(CREW crew) { + WORK *workptr; + + xfree(crew->threads); + while (crew->head != NULL) { + workptr = crew->head; + crew->head = crew->head->next; + xfree(workptr); + } + + xfree(crew); +} + +/** + * getters and setters + */ +public void +crew_set_shutdown(CREW this, BOOLEAN shutdown) +{ +// pthread_mutex_lock(&this->lock); + this->shutdown = shutdown; +// pthread_mutex_unlock(&this->lock); + + pthread_cond_broadcast(&this->not_empty); + pthread_cond_broadcast(&this->not_full); + pthread_cond_broadcast(&this->empty); + return; +} + +public int +crew_get_size(CREW this) +{ + return this->size; +} + +public int +crew_get_total(CREW this) +{ + return this->total; +} + +public BOOLEAN +crew_get_shutdown(CREW this) +{ + return this->shutdown; +} + + diff --git a/siege-4.1.6/src/crew.h b/siege-4.1.6/src/crew.h new file mode 100644 index 0000000..7ec9d12 --- /dev/null +++ b/siege-4.1.6/src/crew.h @@ -0,0 +1,50 @@ +/** + * Thread pool + * + * Copyright (C) 2003-2013 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef __CREW_H +#define __CREW_H + +#include +#include + +typedef struct work +{ + void (*routine)(); + void *arg; + struct work *next; +} WORK; + +typedef struct CREW_T *CREW; + +CREW new_crew(int size, int maxsize, BOOLEAN block); +BOOLEAN crew_add(CREW this, void (*routine)(), void *arg); +BOOLEAN crew_cancel(CREW this); +BOOLEAN crew_join(CREW this, BOOLEAN finish, void **payload); +void crew_destroy(CREW this); + +void crew_set_shutdown(CREW this, BOOLEAN shutdown); + +int crew_get_size(CREW this); +int crew_get_total(CREW this); +BOOLEAN crew_get_shutdown(CREW this); + +#endif/*__CREW_H*/ diff --git a/siege-4.1.6/src/data.c b/siege-4.1.6/src/data.c new file mode 100644 index 0000000..fcf44ff --- /dev/null +++ b/siege-4.1.6/src/data.c @@ -0,0 +1,274 @@ +/** + * Storage for siege data + * + * Copyright (C) 2000-2016 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include + +#ifdef HAVE_SYS_TIMES_H +# include +#endif/*HAVE_SYS_TIMES_H*/ + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif/*HAVE_SYS_TIME_H */ +#endif /*TIME_WITH_SYS_TIME*/ + + +struct DATA_T +{ + float total; /*ttime*/ + float available; + float lowest; + float highest; + float elapsed; + clock_t start; + clock_t stop; + struct tms t_start; + struct tms t_stop; + unsigned int code; + unsigned int count; + unsigned int okay; + unsigned int fail; + unsigned long long bytes; +}; + +DATA +new_data() +{ + DATA this; + + this = calloc(sizeof(*this),1); + this->total = 0.0; + this->available = 0.0; + this->count = 0.0; + this->okay = 0; + this->fail = 0.0; + this->lowest = -1; + this->highest = 0.0; + this->elapsed = 0.0; + this->bytes = 0.0; + return this; +} + +DATA +data_destroy(DATA this) +{ + xfree(this); + return NULL; +} + +void +data_increment_bytes(DATA this, unsigned long bytes) +{ + this->bytes += bytes; + return; +} + +void +data_increment_count(DATA this, unsigned long count) +{ + this->count += count; + return; +} + +void +data_increment_total(DATA this, float total) +{ + this->total += total; + return; +} + +void +data_increment_code(DATA this, int code) +{ + this->code += code; + return; +} + +void +data_increment_fail(DATA this, int fail) +{ + this->fail += fail; + return; +} + +void +data_increment_okay(DATA this, int okay) +{ + this->okay += okay; + return; +} + +void +data_set_start(DATA this) +{ + this->start = times(&this->t_start); + return; +} + +void +data_set_stop(DATA this) +{ + this->stop = times(&this->t_stop); + return; +} + +void +data_set_highest(DATA this, float highest) +{ + if(this->highest < highest){ + this->highest = highest; + } + return; +} + +void +data_set_lowest(DATA this, float lowest) +{ + if((this->lowest <= 0)||(this->lowest > lowest)){ + this->lowest = lowest; + } + return; +} + +unsigned int +data_get_count(DATA this) +{ + return this->count; +} + +unsigned int +data_get_code(DATA this) +{ + return this->code; +} + +unsigned int +data_get_fail(DATA this) +{ + return this->fail; +} + +unsigned int +data_get_okay(DATA this) +{ + return this->okay; +} + +float +data_get_total(DATA this) +{ + return this->total; +} + +float +data_get_bytes(DATA this) +{ + return (float)this->bytes; +} + +float +data_get_highest(DATA this) +{ + return this->highest; +} + +float +data_get_lowest(DATA this) +{ + if(this->code){ + return this->lowest; + } else { + return this->code; + } +} + +float +data_get_megabytes(DATA this) +{ + return (float)this->bytes/(1024.0*1024.0); +} + +float +data_get_elapsed(DATA this) +{ + long tps; + clock_t time; + + time = this->stop - this->start; + tps = sysconf(_SC_CLK_TCK); + this->elapsed = (float)time/tps; + return this->elapsed; +} + +float +data_get_availability(DATA this) +{ + this->available = (this->count==0)?0:((this->count/(this->count+this->fail))*100); + return this->available; +} + +float +data_get_response_time(DATA this) +{ + if((this->total==0)||(this->count==0)) + return 0; + return (this->total / this->count); +} + +float +data_get_transaction_rate(DATA this) +{ + if((this->count==0)||(this->elapsed==0)) + return 0; + return (this->count / this->elapsed); +} + +float +data_get_throughput(DATA this) +{ + if(this->elapsed==0) + return 0; + return this->bytes / (this->elapsed * 1024.0*1024.0); +} + +float +data_get_concurrency(DATA this) +{ + if(this->elapsed==0) + return 0; + /* total transaction time / elapsed time */ + return (this->total / this->elapsed); +} + diff --git a/siege-4.1.6/src/data.h b/siege-4.1.6/src/data.h new file mode 100644 index 0000000..0c0af10 --- /dev/null +++ b/siege-4.1.6/src/data.h @@ -0,0 +1,79 @@ +/** + * Storage for siege data + * + * Copyright (C) 2000-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef __DATA_H +#define __DATA_H + +#include +#include + +#ifdef HAVE_SYS_TIMES_H +# include +#endif/*HAVE_SYS_TIMES_H*/ + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif/*HAVE_SYS_TIME_H */ +#endif /*TIME_WITH_SYS_TIME*/ + +typedef struct DATA_T *DATA; + +/* constructor */ +DATA new_data(); +DATA data_destroy(DATA this); + +/* setters */ +void data_set_start (DATA this); +void data_set_stop (DATA this); +void data_set_highest (DATA this, float highest); +void data_set_lowest (DATA this, float lowest); +void data_increment_bytes(DATA this, unsigned long bytes); +void data_increment_count(DATA this, unsigned long count); +void data_increment_total(DATA this, float total); +void data_increment_code (DATA this, int code); +void data_increment_fail (DATA this, int fail); +void data_increment_okay (DATA this, int ok200); + +/* getters */ +float data_get_total(DATA this); +float data_get_bytes(DATA this); +float data_get_megabytes(DATA this); +float data_get_highest(DATA this); +float data_get_lowest(DATA this); +float data_get_elapsed(DATA this); +float data_get_availability(DATA this); +float data_get_response_time(DATA this); +float data_get_transaction_rate(DATA this); +float data_get_throughput(DATA this); +float data_get_concurrency(DATA this); +unsigned int data_get_count(DATA this); +unsigned int data_get_code (DATA this); +unsigned int data_get_fail (DATA this); +unsigned int data_get_okay (DATA this); + +#endif/*__DATA_H*/ diff --git a/siege-4.1.6/src/date.c b/siege-4.1.6/src/date.c new file mode 100644 index 0000000..8357fd9 --- /dev/null +++ b/siege-4.1.6/src/date.c @@ -0,0 +1,590 @@ +/** + * Date calculations for siege + * + * Copyright (C) 2007-2014 by + * Jeffrey Fulmer - , et al. + * + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. + * (modified - use the original: http://curl.haxx.se/) + * + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include +#include +#include +#include + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif/*TIME_WITH_SYS_TIME*/ + +#include +#include +#include + +#define MAX_DATE_LEN 64 + +#define xfree(x) free(x) +#define xmalloc(x) malloc(x) + +enum assume { + DATE_MDAY, + DATE_YEAR, + DATE_TIME +}; + +const char * const wday[] = { + "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" +}; + +const char * const weekday[] = { + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", +}; + +const char * const month[] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", +}; + +struct tzinfo { + const char *name; + int offset; /* +/- in minutes */ +}; + +#define tDAYZONE -60 /* offset for daylight savings time */ +static const struct tzinfo tz[]= { + {"GMT", 0}, /* Greenwich Mean */ + {"UTC", 0}, /* Universal (Coordinated) */ + {"WET", 0}, /* Western European */ + {"BST", 0 tDAYZONE}, /* British Summer */ + {"WAT", 60}, /* West Africa */ + {"AST", 240}, /* Atlantic Standard */ + {"ADT", 240 tDAYZONE}, /* Atlantic Daylight */ + {"EST", 300}, /* Eastern Standard */ + {"EDT", 300 tDAYZONE}, /* Eastern Daylight */ + {"CST", 360}, /* Central Standard */ + {"CDT", 360 tDAYZONE}, /* Central Daylight */ + {"MST", 420}, /* Mountain Standard */ + {"MDT", 420 tDAYZONE}, /* Mountain Daylight */ + {"PST", 480}, /* Pacific Standard */ + {"PDT", 480 tDAYZONE}, /* Pacific Daylight */ + {"YST", 540}, /* Yukon Standard */ + {"YDT", 540 tDAYZONE}, /* Yukon Daylight */ + {"HST", 600}, /* Hawaii Standard */ + {"HDT", 600 tDAYZONE}, /* Hawaii Daylight */ + {"CAT", 600}, /* Central Alaska */ + {"AHST", 600}, /* Alaska-Hawaii Standard */ + {"NT", 660}, /* Nome */ + {"IDLW", 720}, /* International Date Line West */ + {"CET", -60}, /* Central European */ + {"MET", -60}, /* Middle European */ + {"MEWT", -60}, /* Middle European Winter */ + {"MEST", -60 tDAYZONE}, /* Middle European Summer */ + {"CEST", -60 tDAYZONE}, /* Central European Summer */ + {"MESZ", -60 tDAYZONE}, /* Middle European Summer */ + {"FWT", -60}, /* French Winter */ + {"FST", -60 tDAYZONE}, /* French Summer */ + {"EET", -120}, /* Eastern Europe, USSR Zone 1 */ + {"WAST", -420}, /* West Australian Standard */ + {"WADT", -420 tDAYZONE}, /* West Australian Daylight */ + {"CCT", -480}, /* China Coast, USSR Zone 7 */ + {"JST", -540}, /* Japan Standard, USSR Zone 8 */ + {"EAST", -600}, /* Eastern Australian Standard */ + {"EADT", -600 tDAYZONE}, /* Eastern Australian Daylight */ + {"GST", -600}, /* Guam Standard, USSR Zone 9 */ + {"NZT", -720}, /* New Zealand */ + {"NZST", -720}, /* New Zealand Standard */ + {"NZDT", -720 tDAYZONE}, /* New Zealand Daylight */ + {"IDLE", -720}, /* International Date Line East */ +}; + +private int __checkday(char *check, size_t len); +private int __checkmonth(char *check); +private int __checktz(char *check); +private time_t __strtotime(const char *string); + +struct DATE_T +{ + char * date; + char * etag; + char * head; + struct tm * tm; +#ifdef HAVE_GMTIME_R + struct tm safe; +#endif/*HAVE_LOCALTIME_R*/ +}; + +size_t DATESIZE = sizeof(struct DATE_T); + +DATE +new_date(char *date) +{ + time_t now; + DATE this = calloc(DATESIZE, 1); + this->tm = NULL; + this->etag = NULL; + this->date = xmalloc(MAX_DATE_LEN); + this->head = xmalloc(MAX_DATE_LEN); + memset(this->date, '\0', MAX_DATE_LEN); + memset(this->head, '\0', MAX_DATE_LEN); + + if (date == NULL) { + now = time(NULL); +#ifdef HAVE_GMTIME_R + this->tm = gmtime_r(&now, &this->safe); +#else + this->tm = gmtime(&now); +#endif/*HAVE_GMTIME_R*/ + } else { + now = __strtotime(date); +#ifdef HAVE_GMTIME_R + this->tm =gmtime_r(&now, &this->safe); +#else + this->tm = gmtime(&now); +#endif/*HAVE_GMTIME_R*/ + } + return this; +} + +DATE +new_etag(char *etag) +{ + DATE this = calloc(DATESIZE, 1); + this->tm = NULL; + this->date = NULL; + this->etag = NULL; + + if (etag != NULL) { + this->etag = xstrdup(etag); + } + return this; +} + +DATE +date_destroy(DATE this) +{ + if (this != NULL) { + xfree(this->date); + xfree(this->head); + xfree(this->etag); + xfree(this); + this = NULL; + } + return this; +} + +char * +date_get_etag(DATE this) +{ + return (this->etag == NULL) ? "" : this->etag; +} + +char * +date_get_rfc850(DATE this) +{ + memset(this->date, '\0', MAX_DATE_LEN); + + if (this->tm == NULL || this->tm->tm_year == 0) { + return ""; + } + + snprintf ( + this->date, MAX_DATE_LEN, + "%s, %d %s %d %d:%d:%d GMT", + wday[this->tm->tm_wday], + this->tm->tm_mday, + month[this->tm->tm_mon], + this->tm->tm_year, + this->tm->tm_hour, + this->tm->tm_min, + this->tm->tm_sec + ); + return this->date; +} + +BOOLEAN +date_expired(DATE this) +{ + long res = 0; + time_t now; + struct tm *gmt; + time_t then; + + if (this == NULL || this->tm == NULL) return TRUE; + + now = time(NULL); + gmt = gmtime(&now); + then = mktime(this->tm); + now = mktime(gmt); + res = difftime(then, now); + return (res < 0) ? TRUE : FALSE; +} + +char * +date_to_string(DATE this) +{ + if (this->etag != NULL) return this->etag; + memset(this->date, '\0', MAX_DATE_LEN); + setlocale(LC_TIME, "C"); + strftime(this->date, MAX_DATE_LEN, "%a, %F %T ", this->tm); + return this->date; +} + +time_t mylocaltime(struct tm *tm) { + time_t epoch = 0; + time_t offset = mktime(localtime(&epoch)); + time_t local = mktime(tm); + return difftime(local, offset); +} + +char * +date_stamp(DATE this) +{ + struct tm *tmp; + time_t time; + time = mylocaltime(this->tm); + tmp = localtime(&time); + memset(this->date, '\0', MAX_DATE_LEN); + strftime(this->date, MAX_DATE_LEN, "[%a, %F %T] ", tmp); + return this->date; +} + +time_t +date_adjust(time_t tvalue, int secs) +{ + struct tm *tp; + time_t ret; + + if((ret = (tvalue != (time_t)-1))){ + tp = localtime(&tvalue); + if(secs > INT_MAX - tp->tm_sec){ + ret = (time_t)-1; + } else { + tp->tm_sec += secs; + ret = mktime(tp); + } + } + return ret; +} + +/** + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. + * (modified - use the original: http://curl.haxx.se/) + */ +private int +__checkday(char *check, size_t len) +{ + int i; + const char * const *what; + BOOLEAN found = FALSE; + if(len > 3) + what = &weekday[0]; + else + what = &wday[0]; + for(i=0; i<7; i++) { + if(strmatch(check, (char*)what[0])) { + found=TRUE; + break; + } + what++; + } + return found?i:-1; +} + +/** + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. + * (modified - use the original: http://curl.haxx.se/) + */ +private int +__checkmonth(char *check) +{ + int i; + const char * const *what; + BOOLEAN found = FALSE; + + what = &month[0]; + for(i = 0; i < 12; i++){ + if(strmatch(check, (char*)what[0])) { + found=TRUE; + break; + } + what++; + } + return found ? i : -1; /* return the offset or -1, no real offset is -1 */ +} + +/** + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. + * (modified - use the original: http://curl.haxx.se/) + */ +private int +__checktz(char *check) +{ + unsigned int i; + const struct tzinfo *what; + BOOLEAN found = FALSE; + + what = tz; + for(i=0; i< sizeof(tz)/sizeof(tz[0]); i++) { + if(strmatch(check, (char*)what->name)) { + found=TRUE; + break; + } + what++; + } + return found ? what->offset*60 : -1; +} + +/** + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. + */ +static void skip(const char **date) { + /* skip everything that aren't letters or digits */ + while(**date && !isalnum((unsigned char)**date)) + (*date)++; +} + +private time_t +__strtotime(const char *string) +{ + int sec = -1; /* seconds */ + int min = -1; /* minutes */ + int hour = -1; /* hours */ + int mday = -1; /* day of the month */ + int mon = -1; /* month */ + int year = -1; /* year */ + int wday = -1; /* day of the week */ + int tzoff = -1; /* time zone offset */ + int part = 0; + time_t t = 0; + struct tm tm; + const char *date; + const char *indate = string; /* original pointer */ + enum assume dignext = DATE_MDAY; + BOOLEAN found = FALSE; + + /* + * Make sure we have a string to parse. + */ + if(!(string && *string)) + return(0); + + date = string; + + /** + * this parser was more or less stolen form libcurl. + * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. + * http://curl.haxx.se/ + */ + + while (*date && (part < 6)) { + found=FALSE; + + skip(&date); + + if(isalpha((unsigned char)*date)) { + /* a name coming up */ + char buf[32]=""; + size_t len; + sscanf(date, "%31[A-Za-z]", buf); + len = strlen(buf); + + if(wday == -1) { + wday = __checkday(buf, len); + if(wday != -1) + found = TRUE; + } + if(!found && (mon == -1)) { + mon = __checkmonth(buf); + if(mon != -1) + found = TRUE; + } + + if(!found && (tzoff == -1)) { + /* this just must be a time zone string */ + tzoff = __checktz(buf); + if(tzoff != -1) + found = TRUE; + } + + if(!found) + return -1; /* bad string */ + + date += len; + } else if(isdigit((unsigned char)*date)) { + /* a digit */ + int val; + char *end; + if((sec == -1) && + (3 == sscanf(date, "%02d:%02d:%02d", &hour, &min, &sec))) { + /* time stamp! */ + date += 8; + found = TRUE; + } + else { + val = (int)strtol(date, &end, 10); + + if ((tzoff == -1) && + ((end - date) == 4) && + (val < 1300) && + (indate< date) && + ((date[-1] == '+' || date[-1] == '-'))) { + /* four digits and a value less than 1300 and it is preceded with + a plus or minus. This is a time zone indication. */ + found = TRUE; + tzoff = (val/100 * 60 + val%100)*60; + + /* the + and - prefix indicates the local time compared to GMT, + this we need ther reversed math to get what we want */ + tzoff = date[-1]=='+'?-tzoff:tzoff; + } + + if (((end - date) == 8) && (year == -1) && (mon == -1) && (mday == -1)) { + /* 8 digits, no year, month or day yet. This is YYYYMMDD */ + found = TRUE; + year = val/10000; + mon = (val%10000)/100-1; /* month is 0 - 11 */ + mday = val%100; + } + + if (!found && (dignext == DATE_MDAY) && (mday == -1)) { + if ((val > 0) && (val<32)) { + mday = val; + found = TRUE; + } + dignext = DATE_YEAR; + } + + if (!found && (dignext == DATE_YEAR) && (year == -1)) { + year = val; + found = TRUE; + if (year > 1970) { + year -= 1900; + } + /** + * Daniel adjusts tm_year + * to the actual year but + * we want to do date calcs + * so our adjust is to 1xx + if (year < 1900) { + if (year > 70) + year += 1900; + else + year += 2000; + } + */ + if (mday == -1) + dignext = DATE_MDAY; + } + + if (!found) + return -1; + + date = end; + } + } + part++; + } + + if(-1 == sec) + sec = min = hour = 0; /* no time, make it zero */ + + if ((-1 == mday) || + (-1 == mon) || + (-1 == year)) + /* lacks vital info, fail */ + return -1; + + /* Y238 'bug' */ + if(year > 2037) + return 0x7fffffff; + + tm.tm_sec = sec; + tm.tm_min = min; + tm.tm_hour = hour; + tm.tm_mday = mday; + tm.tm_mon = mon; + tm.tm_year = year; //(year < 2000) ? (year - 1900) : year; + tm.tm_wday = 0; + tm.tm_yday = 0; + tm.tm_isdst = 0; + + t = mktime(&tm); + + /* time zone adjust (cast t to int to compare to negative one) */ + if(-1 != (int)t) { + struct tm *gmt; + long delta; + time_t t2; + +#ifdef HAVE_GMTIME_R + /* thread-safe version */ + struct tm keeptime2; + gmt = (struct tm *)gmtime_r(&t, &keeptime2); + if(!gmt) + return -1; /* illegal date/time */ + t2 = mktime(gmt); +#else + /* It seems that at least the MSVC version of mktime() doesn't work + properly if it gets the 'gmt' pointer passed in (which is a pointer + returned from gmtime() pointing to static memory), so instead we copy + the tm struct to a local struct and pass a pointer to that struct as + input to mktime(). */ + struct tm gmt2; + gmt = gmtime(&t); /* use gmtime_r() if available */ + if(!gmt) + return -1; /* illegal date/time */ + gmt2 = *gmt; + t2 = mktime(&gmt2); +#endif + + /* Add the time zone diff (between the given timezone and GMT) + and the diff between the local time zone and GMT. */ + delta = (long)((tzoff!=-1?tzoff:0) + (t - t2)); + + if((delta>0) && (t + delta < t)) + return -1; /* time_t overflow */ + + t += delta; + } + return t; +} + +#if 0 +int main() +{ + const char date[] = "Tue, 20-Mar-2007 14:31:38 GMT"; + time_t t = strtotime(date); + time_t n = time(NULL); + + printf("%ld => %ld\n", t, n); + return 0; +} +#endif diff --git a/siege-4.1.6/src/date.h b/siege-4.1.6/src/date.h new file mode 100644 index 0000000..5956883 --- /dev/null +++ b/siege-4.1.6/src/date.h @@ -0,0 +1,50 @@ +/** + * Date Header - date calculations for Siege + * + * Copyright (C) 2007-2013 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ +#ifndef DATE_H +#define DATE_H + +#include +#include + +typedef struct DATE_T *DATE; +extern size_t DATESIZE; + +/** + * We decided to make etag a DATE + * because then we have one destroyer + * that we can pass to the HASH + */ +DATE new_date(); +DATE new_etag(char *etag); + +DATE date_destroy(DATE this); +time_t adjust(time_t tvalue, int secs); +time_t strtotime(const char *string); +BOOLEAN date_expired(DATE this); +char * timetostr(const time_t *T); +char * date_get_etag(DATE this); +char * date_get_rfc850(DATE this); +char * date_stamp(DATE this); +char * date_to_string(DATE this); + +#endif/*DATE_H*/ diff --git a/siege-4.1.6/src/eval.c b/siege-4.1.6/src/eval.c new file mode 100644 index 0000000..3ae7ba8 --- /dev/null +++ b/siege-4.1.6/src/eval.c @@ -0,0 +1,115 @@ +/** + * Variable evaluation + * + * Copyright (C) 2003-2016 by + * Jeffrey Fulmer - , et al. + * This file is part of siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + * + */ +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include +#include +#include +#include + +char * +escape(char *buf) +{ + size_t i = 0; + size_t len; + char *res; + char fin[BUFSIZE]; + + res = xrealloc(buf, BUFSIZE * sizeof(char)); + if (res != NULL) { + buf = res; + } + + len = strlen(buf); + while (i < len && buf[i] != '\\') { + i++; + } + + while (i < len) { + buf[i] = buf[i + 1]; + i++; + } + buf[len] = '\0'; + xstrncpy(fin, buf, len+1); + xstrncpy(res, fin, strlen(fin)+1); + return res; +} + +char * +evaluate(HASH hash, char *buf) +{ + int x = 0; + int ENV = 0; + int len = 0; + char final[BUFSIZE]; + char *ptr; + char *string; + const char *scan; + + char *result = xrealloc(buf, BUFSIZE * sizeof(char)); + if(result != NULL) + buf = result; + + scan = strchr(buf, '$') + 1; + len = (strlen(buf) - strlen(scan)) -1; + + if(scan[0] == '{' || scan[0] == '(') + scan++; + + ptr = (char*)scan; + + while (*scan && *scan != '}' && *scan != ')' && *scan != '/') { + scan++; + x++; + } + + if (scan[0] == '}' || scan[0] == ')') { + scan++; + } + + string = substring(ptr, 0, x); + if (hash_contains(hash, string) == 0) { + if (getenv(string) != NULL) { + ENV = 1; + } else { + string = NULL; /* user botched his config file */ + } + } + + xstrncpy(final, buf, len+1); + if (string != NULL) { + strcat(final, ENV==0?(char*)hash_get(hash, string):getenv(string)); + } + strcat(final, scan); + xstrncpy(result, final, strlen(final)+1); + + xfree(string); + return result; +} + diff --git a/siege-4.1.6/src/eval.h b/siege-4.1.6/src/eval.h new file mode 100644 index 0000000..6a84631 --- /dev/null +++ b/siege-4.1.6/src/eval.h @@ -0,0 +1,34 @@ +/** + * Variable evaluation + * + * Copyright (C) 2003-2016 by + * Jeffrey Fulmer - , et al. + * This file is part of siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + * + */ +#ifndef EVAL_H +#define EVAL_H + +#include + +#define BUFSIZE 40000 + +char *escape(char *buf); +char *evaluate(HASH hash, char *buf); + +#endif/*EVAL_H*/ diff --git a/siege-4.1.6/src/ftp.c b/siege-4.1.6/src/ftp.c new file mode 100644 index 0000000..505b0c8 --- /dev/null +++ b/siege-4.1.6/src/ftp.c @@ -0,0 +1,377 @@ +/** + * FTP protocol support + * + * Copyright (C) 2013-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +private int __request(CONN *C, char *fmt, ...); +private int __response(CONN *C); +private int __response_code(const char *buf); +private BOOLEAN __in_range(int code, int lower, int upper); + +BOOLEAN +ftp_login(CONN *C, URL U) +{ + int code = 120; + char tmp[128]; + + code = __response(C); + if (! okay(code)) { + C->ftp.code = code; + if (code == 421) { + DISPLAY(RED, "[ERROR] FTP: Server responded: 421 - Service unavailable"); + } else { + NOTIFY(ERROR, "FTP: Server responded: %d", code); + } + return FALSE; + } + + snprintf(tmp, sizeof(tmp), "%s", (url_get_username(U)==NULL)?"anonymous":url_get_username(U)); + code = __request(C, "USER %s", tmp); + if (code != 331) { + if (okay(code)) return TRUE; + } + + memset(tmp, '\0', sizeof(tmp)); + snprintf(tmp, sizeof(tmp), "%s", (url_get_password(U)==NULL)?"siege@joedog.org":url_get_password(U)); + code = __request(C, "PASS %s", tmp); + return __in_range(code, 200, 299); +} + +BOOLEAN +ftp_pasv(CONN *C) +{ + int i, code; + char *ptr; + unsigned char addr[6]; + + code = __request(C, "PASV"); + if (!okay(code)) return FALSE; + + ptr = (char *) C->chkbuf; + for (ptr += 4; *ptr && !isdigit(*ptr); ptr++); + + if (!*ptr) return FALSE; + + for (i = 0; i < 6; i++) { + addr[i] = 0; + for (; isdigit(*ptr); ptr++) + addr[i] = (*ptr - '0') + 10 * addr[i]; + + if (*ptr == ',') ptr++; + else if (i < 5) return FALSE; + } + snprintf(C->ftp.host, sizeof(C->ftp.host), "%d.%d.%d.%d", addr[0],addr[1],addr[2],addr[3]); + C->ftp.port = (addr[4] << 8) + addr[5]; + + return TRUE; +} + +BOOLEAN +ftp_cwd(CONN *C, URL U) +{ + int code; + + code = __request(C, "CWD %s", url_get_path(U)); + return okay(code); +} + +BOOLEAN +ftp_ascii(CONN *C) +{ + C->ftp.code = __request(C, "TYPE A"); + return okay(C->ftp.code); +} + +BOOLEAN +ftp_binary(CONN *C) +{ + C->ftp.code = __request(C, "TYPE I"); + return okay(C->ftp.code); +} + +BOOLEAN +ftp_quit(CONN *C) +{ + C->ftp.code = __request(C, "QUIT"); + return okay(C->ftp.code); +} + +BOOLEAN +ftp_size(CONN *C, URL U) +{ + int size; + int resp; + + if (ftp_binary(C) != TRUE) return FALSE; + + C->ftp.code = __request(C, "SIZE %s%s", url_get_path(U), url_get_file(U)); + if (!okay(C->ftp.code)) { + return FALSE; + } else { + if (sscanf(C->chkbuf, "%d %d", &resp, &size) == 2) { + C->ftp.size = size; + return TRUE; + } else { + return FALSE; + } + } + return TRUE; +} + +BOOLEAN +ftp_stor(CONN *C, URL U) +{ + size_t len; + char *file; + size_t id = pthread_self(); + int num = 2; + char **parts; + + if (id < 0.0) { + id = -id; + } + + len = strlen(url_get_file(U))+17; + parts = split('.', url_get_file(U), &num); + + file = xmalloc(len); + memset(file, '\0', len); + + /* NOTE: changed %u to %zu as per C99 */ + snprintf(file, len, "%s-%zu.%s", parts[0], id, (parts[1]==NULL)?"":parts[1]); + if (my.unique) { + C->ftp.code = __request(C, "STOR %s", file); + } else { + C->ftp.code = __request(C, "STOR %s", url_get_file(U)); + } + xfree(file); + split_free(parts, num); + return (okay(C->ftp.code)); +} + + +BOOLEAN +ftp_retr(CONN *C, URL U) +{ + C->ftp.code = __request(C, "RETR %s%s", url_get_path(U), url_get_file(U)); + return (okay(C->ftp.code)); +} + +size_t +ftp_put(CONN *D, URL U) +{ + size_t n; + if ((n = socket_write(D, url_get_postdata(U), url_get_postlen(U))) != url_get_postlen(U)){ + NOTIFY(ERROR, "HTTP: unable to write to socket." ); + return -1; + } + + return url_get_postlen(U); +} + +size_t +ftp_get(CONN *D, URL U, size_t size) +{ + int n; + char c; + size_t bytes = 0; + char *file; + + file = xmalloc(size); + memset(file, '\0', size); + + do { + if ((n = socket_read(D, &c, 1)) == 0) + break; + file[bytes] = c; + bytes += n; + } while (bytes < size); + + if (my.get) { + write_file(U, file, size); + } + xfree(file); + + return bytes; +} + +BOOLEAN +ftp_list(CONN *C, CONN *D, URL U) +{ + int n; + char c; + int bytes; + + C->ftp.code = __request(C, "LIST %s", (url_get_file(U)==NULL)?url_get_path(U):url_get_file(U)); + + if (C->ftp.code == 150) { + if (D->sock < 1) { + NOTIFY(ERROR, "unable to read from socket: %s:%d", C->ftp.host, C->ftp.port); + return FALSE; + } + do { + if ((n = socket_read(D, &c, 1)) == 0) + break; + if (my.verbose) printf("%c", c); + bytes += n; + } while (TRUE); + } + return TRUE; +} + +int +__request(CONN *C, char *fmt, ...) +{ + int code = 0; + char buf[1024]; + char cmd[1024+8]; + size_t len, n; + va_list ap; + + memset(buf, '\0', sizeof(buf)); + memset(cmd, '\0', sizeof(cmd)); + + va_start(ap, fmt); + vsnprintf(buf, sizeof buf, fmt, ap); + len = snprintf(cmd, sizeof(cmd), "%s\015\012", buf); + + if ((n = socket_write(C, cmd, len)) != len) { + NOTIFY(ERROR, "FTP: unable to write to socket."); + code = 500; + } + va_end(ap); + debug(chomp(cmd)); + + if (code == 500) { + C->ftp.code = 500; + return C->ftp.code; + } else { + C->ftp.code = __response(C); + return C->ftp.code; + } +} + + +private int +__response(CONN *C) +{ + int n; + char c; + int code = 120; + BOOLEAN cont = TRUE; + + while (cont) { + int x; + + while (TRUE) { + x = 0; + memset(C->chkbuf, '\0', sizeof(C->chkbuf)); + while ((n = socket_read(C, &c, 1)) == 1) { + echo("%c", c); + C->chkbuf[x] = c; + if (C->chkbuf[x] == '\n') break; + x++; + } + if (isdigit(C->chkbuf[0]) && (C->chkbuf[3] != '-')) break; + if (x == 0 && n == 0) break; + } + code = __response_code(C->chkbuf); + if (C->chkbuf[3] == ' ') { + cont = FALSE; + } + if (strlen(C->chkbuf) == 0 && n == 0 && x == 0) { + // we connected but didn't get a response + code = 421; + cont = FALSE; + } + } + if (code > 499 && !my.quiet) { + printf("%s\n", chomp(C->chkbuf)); + } + return code; +} + +private int +__response_code(const char *buf) +{ + int ret; + char code[4]; + memset(code, '\0', sizeof(code)); + strncpy(code, buf, 3); + code[3] = '\0'; + ret = atoi(code); + return ret; +} + +private BOOLEAN +__in_range(int code, int lower, int upper) +{ + return (code >= lower && code <= upper); +} + +/** + From RFC 959 + 200 Command okay. + 202 Command not implemented, superfluous at this site. + 211 System status, or system help reply. + 212 Directory status. + 213 File status. + 214 Help message. + 215 NAME system type. + 220 Service ready for new user. + 221 Service closing control connection. + 225 Data connection open; no transfer in progress. + 226 Closing data connection. + 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2). + 230 User logged in, proceed. + 250 Requested file action okay, completed. + 257 "PATHNAME" created. + 331 User name okay, need password. + 332 Need account for login. + 350 Requested file action pending further information. + 421 Service not available, closing control connection. + 425 Can't open data connection. + 426 Connection closed; transfer aborted. + 450 Requested file action not taken. + 451 Requested action aborted: local error in processing. + 452 Requested action not taken. + 500 Syntax error, command unrecognized. + 501 Syntax error in parameters or arguments. + 502 Command not implemented. + 503 Bad sequence of commands. + 504 Command not implemented for that parameter. + 530 Not logged in. + 532 Need account for storing files. + 550 Requested action not taken. + 551 Requested action aborted: page type unknown. + 552 Requested file action aborted. + 553 Requested action not taken. +*/ diff --git a/siege-4.1.6/src/ftp.h b/siege-4.1.6/src/ftp.h new file mode 100644 index 0000000..026bf63 --- /dev/null +++ b/siege-4.1.6/src/ftp.h @@ -0,0 +1,42 @@ +/** + * FTP protocol support + * + * Copyright (C) 2013-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef __FTP_H +#define __FTP_H + +#include +#include + +BOOLEAN ftp_login(CONN *C, URL U); +BOOLEAN ftp_ascii(CONN *C); +BOOLEAN ftp_binary(CONN *C); +BOOLEAN ftp_size(CONN *C, URL U); +BOOLEAN ftp_cwd(CONN *C, URL U); +BOOLEAN ftp_pasv(CONN *C); +BOOLEAN ftp_list(CONN *C, CONN *D, URL U); +BOOLEAN ftp_stor(CONN *C, URL U); +BOOLEAN ftp_retr(CONN *C, URL U); +size_t ftp_get(CONN *D, URL U, size_t size); +size_t ftp_put(CONN *D, URL U); +BOOLEAN ftp_quit(CONN *C); + +#endif/*__FTP_H*/ diff --git a/siege-4.1.6/src/getopt.c b/siege-4.1.6/src/getopt.c new file mode 100644 index 0000000..9c6fa0d --- /dev/null +++ b/siege-4.1.6/src/getopt.c @@ -0,0 +1,1060 @@ +#include + +#ifndef HAVE_GETOPT_LONG +/* Getopt for GNU. + NOTE: getopt is now part of the C library, so if you don't know what + "Keep this file name-space clean" means, talk to drepper@gnu.org + before changing it! + + Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98 + Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* This tells Alpha OSF/1 not to define a getopt prototype in . + Ditto for AIX 3.2 and . */ +#ifndef _NO_PROTO +# define _NO_PROTO +#endif + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if !defined __STDC__ || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +# ifndef const +# define const +# endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 +# include +# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +# define ELIDE_CODE +# endif +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +/* Don't include stdlib.h for non-GNU C libraries because some of them + contain conflicting prototypes for getopt. */ +# include +# include +#endif /* GNU C library. */ + +#ifdef VMS +# include +# if HAVE_STRING_H - 0 +# include +# endif +#endif + +#ifndef _ +/* This is for other GNU distributions with internationalized messages. + When compiling libc, the _ macro is predefined. */ +# ifdef HAVE_LIBINTL_H +# include +# define _(msgid) gettext (msgid) +# else +# define _(msgid) (msgid) +# endif +#endif + +/* This version of `getopt' appears to the caller like standard Unix `getopt' + but it behaves differently for the user, since it allows the user + to intersperse the options with the other arguments. + + As `getopt' works, it permutes the elements of ARGV so that, + when it is done, all the options precede everything else. Thus + all application programs are extended to handle flexible argument order. + + Setting the environment variable POSIXLY_CORRECT disables permutation. + Then the behavior is completely standard. + + GNU application programs can use a third alternative mode in which + they can distinguish the relative order of options and other arguments. */ + +#include + +/* For communication from `getopt' to the caller. + When `getopt' finds an option that takes an argument, + the argument value is returned here. + Also, when `ordering' is RETURN_IN_ORDER, + each non-option ARGV-element is returned here. */ + +char *optarg = NULL; + +/* Index in ARGV of the next element to be scanned. + This is used for communication to and from the caller + and for communication between successive calls to `getopt'. + + On entry to `getopt', zero means this is the first call; initialize. + + When `getopt' returns -1, this is the index of the first of the + non-option elements that the caller should itself scan. + + Otherwise, `optind' communicates from one call to the next + how much of ARGV has been scanned so far. */ + +/* 1003.2 says this must be 1 before any call. */ +int optind = 1; + +/* Formerly, initialization of getopt depended on optind==0, which + causes problems with re-calling getopt as programs generally don't + know that. */ + +int __getopt_initialized = 0; + +/* The next char to be scanned in the option-element + in which the last option character we returned was found. + This allows us to pick up the scan where we left off. + + If this is zero, or a null string, it means resume the scan + by advancing to the next ARGV-element. */ + +static char *nextchar; + +/* Callers store zero here to inhibit the error message + for unrecognized options. */ + +int opterr = 1; + +/* Set to an option character which was unrecognized. + This must be initialized on some systems to avoid linking in the + system's own getopt implementation. */ + +int optopt = '?'; + +/* Describe how to deal with options that follow non-option ARGV-elements. + + If the caller did not specify anything, + the default is REQUIRE_ORDER if the environment variable + POSIXLY_CORRECT is defined, PERMUTE otherwise. + + REQUIRE_ORDER means don't recognize them as options; + stop option processing when the first non-option is seen. + This is what Unix does. + This mode of operation is selected by either setting the environment + variable POSIXLY_CORRECT, or using `+' as the first character + of the list of option characters. + + PERMUTE is the default. We permute the contents of ARGV as we scan, + so that eventually all the non-options are at the end. This allows options + to be given in any order, even with programs that were not written to + expect this. + + RETURN_IN_ORDER is an option available to programs that were written + to expect options and other ARGV-elements in any order and that care about + the ordering of the two. We describe each non-option ARGV-element + as if it were the argument of an option with character code 1. + Using `-' as the first character of the list of option characters + selects this mode of operation. + + The special argument `--' forces an end of option-scanning regardless + of the value of `ordering'. In the case of RETURN_IN_ORDER, only + `--' can cause `getopt' to return -1 with `optind' != ARGC. */ + +static enum +{ + REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER +} ordering; + +/* Value of POSIXLY_CORRECT environment variable. */ +static char *posixly_correct; + +#ifdef __GNU_LIBRARY__ +/* We want to avoid inclusion of string.h with non-GNU libraries + because there are many ways it can cause trouble. + On some systems, it contains special magic macros that don't work + in GCC. */ +# include +# define my_index strchr +#else + +# if HAVE_STRING_H +# include +# else +# include +# endif + +/* Avoid depending on library functions or files + whose names are inconsistent. */ + +#ifndef getenv +extern char *getenv (); +#endif + +static char * +my_index (str, chr) + const char *str; + int chr; +{ + while (*str) + { + if (*str == chr) + return (char *) str; + str++; + } + return 0; +} + +/* If using GCC, we can safely declare strlen this way. + If not using GCC, it is ok not to declare it. */ +#ifdef __GNUC__ +/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. + That was relevant to code that was here before. */ +# if (!defined __STDC__ || !__STDC__) && !defined strlen +/* gcc with -traditional declares the built-in strlen to return int, + and has done so at least since version 2.4.5. -- rms. */ +extern int strlen (const char *); +# endif /* not __STDC__ */ +#endif /* __GNUC__ */ + +#endif /* not __GNU_LIBRARY__ */ + +/* Handle permutation of arguments. */ + +/* Describe the part of ARGV that contains non-options that have + been skipped. `first_nonopt' is the index in ARGV of the first of them; + `last_nonopt' is the index after the last of them. */ + +static int first_nonopt; +static int last_nonopt; + +#ifdef _LIBC +/* Bash 2.0 gives us an environment variable containing flags + indicating ARGV elements that should not be considered arguments. */ + +/* Defined in getopt_init.c */ +extern char *__getopt_nonoption_flags; + +static int nonoption_flags_max_len; +static int nonoption_flags_len; + +static int original_argc; +static char *const *original_argv; + +/* Make sure the environment variable bash 2.0 puts in the environment + is valid for the getopt call we must make sure that the ARGV passed + to getopt is that one passed to the process. */ +static void +__attribute__ ((unused)) +store_args_and_env (int argc, char *const *argv) +{ + /* XXX This is no good solution. We should rather copy the args so + that we can compare them later. But we must not use malloc(3). */ + original_argc = argc; + original_argv = argv; +} +# ifdef text_set_element +text_set_element (__libc_subinit, store_args_and_env); +# endif /* text_set_element */ + +# define SWAP_FLAGS(ch1, ch2) \ + if (nonoption_flags_len > 0) \ + { \ + char __tmp = __getopt_nonoption_flags[ch1]; \ + __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ + __getopt_nonoption_flags[ch2] = __tmp; \ + } +#else /* !_LIBC */ +# define SWAP_FLAGS(ch1, ch2) +#endif /* _LIBC */ + +/* Exchange two adjacent subsequences of ARGV. + One subsequence is elements [first_nonopt,last_nonopt) + which contains all the non-options that have been skipped so far. + The other is elements [last_nonopt,optind), which contains all + the options processed since those non-options were skipped. + + `first_nonopt' and `last_nonopt' are relocated so that they describe + the new indices of the non-options in ARGV after they are moved. */ + +#if defined __STDC__ && __STDC__ +static void exchange (char **); +#endif + +static void +exchange (argv) + char **argv; +{ + int bottom = first_nonopt; + int middle = last_nonopt; + int top = optind; + char *tem; + + /* Exchange the shorter segment with the far end of the longer segment. + That puts the shorter segment into the right place. + It leaves the longer segment in the right place overall, + but it consists of two parts that need to be swapped next. */ + +#ifdef _LIBC + /* First make sure the handling of the `__getopt_nonoption_flags' + string can work normally. Our top argument must be in the range + of the string. */ + if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) + { + /* We must extend the array. The user plays games with us and + presents new arguments. */ + char *new_str = malloc (top + 1); + if (new_str == NULL) + nonoption_flags_len = nonoption_flags_max_len = 0; + else + { + memset (__mempcpy (new_str, __getopt_nonoption_flags, + nonoption_flags_max_len), + '\0', top + 1 - nonoption_flags_max_len); + nonoption_flags_max_len = top + 1; + __getopt_nonoption_flags = new_str; + } + } +#endif + + while (top > middle && middle > bottom) + { + if (top - middle > middle - bottom) + { + /* Bottom segment is the short one. */ + int len = middle - bottom; + register int i; + + /* Swap it with the top part of the top segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[top - (middle - bottom) + i]; + argv[top - (middle - bottom) + i] = tem; + SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); + } + /* Exclude the moved bottom segment from further swapping. */ + top -= len; + } + else + { + /* Top segment is the short one. */ + int len = top - middle; + register int i; + + /* Swap it with the bottom part of the bottom segment. */ + for (i = 0; i < len; i++) + { + tem = argv[bottom + i]; + argv[bottom + i] = argv[middle + i]; + argv[middle + i] = tem; + SWAP_FLAGS (bottom + i, middle + i); + } + /* Exclude the moved top segment from further swapping. */ + bottom += len; + } + } + + /* Update records for the slots the non-options now occupy. */ + + first_nonopt += (optind - last_nonopt); + last_nonopt = optind; +} + +/* Initialize the internal data when the first call is made. */ + +#if defined __STDC__ && __STDC__ +static const char *_getopt_initialize (int, char *const *, const char *); +#endif +static const char * +_getopt_initialize (argc, argv, optstring) + int argc; + char *const *argv; + const char *optstring; +{ + + /* Kill compiler warnings */ + (void) argc; + (void) argv; + + /* Start processing options with ARGV-element 1 (since ARGV-element 0 + is the program name); the sequence of previously skipped + non-option ARGV-elements is empty. */ + + first_nonopt = last_nonopt = optind; + + nextchar = NULL; + + posixly_correct = getenv ("POSIXLY_CORRECT"); + + /* Determine how to handle the ordering of options and nonoptions. */ + + if (optstring[0] == '-') + { + ordering = RETURN_IN_ORDER; + ++optstring; + } + else if (optstring[0] == '+') + { + ordering = REQUIRE_ORDER; + ++optstring; + } + else if (posixly_correct != NULL) + ordering = REQUIRE_ORDER; + else + ordering = PERMUTE; + +#ifdef _LIBC + if (posixly_correct == NULL + && argc == original_argc && argv == original_argv) + { + if (nonoption_flags_max_len == 0) + { + if (__getopt_nonoption_flags == NULL + || __getopt_nonoption_flags[0] == '\0') + nonoption_flags_max_len = -1; + else + { + const char *orig_str = __getopt_nonoption_flags; + int len = nonoption_flags_max_len = strlen (orig_str); + if (nonoption_flags_max_len < argc) + nonoption_flags_max_len = argc; + __getopt_nonoption_flags = + (char *) malloc (nonoption_flags_max_len); + if (__getopt_nonoption_flags == NULL) + nonoption_flags_max_len = -1; + else + memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), + '\0', nonoption_flags_max_len - len); + } + } + nonoption_flags_len = nonoption_flags_max_len; + } + else + nonoption_flags_len = 0; +#endif + + return optstring; +} + +/* Scan elements of ARGV (whose length is ARGC) for option characters + given in OPTSTRING. + + If an element of ARGV starts with '-', and is not exactly "-" or "--", + then it is an option element. The characters of this element + (aside from the initial '-') are option characters. If `getopt' + is called repeatedly, it returns successively each of the option characters + from each of the option elements. + + If `getopt' finds another option character, it returns that character, + updating `optind' and `nextchar' so that the next call to `getopt' can + resume the scan with the following option character or ARGV-element. + + If there are no more option characters, `getopt' returns -1. + Then `optind' is the index in ARGV of the first ARGV-element + that is not an option. (The ARGV-elements have been permuted + so that those that are not options now come last.) + + OPTSTRING is a string containing the legitimate option characters. + If an option character is seen that is not listed in OPTSTRING, + return '?' after printing an error message. If you set `opterr' to + zero, the error message is suppressed but we still return '?'. + + If a char in OPTSTRING is followed by a colon, that means it wants an arg, + so the following text in the same ARGV-element, or the text of the following + ARGV-element, is returned in `optarg'. Two colons mean an option that + wants an optional arg; if there is text in the current ARGV-element, + it is returned in `optarg', otherwise `optarg' is set to zero. + + If OPTSTRING starts with `-' or `+', it requests different methods of + handling the non-option ARGV-elements. + See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. + + Long-named options begin with `--' instead of `-'. + Their names may be abbreviated as long as the abbreviation is unique + or is an exact match for some defined option. If they have an + argument, it follows the option name in the same ARGV-element, separated + from the option name by a `=', or else the in next ARGV-element. + When `getopt' finds a long-named option, it returns 0 if that option's + `flag' field is nonzero, the value of the option's `val' field + if the `flag' field is zero. + + The elements of ARGV aren't really const, because we permute them. + But we pretend they're const in the prototype to be compatible + with other systems. + + LONGOPTS is a vector of `struct option' terminated by an + element containing a name which is zero. + + LONGIND returns the index in LONGOPT of the long-named option found. + It is only valid when a long-named option has been found by the most + recent call. + + If LONG_ONLY is nonzero, '-' as well as '--' can introduce + long-named options. */ + +int +_getopt_internal (argc, argv, optstring, longopts, longind, long_only) + int argc; + char *const *argv; + const char *optstring; + const struct option *longopts; + int *longind; + int long_only; +{ + optarg = NULL; + + if (optind == 0 || !__getopt_initialized) + { + if (optind == 0) + optind = 1; /* Don't scan ARGV[0], the program name. */ + optstring = _getopt_initialize (argc, argv, optstring); + __getopt_initialized = 1; + } + + /* Test whether ARGV[optind] points to a non-option argument. + Either it does not have option syntax, or there is an environment flag + from the shell indicating it is not an option. The later information + is only used when the used in the GNU libc. */ +#ifdef _LIBC +# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ + || (optind < nonoption_flags_len \ + && __getopt_nonoption_flags[optind] == '1')) +#else +# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') +#endif + + if (nextchar == NULL || *nextchar == '\0') + { + /* Advance to the next ARGV-element. */ + + /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been + moved back by the user (who may also have changed the arguments). */ + if (last_nonopt > optind) + last_nonopt = optind; + if (first_nonopt > optind) + first_nonopt = optind; + + if (ordering == PERMUTE) + { + /* If we have just processed some options following some non-options, + exchange them so that the options come first. */ + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (last_nonopt != optind) + first_nonopt = optind; + + /* Skip any additional non-options + and extend the range of non-options previously skipped. */ + + while (optind < argc && NONOPTION_P) + optind++; + last_nonopt = optind; + } + + /* The special ARGV-element `--' means premature end of options. + Skip it like a null option, + then exchange with previous non-options as if it were an option, + then skip everything else like a non-option. */ + + if (optind != argc && !strcmp (argv[optind], "--")) + { + optind++; + + if (first_nonopt != last_nonopt && last_nonopt != optind) + exchange ((char **) argv); + else if (first_nonopt == last_nonopt) + first_nonopt = optind; + last_nonopt = argc; + + optind = argc; + } + + /* If we have done all the ARGV-elements, stop the scan + and back over any non-options that we skipped and permuted. */ + + if (optind == argc) + { + /* Set the next-arg-index to point at the non-options + that we previously skipped, so the caller will digest them. */ + if (first_nonopt != last_nonopt) + optind = first_nonopt; + return -1; + } + + /* If we have come to a non-option and did not permute it, + either stop the scan or describe it to the caller and pass it by. */ + + if (NONOPTION_P) + { + if (ordering == REQUIRE_ORDER) + return -1; + optarg = argv[optind++]; + return 1; + } + + /* We have found another option-ARGV-element. + Skip the initial punctuation. */ + + nextchar = (argv[optind] + 1 + + (longopts != NULL && argv[optind][1] == '-')); + } + + /* Decode the current option-ARGV-element. */ + + /* Check whether the ARGV-element is a long option. + + If long_only and the ARGV-element has the form "-f", where f is + a valid short option, don't consider it an abbreviated form of + a long option that starts with f. Otherwise there would be no + way to give the -f short option. + + On the other hand, if there's a long option "fubar" and + the ARGV-element is "-fu", do consider that an abbreviation of + the long option, just like "--fu", and not "-f" with arg "u". + + This distinction seems to be the most useful approach. */ + + if (longopts != NULL + && (argv[optind][1] == '-' + || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = -1; + int option_index; + + for (nameend = nextchar; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) + == (unsigned int) strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, _("%s: option `%s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + optopt = 0; + return '?'; + } + + if (pfound != NULL) + { + option_index = indfound; + optind++; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + { + if (argv[optind - 1][1] == '-') + /* --option */ + fprintf (stderr, + _("%s: option `--%s' doesn't allow an argument\n"), + argv[0], pfound->name); + else + /* +option or -option */ + fprintf (stderr, + _("%s: option `%c%s' doesn't allow an argument\n"), + argv[0], argv[optind - 1][0], pfound->name); + } + + nextchar += strlen (nextchar); + + optopt = pfound->val; + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + optopt = pfound->val; + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + + /* Can't find it as a long option. If this is not getopt_long_only, + or the option starts with '--' or is not a valid short + option, then it's an error. + Otherwise interpret it as a short option. */ + if (!long_only || argv[optind][1] == '-' + || my_index (optstring, *nextchar) == NULL) + { + if (opterr) + { + if (argv[optind][1] == '-') + /* --option */ + fprintf (stderr, _("%s: unrecognized option `--%s'\n"), + argv[0], nextchar); + else + /* +option or -option */ + fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), + argv[0], argv[optind][0], nextchar); + } + nextchar = (char *) ""; + optind++; + optopt = 0; + return '?'; + } + } + + /* Look at and handle the next short option-character. */ + + { + char c = *nextchar++; + char *temp = my_index (optstring, c); + + /* Increment `optind' when we start to process its last character. */ + if (*nextchar == '\0') + ++optind; + + if (temp == NULL || c == ':') + { + if (opterr) + { + if (posixly_correct) + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: illegal option -- %c\n"), + argv[0], c); + else + fprintf (stderr, _("%s: invalid option -- %c\n"), + argv[0], c); + } + optopt = c; + return '?'; + } + /* Convenience. Treat POSIX -W foo same as long option --foo */ + if (temp[0] == 'W' && temp[1] == ';') + { + char *nameend; + const struct option *p; + const struct option *pfound = NULL; + int exact = 0; + int ambig = 0; + int indfound = 0; + int option_index; + + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + return c; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + + /* optarg is now the argument, see if it's in the + table of longopts. */ + + for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) + /* Do nothing. */ ; + + /* Test all long options for either exact match + or abbreviated matches. */ + for (p = longopts, option_index = 0; p->name; p++, option_index++) + if (!strncmp (p->name, nextchar, nameend - nextchar)) + { + if ((unsigned int) (nameend - nextchar) == strlen (p->name)) + { + /* Exact match found. */ + pfound = p; + indfound = option_index; + exact = 1; + break; + } + else if (pfound == NULL) + { + /* First nonexact match found. */ + pfound = p; + indfound = option_index; + } + else + /* Second or later nonexact match found. */ + ambig = 1; + } + if (ambig && !exact) + { + if (opterr) + fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), + argv[0], argv[optind]); + nextchar += strlen (nextchar); + optind++; + return '?'; + } + if (pfound != NULL) + { + option_index = indfound; + if (*nameend) + { + /* Don't test has_arg with >, because some C compilers don't + allow it to be used on enums. */ + if (pfound->has_arg) + optarg = nameend + 1; + else + { + if (opterr) + fprintf (stderr, _("\ +%s: option `-W %s' doesn't allow an argument\n"), + argv[0], pfound->name); + + nextchar += strlen (nextchar); + return '?'; + } + } + else if (pfound->has_arg == 1) + { + if (optind < argc) + optarg = argv[optind++]; + else + { + if (opterr) + fprintf (stderr, + _("%s: option `%s' requires an argument\n"), + argv[0], argv[optind - 1]); + nextchar += strlen (nextchar); + return optstring[0] == ':' ? ':' : '?'; + } + } + nextchar += strlen (nextchar); + if (longind != NULL) + *longind = option_index; + if (pfound->flag) + { + *(pfound->flag) = pfound->val; + return 0; + } + return pfound->val; + } + nextchar = NULL; + return 'W'; /* Let the application handle it. */ + } + if (temp[1] == ':') + { + if (temp[2] == ':') + { + /* This is an option that accepts an argument optionally. */ + if (*nextchar != '\0') + { + optarg = nextchar; + optind++; + } + else + optarg = NULL; + nextchar = NULL; + } + else + { + /* This is an option that requires an argument. */ + if (*nextchar != '\0') + { + optarg = nextchar; + /* If we end this ARGV-element by taking the rest as an arg, + we must advance to the next element now. */ + optind++; + } + else if (optind == argc) + { + if (opterr) + { + /* 1003.2 specifies the format of this message. */ + fprintf (stderr, + _("%s: option requires an argument -- %c\n"), + argv[0], c); + } + optopt = c; + if (optstring[0] == ':') + c = ':'; + else + c = '?'; + } + else + /* We already incremented `optind' once; + increment it again when taking next ARGV-elt as argument. */ + optarg = argv[optind++]; + nextchar = NULL; + } + } + return c; + } +} + +int +getopt (argc, argv, optstring) + int argc; + char *const *argv; + const char *optstring; +{ + return _getopt_internal (argc, argv, optstring, + (const struct option *) 0, + (int *) 0, + 0); +} + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +/* Compile with -DTEST to make an executable for use in testing + the above definition of `getopt'. */ + +int +main (argc, argv) + int argc; + char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + + c = getopt (argc, argv, "abc:d:0123456789"); + if (c == -1) + break; + + switch (c) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value `%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ +#endif /* HAVE_GETOPT_LONG */ diff --git a/siege-4.1.6/src/getopt1.c b/siege-4.1.6/src/getopt1.c new file mode 100644 index 0000000..84b7811 --- /dev/null +++ b/siege-4.1.6/src/getopt1.c @@ -0,0 +1,191 @@ +#include +#ifndef HAVE_GETOPT_LONG +/* getopt_long and getopt_long_only entry points for GNU getopt. + Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 + Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +#if !defined __STDC__ || !__STDC__ +/* This is a separate conditional since some stdc systems + reject `defined (const)'. */ +#ifndef const +#define const +#endif +#endif + +#include + +/* Comment out all this code if we are using the GNU C Library, and are not + actually compiling the library itself. This code is part of the GNU C + Library, but also included in many other GNU distributions. Compiling + and linking in this code is a waste when using the GNU C library + (especially if it is a shared library). Rather than having every GNU + program understand `configure --with-gnu-libc' and omit the object files, + it is simpler to just do this in the source for each such file. */ + +#define GETOPT_INTERFACE_VERSION 2 +#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 +#include +#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION +#define ELIDE_CODE +#endif +#endif + +#ifndef ELIDE_CODE + + +/* This needs to come after some library #include + to get __GNU_LIBRARY__ defined. */ +#ifdef __GNU_LIBRARY__ +#include +#endif + +#ifndef NULL +#define NULL 0 +#endif + +int +getopt_long (argc, argv, options, long_options, opt_index) + int argc; + char *const *argv; + const char *options; + const struct option *long_options; + int *opt_index; +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 0); +} + +/* Like getopt_long, but '-' as well as '--' can indicate a long option. + If an option that starts with '-' (not '--') doesn't match a long option, + but does match a short option, it is parsed as a short option + instead. */ + +int +getopt_long_only (argc, argv, options, long_options, opt_index) + int argc; + char *const *argv; + const char *options; + const struct option *long_options; + int *opt_index; +{ + return _getopt_internal (argc, argv, options, long_options, opt_index, 1); +} + + +#endif /* Not ELIDE_CODE. */ + +#ifdef TEST + +#include + +int +main (argc, argv) + int argc; + char **argv; +{ + int c; + int digit_optind = 0; + + while (1) + { + int this_option_optind = optind ? optind : 1; + int option_index = 0; + static struct option long_options[] = + { + {"add", 1, 0, 0}, + {"append", 0, 0, 0}, + {"delete", 1, 0, 0}, + {"verbose", 0, 0, 0}, + {"create", 0, 0, 0}, + {"file", 1, 0, 0}, + {0, 0, 0, 0} + }; + + c = getopt_long (argc, argv, "abc:d:0123456789", + long_options, &option_index); + if (c == -1) + break; + + switch (c) + { + case 0: + printf ("option %s", long_options[option_index].name); + if (optarg) + printf (" with arg %s", optarg); + printf ("\n"); + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (digit_optind != 0 && digit_optind != this_option_optind) + printf ("digits occur in two different argv-elements.\n"); + digit_optind = this_option_optind; + printf ("option %c\n", c); + break; + + case 'a': + printf ("option a\n"); + break; + + case 'b': + printf ("option b\n"); + break; + + case 'c': + printf ("option c with value `%s'\n", optarg); + break; + + case 'd': + printf ("option d with value `%s'\n", optarg); + break; + + case '?': + break; + + default: + printf ("?? getopt returned character code 0%o ??\n", c); + } + } + + if (optind < argc) + { + printf ("non-option ARGV-elements: "); + while (optind < argc) + printf ("%s ", argv[optind++]); + printf ("\n"); + } + + exit (0); +} + +#endif /* TEST */ +#endif /* HAVE_GETOPT_LONG */ diff --git a/siege-4.1.6/src/handler.c b/siege-4.1.6/src/handler.c new file mode 100644 index 0000000..0e8b59c --- /dev/null +++ b/siege-4.1.6/src/handler.c @@ -0,0 +1,86 @@ +/** + * Signal Handling + * + * Copyright (C) 2013-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#ifdef HAVE_PTHREAD_H +# include +#endif/*HAVE_PTHREAD_H*/ + +#include +#include +#include +#include +#include + +void +spin_doctor(CREW crew) +{ + long x; + char h[4] = {'-','\\','|','/'}; + + if(my.spinner==FALSE){ + return; + } + + for (x = 0; crew_get_total(crew) > 1 || x < 55; x++) { + fflush(stderr); + fprintf(stderr,"%c", h[x%4]); + pthread_usleep_np(20000); + fprintf(stderr, "\b"); + } + return; +} + +void +sig_handler(CREW crew) +{ + int gotsig = 0; + sigset_t sigs; + + sigemptyset(&sigs); + sigaddset(&sigs, SIGHUP); + sigaddset(&sigs, SIGINT); + sigaddset(&sigs, SIGTERM); + sigprocmask(SIG_BLOCK, &sigs, NULL); + + /** + * Now wait around for something to happen ... + */ + sigwait(&sigs, &gotsig); + my.verbose = FALSE; + if (!my.quiet) { + fprintf(stderr, "\nLifting the server siege..."); + } + crew_cancel(crew); + + /** + * The signal consistently arrives early, + * so we artificially extend the life of + * the siege to make up the discrepancy. + */ + pthread_usleep_np(501125); + pthread_exit(NULL); +} + diff --git a/siege-4.1.6/src/handler.h b/siege-4.1.6/src/handler.h new file mode 100644 index 0000000..42df64b --- /dev/null +++ b/siege-4.1.6/src/handler.h @@ -0,0 +1,32 @@ +/** + * Signal Handling + * + * Copyright (C) 2013-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef HANDLER_H +#define HANDLER_H + +#include +#include + +void spin_doctor(); +void sig_handler(CREW crew); + +#endif/*HANDLER_H*/ diff --git a/siege-4.1.6/src/hash.c b/siege-4.1.6/src/hash.c new file mode 100644 index 0000000..ecbd7e0 --- /dev/null +++ b/siege-4.1.6/src/hash.c @@ -0,0 +1,489 @@ +/** + * Hash Table + * + * Copyright (C) 2003-2015 by + * Jeffrey Fulmer - , et al. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include +#include +#include +#include + +typedef struct NODE +{ + char *key; + void *val; + struct NODE *next; +} NODE; + +struct HASH_T +{ + int size; + int entries; + int index; + NODE **table; + method free; +}; + +size_t HASHSIZE = sizeof(struct HASH_T); + +/** + * local prototypes + */ +private BOOLEAN __lookup(HASH this, char *key); +private void __resize(HASH this); +private unsigned int __genkey(int size, char *str); +private u_int32_t fnv_32_buf(void *buf, size_t len, u_int32_t hval); + +/** + * Constructs an empty hash map with an initial + * capacity of 10240 entries. + */ +HASH +new_hash() +{ + HASH this; + int size = 10240; + this = calloc(HASHSIZE,1); + this->size = size; + this->entries = 0; + this->index = 0; + while (this->size < size) { + this->size <<= 1; + } + this->table = (NODE**)calloc(this->size * sizeof(NODE*), 1); + this->free = NULL; + return this; +} + +/** + * Returns the number of key-value mappings in this hash. + */ +int +hash_size(HASH this) +{ + return this->entries; +} + +void +hash_reset(HASH this, ssize_t size) +{ + this->size = 2; + this->entries = 0; + + while (this->size < size) { + this->size <<= 1; + } + + this->table = (NODE**)calloc(this->size * sizeof(NODE*), 1); + return; +} + +/** + * add a key value pair to the hash table. + * This function tests the size of the table + * and dynamically resizes it as necessary. + * len is the size of void pointer. + */ +void +hash_add(HASH this, char *key, void *val) +{ + size_t len = 0; + if (__lookup(this, key) == TRUE) + return; + + len = strlen(val); + hash_nadd(this, key, val, len); + return; +} + +void +hash_nadd(HASH this, char *key, void *val, size_t len) +{ + int x; + NODE *node; + + if (__lookup(this, key) == TRUE) + return; + + if (this->entries >= this->size/4) + __resize(this); + + x = __genkey(this->size, key); + node = xmalloc(sizeof(NODE)); + node->key = strdup(key); + node->val = xmalloc(len+1); + memset(node->val, '\0', len+1); + memcpy(node->val, val, len); + node->next = this->table[x]; + this->table[x] = node; + this->entries++; + return; +} + + +/** + * returns a void NODE->val element + * in the table corresponding to key. + */ +void * +hash_get(HASH this, char *key) +{ + int x; + NODE *node; + + x = __genkey(this->size, key); + for (node = this->table[x]; node != NULL; node = node->next) { + if (!strcmp(node->key, key)) { + return(node->val); + } + } + + return NULL; +} + +/** + * Removes and element from the hash; if + * a function wasn't assigned, then it uses + * free. You can assign an alternative method + * using hash_remover or assign it in advance + * with hash_set_destroyer + */ +void +hash_remove(HASH this, char *key) +{ + int x = 0; + NODE *n1 = NULL; + NODE *n2 = NULL; + + if (__lookup(this, key) == FALSE) + return; + + if (this->free == NULL) { + this->free = free; + } + + x = __genkey(this->size, key); + n1 = this->table[x]; + while (n1 != NULL) { + n2 = n1->next; + if (n1->key != NULL) { + xfree(n1->key); + this->entries--; + } + if (n1->val != NULL) + this->free(n1->val); + xfree(n1); + n1 = n2; + } + this->table[x] = NULL; +} + +void +hash_remover(HASH this, char *key, method m) +{ + this->free = m; + hash_remove(this, key); +} + +void +hash_set_destroyer(HASH this, method m) +{ + if (this == NULL) return; + + this->free = m; +} + + +BOOLEAN +hash_contains(HASH this, char *key) +{ + return __lookup(this, key); +} + + +char ** +hash_get_keys(HASH this) +{ + int x; + int i = 0; + NODE *node; + char **keys; + + if (this == NULL || this->entries == 0) return NULL; + + + keys = (char**)malloc(sizeof(char*) * this->entries); + for (x = 0; x < this->size; x ++) { + for(node = this->table[x]; node != NULL; node = node->next){ + size_t len = strlen(node->key)+1; + keys[i] = (char*)malloc(len); + memset(keys[i], '\0', len); + memcpy(keys[i], (char*)node->key, strlen(node->key)); + i++; + } + } + return keys; +} + +void +hash_free_keys(HASH this, char **keys) +{ + int x; + for (x = 0; x < this->entries; x ++) + if (keys[x] != NULL) { + char *tmp = keys[x]; + xfree(tmp); + } + xfree(keys); + + return; +} + +/** + * Destroy the hash table and free + * memory which was allocated to it. + */ +HASH +hash_destroy(HASH this) +{ + int x; + NODE *t1, *t2; + + if (this == NULL) { + return this; + } + + if (this->free == NULL) { + this->free = free; + } + + for (x = 0; x < this->size; x++) { + t1 = this->table[x]; + while (t1 != NULL) { + t2 = t1->next; + if (t1->key != NULL) + xfree(t1->key); + if (t1->val != NULL) + this->free(t1->val); + xfree(t1); + t1 = t2; + } + this->table[x] = NULL; + } + if (this->table != NULL) { + xfree(this->table); + memset(this, '\0', sizeof(struct HASH_T)); + } + xfree(this); + return NULL; +} + +HASH +hash_destroyer(HASH this, method m) +{ + this->free = m; + return hash_destroy(this); +} + +int +hash_get_entries(HASH this) +{ + return this->entries; +} + +/** + * redoubles the size of the hash table. + * This is a local function called by hash_add + * which dynamically resizes the table as + * necessary. + */ +private void +__resize(HASH this) +{ + NODE *tmp; + NODE *last_node; + NODE **last_table; + int x, hash, size; + + size = this->size; + last_table = this->table; + + hash_reset(this, size*2); + + x = 0; + while (x < size) { + last_node = last_table[x]; + while (last_node != NULL) { + tmp = last_node; + last_node = last_node->next; + hash = __genkey(this->size, (char*)tmp->key); + tmp->next = this->table[hash]; + this->table[hash] = tmp; + this->entries++; + } + x++; + } + return; +} + +/** + * Fowler/Noll/Vo hash + * + * The basis of this hash algorithm was taken from an idea sent + * as reviewer comments to the IEEE POSIX P1003.2 committee by: + * + * Phong Vo (http://www.research.att.com/info/kpv/) + * Glenn Fowler (http://www.research.att.com/~gsf/) + * + * In a subsequent ballot round: + * + * Landon Curt Noll (http://www.isthe.com/chongo/) + * + * improved on their algorithm. Some people tried this hash + * and found that it worked rather well. In an EMail message + * to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash. + * + * FNV hashes are designed to be fast while maintaining a low + * collision rate. The FNV speed allows one to quickly hash lots + * of data while maintaining a reasonable collision rate. + * + * See: http://www.isthe.com/chongo/tech/comp/fnv/index.html + * + * This code is in the public domain. + * + * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO + * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF + * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + */ +private unsigned int +fnv_32_buf(void *buf, size_t len, unsigned int hval) { + unsigned char *bp = (unsigned char *)buf; /* start of buffer */ + unsigned char *be = bp + len; /* beyond end of buffer */ + + /** + * FNV-1a hash each octet in the buffer + */ + while (bp < be) { + hval ^= (u_int32_t)*bp++; + hval += (hval<<1) + (hval<<4) + (hval<<7) + (hval<<8) + (hval<<24); + } + return hval; +} + +/** + * returns int hash key for the table + */ +#define FNV1_32_INIT ((unsigned int)2166136261LL) + +private unsigned int +__genkey(int size, char *str) { + unsigned int hash; + void *data = str; + + hash = fnv_32_buf(data, strlen(str), FNV1_32_INIT); + hash %= size; + return hash; +} + + +/** + * returns TRUE if key is present in the table + * and FALSE if it is not. + */ +private BOOLEAN +__lookup(HASH this, char *key) +{ + int x; + NODE *node; + + if (key == NULL) { return FALSE; } + x = __genkey(this->size, key); + for (node = this->table[x]; node != NULL; node = node->next) { + if (!strcmp(node->key, key)) { + return TRUE; + } + } + return FALSE; +} + +#if 0 +int +main() +{ + HASH H = new_hash(); + int i = 0; + int j; + char **keys; + int len = 24; + char *simpsons[][2] = { + {"Homer", "D'oh!!!"}, + {"Homey", "Whoo hoo!"}, + {"Homer J.", "Why, you little!"}, + {"Marge", "Hrrrrmph"}, + {"Bart", "Aye Caramba!"}, + {"Lisa", "I'll be in my room"}, + {"Maggie", "(pacifier suck)"}, + {"Ned", "Okily Dokily!"}, + {"Moe", "WhaaaAAAAT?!"}, + {"Comic Book Guy", "Worst. Episode. Ever!"}, + {"Waylon", "That's Homer Simpson from sector 7G"}, + {"Barnie", "Brrraaarrp!"}, + {"Krusty", "Hey! Hey! Kids!"}, + {"Frink", "Glavin!"}, + {"Burns", "Release the hounds!"}, + {"Nelson", "Hah! Haw!"}, + {"Dr. Nick", "Hi, everybody!"}, + {"Edna", "Hah!"}, + {"Helen", "Think of the children!"}, + {"Snake", "Dude!"}, + {"Chalmers", "SKINNER!"}, + {"Agnes", "SEYMOUR!"}, + {"Sea Cap'n", "Yargh!"}, + {"Sideshow Bob", "Hello, Bart!"}, + }; + + for (i = 0; i < len; i++) { + hash_add(H, simpsons[i][0], simpsons[i][1]); + } + + keys = hash_get_keys(H); + for (j = 0; j < 100000; j++) { + for (i = 0; i < hash_get_entries(H); i ++){ + char *tmp = (char*)hash_get(H, keys[i]); + printf("%16s => %s\n", keys[i], (tmp==NULL)?"NULL":tmp); + } + } + hash_free_keys(H, keys); + hash_destroy(H); + exit(0); +} +#endif + diff --git a/siege-4.1.6/src/hash.h b/siege-4.1.6/src/hash.h new file mode 100644 index 0000000..8e74ed1 --- /dev/null +++ b/siege-4.1.6/src/hash.h @@ -0,0 +1,51 @@ +/** + * Hash Table + * + * Copyright (C) 2003-2014 by + * Jeffrey Fulmer - + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef HASH_H +#define HASH_H + +#include +#if defined (__FreeBSD__) +# include +#endif + +#include +#include + +typedef struct HASH_T *HASH; + +extern size_t HASHSIZE; + +HASH new_hash(); +void hash_add(HASH this, char *key, void *value); +void hash_nadd(HASH this, char *key, void *val, size_t len); +void * hash_get(HASH this, char *key); +char ** hash_get_keys(HASH this); +void hash_remove(HASH this, char *key); +void hash_remover(HASH this, char *key, method m); +BOOLEAN hash_contains(HASH this, char *key); +HASH hash_destroy(HASH this); +HASH hash_destroyer(HASH this, method m); +void hash_set_destroyer(HASH this, method m); +void hash_free_keys(HASH this, char **keys); +int hash_get_entries(HASH this); + +#endif/*HASH_H*/ diff --git a/siege-4.1.6/src/http.c b/siege-4.1.6/src/http.c new file mode 100644 index 0000000..ef9be88 --- /dev/null +++ b/siege-4.1.6/src/http.c @@ -0,0 +1,728 @@ +/** + * HTTP/HTTPS protocol support + * + * Copyright (C) 2000-2016 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#include +#include +#include +#include +#ifdef HAVE_ZLIB +# include +#endif/*HAVE_ZLIB*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MAXFILE 0x10000 // 65536 + +#ifndef HAVE_ZLIB +#define MAX_WBITS 1024 // doesn't matter - we don't use it +#endif/*HAVE_ZLIB*/ + +pthread_mutex_t __mutex = PTHREAD_MUTEX_INITIALIZER; +pthread_cond_t __cond = PTHREAD_COND_INITIALIZER; + +private int __gzip_inflate(int window, const char *src, int srcLen, const char *dst, int dstLen); + +/** + * HTTPS tunnel; set up a secure tunnel with the + * proxy server. CONNECT server:port HTTP/1.0 + */ +BOOLEAN +https_tunnel_request(CONN *C, char *host, int port) +{ + size_t rlen, n; + char request[256]; + + if (C->encrypt == TRUE && auth_get_proxy_required(my.auth)) { + snprintf( + request, sizeof(request), + "CONNECT %s:%d HTTP/1.0\015\012" + "User-agent: Proxy-User\015\012" + "\015\012", + host, port + ); + rlen = strlen(request); + echo ("%s", request); + C->encrypt = FALSE; + if ((n = socket_write(C, request, rlen)) != rlen){ + NOTIFY(ERROR, "HTTP: unable to write to socket." ); + return FALSE; + } + } else { + return FALSE; + } + return TRUE; +} + +int +https_tunnel_response(CONN *C) +{ + int x, n; + char c; + char line[256]; + int code = 100; + + while(TRUE){ + x = 0; + memset( &line, '\0', sizeof( line )); + while ((n = read(C->sock, &c, 1)) == 1) { + line[x] = c; + echo ("%c", c); + if((line[0] == '\n') || (line[1] == '\n')){ + return code; + } + if( line[x] == '\n' ) break; + x ++; + } + line[x]=0; + if( strncasecmp( line, "http", 4 ) == 0 ){ + code = atoi(line + 9); + } + } +} + +BOOLEAN +http_get(CONN *C, URL U) +{ + size_t rlen; + size_t mlen; + char protocol[16]; + char keepalive[16]; + char hoststr[512]; + char authwww[512]; + char authpxy[512]; + char accept[] = "Accept: */*\015\012"; + char encoding[512]; + char *request; + char portstr[16]; + char fullpath[MAX_COOKIE_SIZE*2]; + char cookie[MAX_COOKIE_SIZE+8]; + char * ifnon = NULL; + char * ifmod = NULL; + + memset(hoststr, '\0', sizeof hoststr); + memset(cookie, '\0', sizeof cookie); + memset(portstr, '\0', sizeof portstr); + + ifnon = cache_get_header(C->cache, C_ETAG, U); + ifmod = cache_get_header(C->cache, C_LAST, U); + + /* Request path based on proxy settings */ + if(auth_get_proxy_required(my.auth)){ + sprintf( + fullpath, "%s://%s:%d%s", C->encrypt == FALSE?"http":"https", + url_get_hostname(U), url_get_port(U), url_get_request(U) + ); + } else { + sprintf(fullpath, "%s", url_get_request(U)); + } + if ((url_get_port(U)==80 && C->encrypt==FALSE) || (url_get_port(U)==443 && C->encrypt==FALSE)){ + portstr[0] = '\0'; + } else { + snprintf(portstr, sizeof portstr, ":%d", url_get_port(U)); + } + + /** + * Set the protocol and keepalive strings + * based on configuration conditions.... + */ + if (my.protocol == FALSE || my.get == TRUE || my.print == TRUE) { + snprintf(protocol, sizeof(protocol), "HTTP/1.0"); + } else { + snprintf(protocol, sizeof(protocol), "HTTP/1.1"); + } + if (C->connection.keepalive == TRUE) { + snprintf(keepalive, sizeof(keepalive), "keep-alive"); + } else { + snprintf(keepalive, sizeof(keepalive), "close"); + } + + cookies_header(my.cookies, url_get_hostname(U), cookie); + if (C->auth.www) { + if (C->auth.type.www==DIGEST) { + snprintf ( + authwww, sizeof(authwww), "%s", + auth_get_digest_header(my.auth, HTTP, C->auth.wchlg, C->auth.wcred, url_get_method_name(U), fullpath) + ); + } else if (C->auth.type.www==NTLM) { + snprintf(authwww, sizeof(authwww), "%s", auth_get_ntlm_header(my.auth, HTTP)); + } else { + snprintf(authwww, sizeof(authwww), "%s", auth_get_basic_header(my.auth, HTTP)); + } + } + if (C->auth.proxy) { + if (C->auth.type.proxy==DIGEST) { + snprintf ( + authpxy, sizeof(authpxy), "%s", + auth_get_digest_header(my.auth, PROXY, C->auth.pchlg, C->auth.pcred, url_get_method_name(U), fullpath) + ); + } else { + snprintf(authpxy, sizeof(authpxy), "%s", auth_get_basic_header(my.auth, PROXY)); + } + } + + /* Only send the Host header if one wasn't provided by the configuration. */ + if (strncasestr(my.extra, "host:", sizeof(my.extra)) == NULL) { + // as per RFC2616 14.23, send the port if it's not default + if ((url_get_scheme(U) == HTTP && url_get_port(U) != 80) || + (url_get_scheme(U) == HTTPS && url_get_port(U) != 443)) { + rlen = snprintf(hoststr, sizeof(hoststr), "Host: %s:%d\015\012", url_get_hostname(U), url_get_port(U)); + } else { + rlen = snprintf(hoststr, sizeof(hoststr), "Host: %s\015\012", url_get_hostname(U)); + } + } + + mlen = strlen(url_get_method_name(U)) + + strlen(fullpath) + + strlen(protocol) + + strlen(hoststr) + + strlen((C->auth.www==TRUE)?authwww:"") + + strlen((C->auth.proxy==TRUE)?authpxy:"") + + strlen(cookie) + + strlen((ifmod!=NULL)?ifmod:"") + + strlen((ifnon!=NULL)?ifnon:"") + + strlen((strncasecmp(my.extra, "Accept:", 7)==0) ? "" : accept) + + sizeof(encoding) + + strlen(my.uagent) + + strlen(my.extra) + + strlen(keepalive) + + 128; + request = (char*)xmalloc(mlen); + memset(request, '\0', mlen); + memset(encoding, '\0', sizeof(encoding)); + if (! my.get || ! my.print) { + snprintf(encoding, sizeof(encoding), "Accept-Encoding: %s\015\012", my.encoding); + } + + /** + * build a request string to pass to the server + */ + rlen = snprintf ( + request, mlen, + "%s %s %s\015\012" /* operation, fullpath, protocol */ + "%s" /* hoststr */ + "%s" /* authwww or empty str */ + "%s" /* authproxy or empty str */ + "%s" /* cookie or empty str */ + "%s" /* ifmod or empty str */ + "%s" /* ifnon or empty str */ + "%s" /* Conditional Accept: */ + "%s" /* encoding */ + "User-Agent: %s\015\012" /* my uagent */ + "%s" /* my.extra */ + "Connection: %s\015\012\015\012", /* keepalive */ + url_get_method_name(U), fullpath, protocol, hoststr, + (C->auth.www==TRUE)?authwww:"", + (C->auth.proxy==TRUE)?authpxy:"", + (strlen(cookie) > 8)?cookie:"", + (ifmod!=NULL)?ifmod:"", + (ifnon!=NULL)?ifnon:"", + (strncasecmp(my.extra, "Accept:", 7)==0) ? "" : accept, + encoding, my.uagent, my.extra, keepalive + ); + + /** + * XXX: I hate to use a printf here (as opposed to echo) but we + * don't want to preface the headers with [debug] in debug mode + */ + if ((my.debug || my.get || my.print) && !my.quiet) { printf("%s\n", request); fflush(stdout); } + + if (rlen == 0 || rlen > mlen) { + NOTIFY(FATAL, "HTTP %s: request buffer overrun!", url_get_method_name(U)); + } + //XXX: printf("%s", request); + if ((socket_write(C, request, rlen)) < 0) { + xfree(ifmod); + xfree(ifnon); + return FALSE; + } + + xfree(ifmod); + xfree(ifnon); + xfree(request); + return TRUE; +} + +BOOLEAN +http_post(CONN *C, URL U) +{ + size_t rlen; + size_t mlen; + char hoststr[128]; + char authwww[128]; + char authpxy[128]; + char accept[] = "Accept: */*\015\012"; + char encoding[512]; + char * request; + char portstr[16]; + char protocol[16]; + char keepalive[16]; + char cookie[MAX_COOKIE_SIZE]; + char fullpath[MAX_COOKIE_SIZE*2]; + + memset(hoststr, '\0', sizeof(hoststr)); + memset(cookie, '\0', MAX_COOKIE_SIZE); + memset(portstr, '\0', sizeof(portstr)); + memset(protocol, '\0', sizeof(protocol)); + memset(keepalive,'\0', sizeof(keepalive)); + + if (auth_get_proxy_required(my.auth)) { + sprintf( + fullpath, + "%s://%s:%d%s", + C->encrypt == FALSE?"http":"https", url_get_hostname(U), url_get_port(U), url_get_request(U) + ); + } else { + sprintf(fullpath, "%s", url_get_request(U)); + } + + if ((url_get_port(U)==80 && C->encrypt==FALSE) || (url_get_port(U)==443 && C->encrypt==TRUE)) { + portstr[0] = '\0'; ; + } else { + snprintf(portstr, sizeof portstr, ":%d", url_get_port(U)); + } + + /** + * Set the protocol and keepalive strings + * based on configuration conditions.... + */ + if (my.protocol == FALSE || my.get == TRUE || my.print == TRUE) { + snprintf(protocol, sizeof(protocol), "HTTP/1.0"); + } else { + snprintf(protocol, sizeof(protocol), "HTTP/1.1"); + } + if (C->connection.keepalive == TRUE) { + snprintf(keepalive, sizeof(keepalive), "keep-alive"); + } else { + snprintf(keepalive, sizeof(keepalive), "close"); + } + + cookies_header(my.cookies, url_get_hostname(U), cookie); + if (C->auth.www) { + if (C->auth.type.www==DIGEST) { + snprintf ( + authwww, sizeof(authwww), "%s", + auth_get_digest_header(my.auth, HTTP, C->auth.wchlg, C->auth.wcred, url_get_method_name(U), fullpath) + ); + } else if(C->auth.type.www==NTLM) { + snprintf(authwww, sizeof(authwww), "%s", auth_get_ntlm_header(my.auth, HTTP)); + } else { + snprintf(authwww, sizeof(authwww), "%s", auth_get_basic_header(my.auth, HTTP)); + } + } + if (C->auth.proxy) { + if (C->auth.type.proxy==DIGEST) { + snprintf ( + authpxy, sizeof(authpxy), "%s", + auth_get_digest_header(my.auth, HTTP, C->auth.pchlg, C->auth.pcred, url_get_method_name(U), fullpath) + ); + } else { + snprintf(authpxy, sizeof(authpxy), "%s", auth_get_basic_header(my.auth, PROXY)); + } + } + + /* Only send the Host header if one wasn't provided by the configuration. */ + if (strncasestr(my.extra, "host:", sizeof(my.extra)) == NULL) { + // as per RFC2616 14.23, send the port if it's not default + if ((url_get_scheme(U) == HTTP && url_get_port(U) != 80) || + (url_get_scheme(U) == HTTPS && url_get_port(U) != 443)) { + rlen = snprintf(hoststr, sizeof(hoststr), "Host: %s:%d\015\012", url_get_hostname(U), url_get_port(U)); + } else { + rlen = snprintf(hoststr, sizeof(hoststr), "Host: %s\015\012", url_get_hostname(U)); + } + } + + mlen = strlen(url_get_method_name(U)) + + strlen(fullpath) + + strlen(protocol) + + strlen(hoststr) + + strlen((C->auth.www==TRUE)?authwww:"") + + strlen((C->auth.proxy==TRUE)?authpxy:"") + + strlen(cookie) + + strlen((strncasecmp(my.extra, "Accept:", 7)==0) ? "" : accept) + + sizeof(encoding) + + strlen(my.uagent) + + strlen(url_get_conttype(U)) + + strlen(my.extra) + + strlen(keepalive) + + url_get_postlen(U) + + 128; + request = (char*)xmalloc(mlen); + memset(request, '\0', mlen); + memset(encoding, '\0', sizeof(encoding)); + if (! my.get || ! my.print) { + snprintf(encoding, sizeof(encoding), "Accept-Encoding: %s\015\012", my.encoding); + } + + /** + * build a request string to + * post on the web server + */ + rlen = snprintf ( + request, mlen, + "%s %s %s\015\012" + "%s" + "%s" + "%s" + "%s" + "%s" + "%s" + "User-Agent: %s\015\012%s" + "Connection: %s\015\012" + "Content-Type: %s\015\012" + "Content-Length: %ld\015\012\015\012", + url_get_method_name(U), fullpath, protocol, hoststr, + (C->auth.www==TRUE)?authwww:"", + (C->auth.proxy==TRUE)?authpxy:"", + (strlen(cookie) > 8)?cookie:"", + (strncasecmp(my.extra, "Accept:", 7)==0) ? "" : accept, + encoding, my.uagent, my.extra, keepalive, url_get_conttype(U), (long)url_get_postlen(U) + ); + + if (rlen < mlen) { + memcpy(request + rlen, url_get_postdata(U), url_get_postlen(U)); + request[rlen+url_get_postlen(U)] = 0; + } + rlen += url_get_postlen(U); + + if (my.get || my.debug || my.print) printf("%s\n\n", request); + + if (rlen == 0 || rlen > mlen) { + NOTIFY(FATAL, "HTTP %s: request buffer overrun! Unable to continue...", url_get_method_name(U)); + } + + if ((socket_write(C, request, rlen)) < 0) { + return FALSE; + } + + xfree(request); + return TRUE; +} + +/** + * returns HEADERS struct + * reads from http/https socket and parses + * header information into the struct. + */ +RESPONSE +http_read_headers(CONN *C, URL U) +{ + int x; + int n; + char c; + char line[MAX_COOKIE_SIZE]; + RESPONSE resp = new_response(); + + while (TRUE) { + x = 0; + //memset(&line, '\0', MAX_COOKIE_SIZE); //VL issue #4 + while ((n = socket_read(C, &c, 1)) == 1) { + if (x < MAX_COOKIE_SIZE - 1) + line[x] = c; + else + line[x] = '\n'; + echo("%c", c); + if (x <= 1 && line[x] == '\n') { //VL issue #4, changed from (line[0] == '\n' || line[1] == '\n') + return resp; + } + if (line[x] == '\n') break; + x ++; + } + line[x]='\0'; + + // string carriage return + if (x > 0 && line[x-1] == '\r') line[x-1]='\0'; + + if (strncasecmp(line, "http", 4) == 0) { + response_set_code(resp, line); + } + if (strncasecmp(line, CONTENT_TYPE, strlen(CONTENT_TYPE)) == 0) { + response_set_content_type(resp, line); + } + if (strncasecmp(line, CONTENT_ENCODING, strlen(CONTENT_ENCODING)) == 0) { + response_set_content_encoding(resp, line); + } + if (strncasecmp(line, CONTENT_LENGTH, strlen(CONTENT_LENGTH)) == 0) { + response_set_content_length(resp, line); + C->content.length = atoi(line + 16); + } + if (strncasecmp(line, SET_COOKIE, strlen(SET_COOKIE)) == 0) { + if (my.cookies) { + char tmp[MAX_COOKIE_SIZE]; + memset(tmp, '\0', MAX_COOKIE_SIZE); + strncpy(tmp, line+12, strlen(line)); + cookies_add(my.cookies, tmp, url_get_hostname(U)); + } + } + if (strncasecmp(line, CONNECTION, strlen(CONNECTION)) == 0) { + response_set_connection(resp, line); + } + if (strncasecmp(line, "keep-alive: ", 12) == 0) { + if (response_set_keepalive(resp, line) == TRUE) { + C->connection.timeout = response_get_keepalive_timeout(resp); + C->connection.max = response_get_keepalive_max(resp); + } + } + if (strncasecmp(line, LOCATION, strlen(LOCATION)) == 0) { + response_set_location(resp, line); + } + if (strncasecmp(line, CONTENT_LOCATION, strlen(CONTENT_LOCATION)) == 0) { + response_set_location(resp, line); + } + if (strncasecmp(line, LAST_MODIFIED, strlen(LAST_MODIFIED)) == 0) { + response_set_last_modified(resp, line); + char *date; + size_t len = strlen(line); + if(my.cache){ + date = xmalloc(len); + memcpy(date, line+15, len-14); + cache_add(C->cache, C_LAST, U, date); + xfree(date); + } + } + if (strncasecmp(line, ETAG, strlen(ETAG)) == 0) { + char *etag; + size_t len = strlen(line); + if (my.cache) { + etag = (char *)xmalloc(len); + memset(etag, '\0', len); + memcpy(etag, line+6, len-5); + cache_add(C->cache, C_ETAG, U, etag); + xfree(etag); + } + } + if (strncasecmp(line, WWW_AUTHENTICATE, strlen(WWW_AUTHENTICATE)) == 0) { + response_set_www_authenticate(resp, line); + } + if (strncasecmp(line, PROXY_AUTHENTICATE, strlen(PROXY_AUTHENTICATE)) == 0) { + response_set_proxy_authenticate(resp, line); + } + if (strncasecmp(line, TRANSFER_ENCODING, strlen(TRANSFER_ENCODING)) == 0) { + response_set_transfer_encoding(resp, line); + } + if (strncasecmp(line, EXPIRES, strlen(EXPIRES)) == 0) { + char *expires; + size_t len = strlen(line); + if (my.cache) { + expires = (char *)xmalloc(len); + memset(expires, '\0', len); + memcpy(expires, line+9, len-8); + cache_add(C->cache, C_EXPIRES, U, expires); + xfree(expires); + } + } + if (strncasecmp(line, "cache-control: ", 15) == 0) { + /* printf("%s\n", line+15); */ + } + if (n <= 0) { + echo ("read error: %s:%d", __FILE__, __LINE__); + resp = response_destroy(resp); + return resp; + } /* socket closed */ + } /* end of while TRUE */ + + return resp; +} + +int +http_chunk_size(CONN *C) +{ + int n; + char *end; + size_t length; + + memset(C->chkbuf, '\0', sizeof(C->chkbuf)); + if ((n = socket_readline(C, C->chkbuf, sizeof(C->chkbuf))) < 1) { + NOTIFY(WARNING, "HTTP: unable to determine chunk size"); + return -1; + } + + if (((C->chkbuf[0] == '\n')||(strlen(C->chkbuf)==0)||(C->chkbuf[0] == '\r'))) { + return -1; + } + + errno = 0; + if (!isxdigit((unsigned)*C->chkbuf)) + return -1; + length = strtoul(C->chkbuf, &end, 16); + if ((errno == ERANGE) || (end == C->chkbuf)) { + NOTIFY(WARNING, "HTTP: invalid chunk line %s\n", C->chkbuf); + return 0; + } else { + return length; + } + return -1; +} + +ssize_t +http_read(CONN *C, RESPONSE resp) +{ + int n = 0; + int chunk = 0; + size_t bytes = 0; + size_t length = 0; + char dest[MAXFILE*6]; + char *ptr = NULL; + char *tmp = NULL; + size_t size = MAXFILE; + + if (C == NULL) { + NOTIFY(FATAL, "Connection is NULL! Unable to proceed"); + return 0; + } + + if (C->content.length == 0) //VL + return 0; + else if (C->content.length == (size_t)~0L) + C->content.length = 0; //not to break code below... + + memset(dest, '\0', sizeof dest); + + //pthread_mutex_lock(&__mutex); //VL - moved + + if (C->content.length > 0) { + length = C->content.length; + ptr = xmalloc(length+1); + memset(ptr, '\0', length+1); + do { + if ((n = socket_read(C, ptr, length)) == 0) { + break; + } + bytes += n; + } while (bytes < length); + } else if (my.chunked && response_get_transfer_encoding(resp) == CHUNKED) { + int r = 0; + bytes = 0; + BOOLEAN done = FALSE; + + ptr = xmalloc(size); + memset(ptr, '\0', size); + + do { + chunk = http_chunk_size(C); + if (chunk == 0){ + socket_readline(C, C->chkbuf, sizeof(C->chkbuf)); //VL - issue #3 + break; + } else if (chunk < 0) { + chunk = 0; + continue; + } + while (n < chunk) { + int remaining_in_chunk = chunk - n; + int space_in_buf = size - bytes; + int to_read = remaining_in_chunk < space_in_buf ? remaining_in_chunk : space_in_buf; + r = socket_read(C, &ptr[bytes], to_read); + bytes += r; + if (r <= 0) { + done = TRUE; + break; + } + n += r; + if (bytes >= size) { + tmp = realloc(ptr, size*2); + if (tmp == NULL) { + free(ptr); + return -1; + } + ptr = tmp; + size *= 2; + } + } + n = 0; + } while (! done); + ptr[bytes] = '\0'; + } else { + ptr = xmalloc(size); + memset(ptr, '\0', size); + do { + n = socket_read(C, ptr, size); + bytes += n; + if (n <= 0) { + break; + } + } while (TRUE); + } + + if (response_get_content_encoding(resp) == GZIP) { + __gzip_inflate(MAX_WBITS+32, ptr, bytes, dest, sizeof(dest)); + } + if (response_get_content_encoding(resp) == DEFLATE) { + __gzip_inflate(-MAX_WBITS, ptr, bytes, dest, sizeof(dest)); + } + if (strlen(dest) > 0) { + page_concat(C->page, dest, strlen(dest)); + } else { + page_concat(C->page, ptr, strlen(ptr)); + } + xfree(ptr); + echo ("\n"); + //pthread_mutex_unlock(&__mutex); + return bytes; +} + +private int +__gzip_inflate(int window, const char *src, int srcLen, const char *dst, int dstLen) +{ + int err=-1; + +#ifndef HAVE_ZLIB + NOTIFY(ERROR, + "gzip transfer-encoding requires zlib (%d, %d, %d)", window, srcLen, dstLen + ); + dst = strdup(src); + (void)(dst); // shut the compiler up.... + return err; +#else + z_stream strm; + int ret = -1; + strm.zalloc = Z_NULL; + strm.zfree = Z_NULL; + strm.opaque = Z_NULL; + strm.avail_in = srcLen; + strm.avail_out = dstLen; + strm.next_in = (Bytef *)src; + strm.next_out = (Bytef *)dst; + + err = inflateInit2(&strm, window); + if (err == Z_OK) { + err = inflate(&strm, Z_FINISH); + if (err == Z_STREAM_END){ + ret = strm.total_out; + } else { + inflateEnd(&strm); + return err; + } + } else { + inflateEnd(&strm); + return err; + } + inflateEnd(&strm); + return ret; +#endif/*HAVE_ZLIB*/ +} + diff --git a/siege-4.1.6/src/http.h b/siege-4.1.6/src/http.h new file mode 100644 index 0000000..83d13b2 --- /dev/null +++ b/siege-4.1.6/src/http.h @@ -0,0 +1,55 @@ +/** + * SIEGE http header file + * + * Copyright (C) 2000-2014 by Jeffrey Fulmer , et al + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef HTTP_H +#define HTTP_H + +#ifdef HAVE_CONFIG_H +# include +#endif /* HAVE_CONFIG_H */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef HAVE_SNPRINTF +# define portable_snprintf snprintf +# define portable_vsnprintf vsnprintf +#endif + +#define REQBUF 43008 +#define POSTBUF 63488 + +/* http function prototypes */ +BOOLEAN http_get (CONN *C, URL U); +BOOLEAN http_post(CONN *C, URL U); +RESPONSE http_read_headers(CONN *C, URL U); +ssize_t http_read(CONN *C, RESPONSE R); +BOOLEAN https_tunnel_request(CONN *C, char *host, int port); +int https_tunnel_response(CONN *C); + +#endif /* HTTP_H */ + diff --git a/siege-4.1.6/src/init.c b/siege-4.1.6/src/init.c new file mode 100644 index 0000000..d5195e9 --- /dev/null +++ b/siege-4.1.6/src/init.c @@ -0,0 +1,714 @@ +/** + * Siege environment initialization. + * + * Copyright (C) 2000-2015 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define LINESZ 1024 + +int +init_config( void ) +{ + char *e; + char dir[256]; + int res; + struct stat buf; + BOOLEAN needed = FALSE; + + /** + * Beginning with siege-3.1.4 the local configuration was + * moved to $HOME/.siege/siege.conf Let's configure ourselves + */ + memset(dir, '\0', sizeof(dir)); + snprintf(dir, sizeof(dir), "%s/.siege", getenv("HOME")); + if (stat(dir, &buf) < 0 && ENOENT == errno) { + needed = TRUE; + } else { + if (! S_ISDIR(buf.st_mode)) { + if (unlink(dir) == 0) needed = TRUE; + } + } + + /** + * We need to create a $HOME/.siege dir and configur ourselves. + * NOTE: We're going to assume siege.config is installed and in + * the PATH. If this is not the case, then blame the distributor + */ + while (needed) { + int ret; + + mkdir(dir, 0750); + ret = system("siege.config"); + if (WIFSIGNALED(ret) && (WTERMSIG(ret) == SIGINT || WTERMSIG(ret) == SIGQUIT)) + break; + needed = FALSE; + } + + /** + * Check if we were passed the -R switch to use a different siegerc file. + * If not, check for the presence of the SIEGERC variable, otherwise + * use default of ~/.siege/siege.conf + */ + if(strcmp(my.rc, "") == 0){ + if((e = getenv("SIEGERC")) != NULL){ + snprintf(my.rc, sizeof(my.rc), "%s", e); + } else { + snprintf(my.rc, sizeof(my.rc), "%s/.siege/siege.conf", getenv("HOME")); + if (stat(my.rc, &buf) < 0 && errno == ENOENT) { + snprintf(my.rc, sizeof(my.rc), CNF_FILE); + } + } + } + + my.debug = FALSE; + my.quiet = FALSE; + my.color = TRUE; + my.internet = FALSE; + my.config = FALSE; + my.csv = FALSE; + my.fullurl = FALSE; + my.escape = TRUE; + my.parser = FALSE; + my.secs = -1; + my.limit = 255; + my.reps = MAXREPS; + my.bids = 5; + my.login = FALSE; + my.failures = 1024; + my.failed = 0; + my.auth = new_auth(); + auth_set_proxy_required(my.auth, FALSE); + auth_set_proxy_port(my.auth, 3128); + my.timeout = 30; + my.timestamp = FALSE; + my.chunked = FALSE; + my.unique = TRUE; + my.json_output = FALSE; + my.extra[0] = 0; + my.follow = TRUE; + my.zero_ok = TRUE; + my.signaled = 0; + my.ssl_timeout = 300; + my.ssl_cert = NULL; + my.ssl_key = NULL; + my.ssl_ciphers = NULL; + my.lurl = new_array(); + my.cookies = new_cookies(); + my.nomap = xcalloc(1, sizeof(LINES)); + my.nomap->index = 0; + my.nomap->line = NULL; + + if ((res = pthread_mutex_init(&(my.lock), NULL)) != 0) + NOTIFY(FATAL, "unable to initiate lock"); + if ((res = pthread_cond_init(&(my.cond), NULL )) != 0) + NOTIFY(FATAL, "unable to initiate condition"); + + if (load_conf(my.rc) < 0) { + /** Beginning with siege-3.1.4 we should never get here (in theory) **/ + fprintf( stderr, "**************************************************\n" ); + fprintf( stderr, "siege: could not open %s\n", my.rc ); + fprintf( stderr, "run \'siege.config\' to generate a new config file\n" ); + fprintf( stderr, "**************************************************\n" ); + return -1; + } + + if (strlen(my.file) < 1) { + snprintf( + my.file, sizeof( my.file ), + "%s", URL_FILE + ); + } + + if (strlen(my.uagent) < 1) + snprintf( + my.uagent, sizeof(my.uagent), + "Mozilla/5.0 (%s) Siege/%s", PLATFORM, version_string + ); + + if (strlen(my.conttype) < 1) + snprintf( + my.conttype, sizeof(my.conttype), + "application/x-www-form-urlencoded" + ); + + if (strlen(my.encoding) < 1) + snprintf( + my.encoding, sizeof(my.encoding), "*" + ); + + if (strlen(my.logfile) < 1) + snprintf( + my.logfile, sizeof(my.logfile), + "%s", LOG_FILE + ); + return 0; +} + +int +show_config(int EXIT) +{ + char *method; + switch (my.method) { + case GET: + method = strdup("GET"); + break; + case HEAD: + default: + method = strdup("HEAD"); + break; + } + printf("CURRENT SIEGE CONFIGURATION\n"); + printf("%s\n", my.uagent); + printf("Edit the resource file to change the settings.\n"); + printf("----------------------------------------------\n"); + printf("version: %s\n", version_string); + printf("verbose: %s\n", my.verbose ? "true" : "false"); + printf("color: %s\n", my.color ? "true" : "false"); + printf("quiet: %s\n", my.quiet ? "true" : "false"); + printf("debug: %s\n", my.debug ? "true" : "false"); + printf("protocol: %s\n", my.protocol ? "HTTP/1.1" : "HTTP/1.0"); + printf("HTML parser: %s\n", my.parser ? "enabled" : "disabled"); + printf("get method: %s\n", method); + if (auth_get_proxy_required(my.auth)){ + printf("proxy-host: %s\n", auth_get_proxy_host(my.auth)); + printf("proxy-port: %d\n", auth_get_proxy_port(my.auth)); + } + printf("connection: %s\n", my.keepalive?"keep-alive":"close"); + printf("concurrent users: %d\n", my.cusers); + if (my.secs > 0) + printf( "time to run: %d seconds\n", my.secs); + else + printf( "time to run: n/a\n"); + if ((my.reps > 0) && (my.reps != MAXREPS)) + printf( "repetitions: %d\n", my.reps); + else + printf("repetitions: n/a\n" ); + printf("socket timeout: %d\n", my.timeout); + printf("cache enabled: %s\n", my.cache==TRUE ? "true" : "false"); + printf("accept-encoding: %s\n", my.encoding); + printf("delay: %.3f sec%s\n", my.delay, (my.delay > 1) ? "s" : ""); + printf("internet simulation: %s\n", my.internet?"true":"false"); + printf("benchmark mode: %s\n", my.bench?"true":"false"); + printf("failures until abort: %d\n", my.failures); + printf("named URL: %s\n", my.url==NULL||strlen(my.url) < 2 ? "none" : my.url); + printf("URLs file: %s\n", strlen(my.file) > 1 ? my.file : URL_FILE); + printf("thread limit: %d\n", (my.limit < 1) ? 255 : my.limit); + printf("logging: %s\n", my.logging ? "true" : "false"); + printf("log file: %s\n", (my.logfile == NULL) ? LOG_FILE : my.logfile); + printf("resource file: %s\n", my.rc); + printf("timestamped output: %s\n", my.timestamp?"true":"false"); + printf("comma separated output: %s\n", my.csv?"true":"false"); + printf("allow redirects: %s\n", my.follow?"true":"false"); + printf("allow zero byte data: %s\n", my.zero_ok?"true":"false"); + printf("allow chunked encoding: %s\n", my.chunked?"true":"false"); + printf("upload unique files: %s\n", my.unique?"true":"false"); + printf("json output: %s\n", my.json_output?"true":"false"); + if (my.parser == TRUE && my.nomap->index > 0) { + int i; + printf("no-follow:\n"); + for (i = 0; i < my.nomap->index; i++) { + printf(" - %s\n", my.nomap->line[i]); + } + } + printf("proxy auth: " ); auth_display(my.auth, PROXY);printf("\n"); + printf("www auth: " ); auth_display(my.auth, HTTP); + printf("\n"); + + xfree(method); + my.auth = auth_destroy(my.auth); + my.lurl = array_destroy(my.lurl); + my.cookies = cookies_destroy(my.cookies); + + if (EXIT) exit(0); + else return 0; +} + +int +readline(char **s, FILE *fp) +{ + int c; + int i; + int len = 0; + int size = 0; + char *tmp = NULL; + char *ptr = NULL; + char *txt = NULL; + BOOLEAN lop = TRUE; + + ptr = xmalloc(LINESZ); + size = LINESZ; + + while ((c = fgetc(fp))!=EOF && c!='\n') { + if (len >= size) { + // the buffer is full - extend it + tmp = realloc(ptr, size + LINESZ); + if (tmp == NULL) { + free(ptr); + return -1; + } + ptr = tmp; + size += LINESZ; + } + ptr[len++] = (char)c; + } + if (len == 0) { + if (c == EOF) { /* empty file or read error */ + free(ptr); + return -1; + } else { /* empty line */ + ptr[0] = '\0'; + *s = ptr; + return 0; + } + } + + if (len+1 != size) { /* no room for '\0' */ + tmp = realloc(ptr, len+1); + if (tmp == NULL) { + free(ptr); + return -1; + } + ptr = tmp; + } + ptr[len] = '\0'; + + /** + * This condition is a band-aid. Some passwords + * contain '#' which are treated like comments in + * the siege.conf file. So if a line begins with + * login, we won't treat '#' as a comment. If lop + * is FALSE, we won't null out the line. + */ + txt = strdup(ptr); + trim(txt); + if (strncmp(txt, "login", 5) == 0) { + lop = FALSE; + } + xfree(txt); + for (i = 0; ptr[i] != '\0'; i++) { + if (ptr[i] == '#' && lop == TRUE) { + ptr[i] = '\0'; + } + } + *s = ptr; + + return len; +} + +int +load_conf(char *filename) +{ + FILE *fp; + HASH H; + char *line; + char *option; + char *optionptr; + char *value; +#ifdef HAVE_ZLIB + BOOLEAN zlib = TRUE; +#else + BOOLEAN zlib = FALSE; +#endif/*HAVE_ZLIB*/ + + if ((fp = fopen(filename, "r")) == NULL) { + return -1; + } + + H = new_hash(); + + while (readline(&line, fp) != -1) { + char *tmp = line; + line = trim(line); + if (*line == '#' || *line == '\0' || strlen(line) < 1) { + free(line); + continue; + } + + optionptr = option = xstrdup(line); + while (*optionptr && !ISSPACE((int)*optionptr) && !ISSEPARATOR(*optionptr)) { + optionptr++; + } + *optionptr++='\0'; + + while (ISSPACE((int)*optionptr) || ISSEPARATOR(*optionptr)) { + optionptr++; + } + value = xstrdup(optionptr); + while (*line) + line++; + while (strstr(option, "$")) { + option = evaluate(H, option); + } + while (strstr(value, "$")){ + value = evaluate(H, value); + } + if (strmatch(option, "verbose")) { + if (!strncasecmp(value, "true", 4)) + my.verbose = TRUE; + else + my.verbose = FALSE; + } + else if (strmatch(option, "color")) { + if (strmatch(value, "false") || strmatch(value, "off")) + my.color = FALSE; + else + my.color = TRUE; + } + else if (strmatch(option, "quiet")) { + if (!strncasecmp(value, "true", 4)) + my.quiet = TRUE; + else + my.quiet = FALSE; + } + else if (strmatch(option, "parser")) { + if (!strncasecmp(value, "true", 4)) + my.parser = TRUE; + else + my.parser = FALSE; + } + else if (strmatch(option, "nofollow")) { + if (value && strlen(value) > 3) { + my.nomap->line = (char**)realloc(my.nomap->line, sizeof(char *) * (my.nomap->index + 1)); + my.nomap->line[my.nomap->index] = (char *)strdup(value); + my.nomap->index++; + } + } + else if (strmatch(option, "csv")) { + if (!strncasecmp(value, "true", 4)) + my.csv = TRUE; + else + my.csv = FALSE; + } + else if (strmatch(option, "fullurl")) { + if (!strncasecmp(value, "true", 4)) + my.fullurl = TRUE; + else + my.fullurl = FALSE; + } + else if (strmatch(option, "display-id")) { + if (!strncasecmp(value, "true", 4)) + my.display = TRUE; + else + my.display = FALSE; + } + else if (strmatch( option, "logging")) { + if (!strncasecmp( value, "true", 4)) + my.logging = TRUE; + else + my.logging = FALSE; + } + else if (strmatch(option, "show-logfile")) { + if (!strncasecmp(value, "true", 4)) + my.shlog = TRUE; + else + my.shlog = FALSE; + } + else if (strmatch(option, "logfile")) { + xstrncpy(my.logfile, value, sizeof(my.logfile)); + } + else if (strmatch(option, "concurrent")) { + if (value != NULL) { + my.cusers = atoi(value); + } else { + my.cusers = 10; + } + } + else if (strmatch(option, "reps")) { + if (value != NULL) { + my.reps = atoi(value); + } else { + my.reps = 5; + } + } + else if (strmatch(option, "limit")) { + if (value != NULL) { + my.limit = atoi(value); + } else { + my.limit = 255; + } + } + else if (strmatch(option, "time")) { + parse_time(value); + } + else if (strmatch(option, "delay")) { + if (value != NULL) { + my.delay = atof(value); + } else { + my.delay = 1; + } + } + else if (strmatch(option, "timeout")) { + if (value != NULL) { + my.timeout = atoi(value); + } else { + my.timeout = 15; + } + } + else if (strmatch(option, "timestamp")) { + if (!strncasecmp(value, "true", 4)) + my.timestamp = TRUE; + else + my.timestamp = FALSE; + } + else if (strmatch(option, "internet")) { + if (!strncasecmp(value, "true", 4)) + my.internet = TRUE; + else + my.internet = FALSE; + } + else if (strmatch(option, "benchmark")) { + if (!strncasecmp(value, "true", 4)) + my.bench = TRUE; + else + my.bench = FALSE; + } + else if (strmatch(option, "cache")) { + if (!strncasecmp(value, "true", 4)) + my.cache = TRUE; + else + my.cache = FALSE; + } + else if (strmatch( option, "debug")) { + if (!strncasecmp( value, "true", 4)) + my.debug = TRUE; + else + my.debug = FALSE; + } + else if (strmatch(option, "gmethod")) { + if (strmatch(value, "GET")) { + my.method = GET; + } else { + my.method = HEAD; + } + } + else if (strmatch(option, "file")) { + xstrncpy(my.file, value, sizeof(my.file)); + } + else if (strmatch(option, "url")) { + my.url = stralloc(value); + } + else if (strmatch(option, "user-agent")) { + xstrncpy(my.uagent, value, sizeof(my.uagent)); + } + else if (strmatch(option, "accept-encoding")) { + BOOLEAN compress = FALSE; + if ((strstr(value, "gzip") != NULL)||(strstr(value, "compress") != NULL)) { + compress = TRUE; + } + if (compress == TRUE && zlib == FALSE) { + NOTIFY(WARNING, "Zip encoding disabled; siege requires zlib support to enable it"); + } else { + xstrncpy(my.encoding, value, sizeof(my.encoding)); + } + } + #if 1 + else if (!strncasecmp(option, "login", 5)) { + if(strmatch(option, "login-url")){ + my.login = TRUE; + array_push(my.lurl, value); + } else { + /* user login info */ + auth_add(my.auth, new_creds(HTTP, value)); + } + } + #endif + else if (strmatch(option, "attempts")) { + if (value != NULL) { + my.bids = atoi(value); + } else { + my.bids = 3; + } + } + else if (strmatch(option, "connection")) { + if (!strncasecmp(value, "keep-alive", 10)) + my.keepalive = TRUE; + else + my.keepalive = FALSE; + } + else if (strmatch(option, "protocol")) { + if (!strncasecmp(value, "HTTP/1.1", 8)) + my.protocol = TRUE; + else + my.protocol = FALSE; + } + else if (strmatch(option, "proxy-host")) { + auth_set_proxy_host(my.auth, trim(value)); + } + else if (strmatch(option, "proxy-port")) { + if (value != NULL) { + auth_set_proxy_port(my.auth, atoi(value)); + } else { + auth_set_proxy_port(my.auth, 3128); + } + } + else if (strmatch(option, "ftp-login")) { + auth_add(my.auth, new_creds(FTP, value)); + } + else if (strmatch(option, "proxy-login")) { + auth_add(my.auth, new_creds(PROXY, value)); + } + else if (strmatch(option, "failures")) { + if (value != NULL) { + my.failures = atoi(value); + } else { + my.failures = 30; + } + } + else if (strmatch(option, "chunked")) { + if (!strncasecmp(value, "true", 4)) + my.chunked = TRUE; + else + my.chunked = FALSE; + } + else if (strmatch(option, "unique")) { + if (!strncasecmp(value, "true", 4)) + my.unique = TRUE; + else + my.unique = FALSE; + } + else if (strmatch(option, "json_output")) { + if (!strncasecmp(value, "true", 4)) + my.json_output = TRUE; + else + my.json_output = FALSE; + } + else if (strmatch(option, "header")) { + if (!strchr(value,':')) NOTIFY(FATAL, "no ':' in http-header"); + if ((strlen(value) + strlen(my.extra) + 3) > 512) NOTIFY(FATAL, "too many headers"); + strcat(my.extra,value); + strcat(my.extra,"\015\012"); + } + else if (strmatch(option, "expire-session")) { + if (!strncasecmp(value, "true", 4 )) + my.expire = TRUE; + else + my.expire = FALSE; + } + else if (strmatch(option, "follow-location")) { + if (!strncasecmp(value, "true", 4)) + my.follow = TRUE; + else + my.follow = FALSE; + } + else if (strmatch(option, "url-escaping")) { + if (!strncasecmp(value, "false", 5)) + my.escape = FALSE; + else + my.escape = TRUE; + } + else if (strmatch(option, "zero-data-ok")) { + if (!strncasecmp(value, "true", 4)) + my.zero_ok = TRUE; + else + my.zero_ok = FALSE; + } + else if (strmatch(option, "ssl-cert")) { + my.ssl_cert = stralloc(value); + } + else if (strmatch(option, "ssl-key")) { + my.ssl_key = stralloc(value); + } + else if (strmatch(option, "ssl-timeout")) { + if (value != NULL) { + my.ssl_timeout = atoi(value); + } else { + my.ssl_timeout = 15; + } + } + else if (strmatch(option, "ssl-ciphers")) { + my.ssl_ciphers = stralloc(value); + } + else if (strmatch(option, "spinner")) { + if (!strncasecmp(value, "true", 4)) + my.spinner = TRUE; + else + my.spinner = FALSE; + } else { + hash_add(H, option, value); + } + xfree(tmp); + xfree(value); + xfree(option); + } + H = hash_destroy(H); + fclose(fp); + return 0; +} + +/** + * don't be insulted, the author is the DS Module ;-) + */ +void +ds_module_check(void) +{ + if (my.bench) { +#if defined(hpux) || defined(__hpux) + my.delay = 1; +#else + my.delay = 0; +#endif + } + + if (my.secs > 0 && ((my.reps > 0) && (my.reps != MAXREPS))) { + NOTIFY(ERROR, "CONFIG conflict: selected time and repetition based testing" ); + fprintf( stderr, "defaulting to time-based testing: %d seconds\n", my.secs ); + my.reps = MAXREPS; + } + + if (my.cusers <= 0) { /* set concurrency to 1 */ + my.cusers = 1; /* if not defined */ + } + + if (my.get) { + my.cusers = 1; + my.reps = 1; + my.logging = FALSE; + my.bench = TRUE; + } + + if (my.json_output) { + my.quiet = TRUE; + } + + if (my.quiet) { + my.verbose = FALSE; // Why would you set quiet and verbose??? + my.debug = FALSE; // why would you set quiet and debug????? + } +} + diff --git a/siege-4.1.6/src/init.h b/siege-4.1.6/src/init.h new file mode 100644 index 0000000..715efcb --- /dev/null +++ b/siege-4.1.6/src/init.h @@ -0,0 +1,31 @@ +/** + * Siege environment initialization. + * + * Copyright (C) 2000-2014 by + * Jeffrey Fulmer - , et al + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#ifndef INIT_H +#define INIT_H +#include + +int init_config( void ); +int show_config( int EXIT ); +int load_conf( char *filename ); +void ds_module_check(); + +#endif/*INIT_H*/ diff --git a/siege-4.1.6/src/load.c b/siege-4.1.6/src/load.c new file mode 100644 index 0000000..251eecb --- /dev/null +++ b/siege-4.1.6/src/load.c @@ -0,0 +1,373 @@ +/** + * Load Post Data + * + * Copyright (C) 2002-2016 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * -- + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct ContentType { + char *ext; + BOOLEAN ascii; + char *type; +}; + +static const struct ContentType tmap[] = { + {"default", TRUE, "application/x-www-form-urlencoded"}, + {"ai", FALSE, "application/postscript"}, + {"aif", FALSE, "audio/x-aiff"}, + {"aifc", FALSE, "audio/x-aiff"}, + {"aiff", FALSE, "audio/x-aiff"}, + {"asc", TRUE, "text/plain"}, + {"au", FALSE, "audio/basic"}, + {"avi", FALSE, "video/x-msvideo"}, + {"bcpio", FALSE, "application/x-bcpio"}, + {"bin", FALSE, "application/octet-stream"}, + {"c", TRUE, "text/plain"}, + {"cc", TRUE, "text/plain"}, + {"ccad", FALSE, "application/clariscad"}, + {"cdf", FALSE, "application/x-netcdf"}, + {"class", FALSE, "application/octet-stream"}, + {"cpio", FALSE, "application/x-cpio"}, + {"cpt", FALSE, "application/mac-compactpro"}, + {"csh", FALSE, "application/x-csh"}, + {"css", TRUE, "text/css"}, + {"csv", TRUE, "text/csv"}, + {"dcr", FALSE, "application/x-director"}, + {"dir", FALSE, "application/x-director"}, + {"dms", FALSE, "application/octet-stream"}, + {"doc", FALSE, "application/msword"}, + {"drw", FALSE, "application/drafting"}, + {"dvi", FALSE, "application/x-dvi"}, + {"dwg", FALSE, "application/acad"}, + {"dxf", FALSE, "application/dxf"}, + {"dxr", FALSE, "application/x-director"}, + {"eps", FALSE, "application/postscript"}, + {"etx", TRUE, "text/x-setext"}, + {"exe", FALSE, "application/octet-stream"}, + {"ez", FALSE, "application/andrew-inset"}, + {"f", TRUE, "text/plain"}, + {"f90", TRUE, "text/plain"}, + {"fli", FALSE, "video/x-fli"}, + {"gif", FALSE, "image/gif"}, + {"gtar", FALSE, "application/x-gtar"}, + {"gz", FALSE, "application/x-gzip"}, + {"h", TRUE, "text/plain"}, + {"hdf", FALSE, "application/x-hdf"}, + {"hh", TRUE, "text/plain"}, + {"hqx", FALSE, "application/mac-binhex40"}, + {"htm", TRUE, "text/html"}, + {"html", TRUE, "text/html"}, + {"ice", FALSE, "x-conference/x-cooltalk"}, + {"ico", FALSE, "image/x-icon"}, + {"ief", FALSE, "image/ief"}, + {"iges", FALSE, "model/iges"}, + {"igs", FALSE, "model/iges"}, + {"ips", FALSE, "application/x-ipscript"}, + {"ipx", FALSE, "application/x-ipix"}, + {"jpe", FALSE, "image/jpeg"}, + {"jpeg", FALSE, "image/jpeg"}, + {"jpg", FALSE, "image/jpeg"}, + {"js", FALSE, "application/x-javascript"}, + {"json", FALSE, "application/json"}, + {"kar", FALSE, "audio/midi"}, + {"latex", FALSE, "application/x-latex"}, + {"lha", FALSE, "application/octet-stream"}, + {"lsp", FALSE, "application/x-lisp"}, + {"lzh", FALSE, "application/octet-stream"}, + {"m", TRUE, "text/plain"}, + {"man", FALSE, "application/x-troff-man"}, + {"md", TRUE, "text/x-markdown"}, + {"me", FALSE, "application/x-troff-me"}, + {"mesh", FALSE, "model/mesh"}, + {"mid", FALSE, "audio/midi"}, + {"midi", FALSE, "audio/midi"}, + {"mif", FALSE, "application/vnd.mif"}, + {"mime", FALSE, "www/mime"}, + {"mov", FALSE, "video/quicktime"}, + {"movie", FALSE, "video/x-sgi-movie"}, + {"mp2", FALSE, "audio/mpeg"}, + {"mp3", FALSE, "audio/mpeg"}, + {"mpe", FALSE, "video/mpeg"}, + {"mpeg", FALSE, "video/mpeg"}, + {"mpg", FALSE, "video/mpeg"}, + {"mpga", FALSE, "audio/mpeg"}, + {"ms", FALSE, "application/x-troff-ms"}, + {"msh", FALSE, "model/mesh"}, + {"nc", FALSE, "application/x-netcdf"}, + {"oda", FALSE, "application/oda"}, + {"pbm", FALSE, "image/x-portable-bitmap"}, + {"pdb", FALSE, "chemical/x-pdb"}, + {"pdf", FALSE, "application/pdf"}, + {"pgm", FALSE, "image/x-portable-graymap"}, + {"pgn", FALSE, "application/x-chess-pgn"}, + {"png", FALSE, "image/png"}, + {"pnm", FALSE, "image/x-portable-anymap"}, + {"pot", FALSE, "application/mspowerpoint"}, + {"ppm", FALSE, "image/x-portable-pixmap"}, + {"pps", FALSE, "application/mspowerpoint"}, + {"ppt", FALSE, "application/mspowerpoint"}, + {"ppz", FALSE, "application/mspowerpoint"}, + {"pre", FALSE, "application/x-freelance"}, + {"proto", FALSE, "application/x-protobuf"}, + {"prt", FALSE, "application/pro_eng"}, + {"ps", FALSE, "application/postscript"}, + {"qt", FALSE, "video/quicktime"}, + {"ra", FALSE, "audio/x-realaudio"}, + {"ram", FALSE, "audio/x-pn-realaudio"}, + {"ras", FALSE, "image/cmu-raster"}, + {"rgb", FALSE, "image/x-rgb"}, + {"rm", FALSE, "audio/x-pn-realaudio"}, + {"roff", FALSE, "application/x-troff"}, + {"rpm", FALSE, "audio/x-pn-realaudio-plugin"}, + {"rtf", FALSE, "text/rtf"}, + {"rtx", FALSE, "text/richtext"}, + {"scm", FALSE, "application/x-lotusscreencam"}, + {"set", FALSE, "application/set"}, + {"sgm", TRUE, "text/sgml"}, + {"sgml", TRUE, "text/sgml"}, + {"sh", FALSE, "application/x-sh"}, + {"shar", FALSE, "application/x-shar"}, + {"silo", FALSE, "model/mesh"}, + {"sit", FALSE, "application/x-stuffit"}, + {"skd", FALSE, "application/x-koan"}, + {"skm", FALSE, "application/x-koan"}, + {"skp", FALSE, "application/x-koan"}, + {"skt", FALSE, "application/x-koan"}, + {"smi", FALSE, "application/smil"}, + {"smil", FALSE, "application/smil"}, + {"snd", FALSE, "audio/basic"}, + {"sol", FALSE, "application/solids"}, + {"spl", FALSE, "application/x-futuresplash"}, + {"src", FALSE, "application/x-wais-source"}, + {"step", FALSE, "application/STEP"}, + {"stl", FALSE, "application/SLA"}, + {"stp", FALSE, "application/STEP"}, + {"sv4cpio", FALSE, "application/x-sv4cpio"}, + {"sv4crc", FALSE, "application/x-sv4crc"}, + {"svg", TRUE, "image/svg+xml"}, + {"swf", FALSE, "application/x-shockwave-flash"}, + {"t", FALSE, "application/x-troff"}, + {"tar", FALSE, "application/x-tar"}, + {"tcl", FALSE, "application/x-tcl"}, + {"tex", FALSE, "application/x-tex"}, + {"texi", FALSE, "application/x-texinfo"}, + {"texinfo", FALSE, "application/x-texinfo"}, + {"tif", FALSE, "image/tiff"}, + {"tiff", FALSE, "image/tiff"}, + {"tr", FALSE, "application/x-troff"}, + {"tsi", FALSE, "audio/TSP-audio"}, + {"tsp", FALSE, "application/dsptype"}, + {"tsv", TRUE, "text/tab-separated-values"}, + {"txt", TRUE, "text/plain"}, + {"unv", FALSE, "application/i-deas"}, + {"ustar", FALSE, "application/x-ustar"}, + {"vcd", FALSE, "application/x-cdlink"}, + {"vda", FALSE, "application/vda"}, + {"viv", FALSE, "video/vnd.vivo"}, + {"vivo", FALSE, "video/vnd.vivo"}, + {"vrml", FALSE, "model/vrml"}, + {"wav", FALSE, "audio/x-wav"}, + {"wrl", FALSE, "model/vrml"}, + {"xbm", FALSE, "image/x-xbitmap"}, + {"xlc", FALSE, "application/vnd.ms-excel"}, + {"xll", FALSE, "application/vnd.ms-excel"}, + {"xlm", FALSE, "application/vnd.ms-excel"}, + {"xls", FALSE, "application/vnd.ms-excel"}, + {"xlw", FALSE, "application/vnd.ms-excel"}, + {"xml", TRUE, "text/xml"}, + {"xpm", FALSE, "image/x-xpixmap"}, + {"xwd", FALSE, "image/x-xwindowdump"}, + {"xyz", FALSE, "chemical/x-pdb"}, + {"yml", TRUE, "application/x-yaml"}, + {"zip", FALSE, "application/zip"} +}; + +char * +get_file_extension(char *file) +{ + char *dot = strrchr(file, '.'); + if (!dot || dot == file) + return ""; + return dot + 1; +} + +char * +get_content_type(char *file) +{ + int i; + char *ext; + + ext = get_file_extension(file); + for (i=0; i < (int)sizeof(tmap) / (int)sizeof(tmap[0]); i++) { + if (strmatch(ext, tmap[i].ext)) { + return tmap[i].type; + } + } + return tmap[0].type; +} + +BOOLEAN +is_ascii(char *file) +{ + int i; + char *ext; + + ext = get_file_extension(file); + for (i=0; i < (int)sizeof(tmap) / (int)sizeof(tmap[0]); i++) { + if (strmatch(ext, tmap[i].ext)) { + return tmap[i].ascii; + } + } + return tmap[0].ascii; +} + +/** + * maps a file to our address space + * and returns it the calling function. + */ +void +load_file(URL U, char *file) +{ + FILE *fp; + size_t len; + char *buf; + char *filename; + char mode[8]; + + filename = trim(file); + + memset(mode, '\0', sizeof(mode)); + snprintf(mode, sizeof(mode), "%s", (is_ascii(filename))?"r":"rb"); + fp = fopen(filename, mode); + if (! fp) { + NOTIFY(ERROR, "unable to open file: %s", filename ); + return; + } + + fseek(fp, 0, SEEK_END); + len = ftell(fp); + fseek(fp, 0, SEEK_SET); + buf = (char *)xmalloc(len+1); + + if ((fread(buf, 1, len, fp )) == len) { + if (is_ascii(filename)) { + buf[len] = '\0'; + trim(buf); + len = strlen(buf); + } + } else { + NOTIFY(ERROR, "unable to read file: %s", filename ); + } + fclose(fp); + + if (len > 0) { + if (! empty(my.conttype)) { + // We're overriding the content-type at the cmd line + url_set_conttype(U, my.conttype); + } else { + url_set_conttype(U, get_content_type(filename)); + } + url_set_postdata(U, buf, len); + } + + xfree(buf); + return; +} + +void +write_file(URL U, char *buf, size_t len) +{ + FILE *fp; + char mode[8]; + + memset(mode, '\0', sizeof(mode)); + snprintf(mode, sizeof(mode), "%s", (url_get_file(U))?"w":"wb"); + fp = fopen(url_get_file(U), mode); + + if (fp) { + fwrite(buf, len, 1, fp); + } else { + NOTIFY(ERROR, "unable to write to file"); + } + + fclose(fp); +} + +#if 0 +void +load_file(URL U, char *file) +{ + FILE *fp; + size_t len = 0; + struct stat st; + char *filename; + char postdata[POSTBUF]; + size_t postlen = 0; + + filename = trim(file); + memset(postdata, 0, POSTBUF); + + if ((lstat(filename, &st) == 0) || (errno != ENOENT)) { + len = (st.st_size >= POSTBUF) ? POSTBUF : st.st_size; + if (len < (unsigned)st.st_size) { + NOTIFY(WARNING, "Truncated file: %s exceeds the post limit of %d bytes.\n", filename, POSTBUF); + } + if ((fp = fopen(filename, "r")) == NULL) { + NOTIFY(ERROR, "could not open file: %s", filename); + return; + } + if ((fread(postdata, 1, len, fp )) == len) { + if (is_ascii(filename)) { + trim(postdata); + postlen = strlen(postdata); + } else { + postlen = len; + } + } else { + NOTIFY(ERROR, "unable to read file: %s", filename ); + } + fclose(fp); + } + + if (strlen(postdata) > 0) { + url_set_conttype(U, get_content_type(filename)); + url_set_postdata(U, postdata, postlen); + } + return; +} +#endif + + + diff --git a/siege-4.1.6/src/load.h b/siege-4.1.6/src/load.h new file mode 100644 index 0000000..9617602 --- /dev/null +++ b/siege-4.1.6/src/load.h @@ -0,0 +1,32 @@ +/** + * Load Post Data + * + * Copyright (C) 2002-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef LOAD_H +#define LOAD_H +#include + +void load_file (URL U, char *filename); +void write_file(URL U, char *buf, size_t len); + + +#endif/*LOAD_H*/ + diff --git a/siege-4.1.6/src/log.c b/siege-4.1.6/src/log.c new file mode 100644 index 0000000..5cb3aaa --- /dev/null +++ b/siege-4.1.6/src/log.c @@ -0,0 +1,225 @@ +/** + * Transacation logging support + * + * Copyright (C) 2000-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#include +#include +#include +#include +#include +#include + +/** + * writes the output from siege to a formatted + * log file. checks if the log exists, if not + * it creates a new formatted file and appends + * text to it. If a file does exist, then it + * simply appends to it. + */ +void +log_transaction(DATA D) +{ + write_to_log( + data_get_count(D), + data_get_elapsed(D), + data_get_megabytes(D), + data_get_total(D), + data_get_code(D), + my.failed + ); + return; +} + +void +write_to_log(int count, float elapsed, int bytes, float ttime, int code, int failed) +{ + int fd; + char entry[512]; +#ifdef HAVE_LOCALTIME_R + struct tm keepsake; +#endif/*HAVE_LOCALTIME_R*/ + struct tm *tmp; + time_t now; + size_t len = 0; + char date[65]; + + now = time(NULL); +#ifdef HAVE_LOCALTIME_R + tmp = (struct tm *)localtime_r(&now, &keepsake); +#else + tmp = localtime(&now); +#endif/*HAVE_LOCALTIME_R*/ + + setlocale(LC_TIME, "C"); + len = strftime(date, sizeof date, "%Y-%m-%d %H:%M:%S", tmp); + + if (my.shlog) { + fprintf(stderr, "LOG FILE: %s\n", my.logfile ); + fprintf(stderr, "You can disable this log file notification by editing\n"); + fprintf(stderr, "%s/.siege/siege.conf ", getenv("HOME")); + fprintf(stderr, "and changing \'show-logfile\' to false.\n"); + } + + /* if the file does NOT exist then we'll create it. */ + if (!file_exists(my.logfile)) { + if (!create_logfile(my.logfile)) { + NOTIFY(ERROR, "unable to create log file: %s", my.logfile); + return; + } + } + + /* create the log file entry with function params. */ + snprintf( + entry, sizeof entry, + "%s,%7d,%11.2f,%12u,%11.2f,%12.2f,%12.2f,%12.2f,%8d,%8d\n", + date, count, elapsed, bytes, ttime / count, count / elapsed, bytes / elapsed, + ttime / elapsed, code, failed + ); + + /* open the log and write to file */ + if ((fd = open(my.logfile, O_WRONLY | O_APPEND, 0644)) < 0) { + NOTIFY(ERROR, "Unable to open file: %s", my.logfile); + return; + } + + len = write(fd, entry, strlen(entry)); + if (len == (unsigned int)-1) { + switch (errno) { + case EBADF: + NOTIFY(ERROR, "Unable to write to log file (bad file descriptor): %s", my.logfile); + break; + case EINTR: + NOTIFY(ERROR, "Unable to write to log file (system interrupt): %s", my.logfile); + break; + default: + NOTIFY(ERROR, "Unable to write to log file (unknown error): %s", my.logfile); + break; + } + } + close(fd); + return; +} + +/* marks the siege.log with a user defined + message. checks for the existence of a + log and creates one if not found. */ +void +mark_log_file(char *message) +{ + int fd; + size_t len; + char entry[512]; + + /* if the file does NOT exist then create it. */ + if (!file_exists(my.logfile)) { + if (!create_logfile(my.logfile)) { + NOTIFY(ERROR, "unable to create log file: %s", my.logfile); + return; + } + } + + /* create the log file entry */ + snprintf(entry, sizeof entry, "**** %s ****\n", message); + + if ((fd = open( my.logfile, O_WRONLY | O_APPEND, 0644 )) < 0) { + NOTIFY(ERROR, "Unable to write to file: %s", my.logfile); + } + + len = write(fd, entry, strlen(entry)); + if (len == (unsigned int)-1) { + switch (errno) { + case EBADF: + NOTIFY(ERROR, "Unable to mark log file (bad file descriptor): %s", my.logfile); + break; + case EINTR: + NOTIFY(ERROR, "Unable to mark log file (system interrupt): %s", my.logfile); + break; + default: + NOTIFY(ERROR, "Unable to mark log file (unknown error): %s", my.logfile); + break; + } + } + close(fd); + return; +} + +/** + * returns TRUE if the file exists, + */ +BOOLEAN +file_exists(char *file) +{ + int fd; + + /* open the file read only */ + if((fd = open(file, O_RDONLY)) < 0){ + /* the file does NOT exist */ + close(fd); + return FALSE; + } else { + /* party on Garth... */ + close(fd); + return TRUE; + } + + return FALSE; +} + +/** + * return TRUE upon the successful + * creation of the file, FALSE if not. The + * function adds a header at the top of the + * file, format is comma separated text for + * spreadsheet import. + */ +BOOLEAN +create_logfile(const char *file) +{ + int fd; + size_t len = 0; + BOOLEAN ret = TRUE; + char *head = (char*)" Date & Time, Trans, Elap Time, Data Trans, " + "Resp Time, Trans Rate, Throughput, Concurrent, OKAY, Failed\n"; + + if ((fd = open(file, O_CREAT | O_WRONLY, 0644)) < 0) { + return FALSE; + } + + /* write the header to the file */ + len = write(fd, head, strlen(head)); + if (len == (unsigned int)-1) { + ret = FALSE; + switch (errno) { + case EBADF: + NOTIFY(ERROR, "Unable to create log file (bad file descriptor): %s", my.logfile); + break; + case EINTR: + NOTIFY(ERROR, "Unable to create log file (system interrupt): %s", my.logfile); + break; + default: + NOTIFY(ERROR, "Unable to create log file (unknown error): %s", my.logfile); + break; + } + } + close(fd); + return ret; +} + diff --git a/siege-4.1.6/src/log.h b/siege-4.1.6/src/log.h new file mode 100644 index 0000000..f732825 --- /dev/null +++ b/siege-4.1.6/src/log.h @@ -0,0 +1,35 @@ +/** + * Log file support + * + * Copyright (C) 2000-2013 by + * Jeffrey Fulmer - + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * -- + */ +#ifndef LOG_H +#define LOG_H +#include +#include + +void log_transaction(DATA D); +void write_to_log(int count, float elapsed, int bytes, float ttime, int code, int failed); +void mark_log_file(char *message); +BOOLEAN file_exists(char *file); +BOOLEAN create_logfile(const char *file); + +#endif/*LOG_H*/ + diff --git a/siege-4.1.6/src/main.c b/siege-4.1.6/src/main.c new file mode 100644 index 0000000..692c35b --- /dev/null +++ b/siege-4.1.6/src/main.c @@ -0,0 +1,614 @@ +/** + * Siege, http regression tester / benchmark utility + * + * Copyright (C) 2000-2015 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#define INTERN 1 + +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#ifdef HAVE_PTHREAD_H +# include +#endif/*HAVE_PTHREAD_H*/ + +/*LOCAL HEADERS*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef __CYGWIN__ +# include +#else +# include +#endif + +/** + * long options, std options struct + */ +static struct option long_options[] = +{ + { "version", no_argument, NULL, 'V' }, + { "help", no_argument, NULL, 'h' }, + { "verbose", no_argument, NULL, 'v' }, + { "quiet", no_argument, NULL, 'q' }, + { "config", no_argument, NULL, 'C' }, + { "debug", no_argument, NULL, 'D' }, + { "get", no_argument, NULL, 'g' }, + { "print", no_argument, NULL, 'p' }, + { "concurrent", required_argument, NULL, 'c' }, + { "no-parser", no_argument, NULL, 'N' }, + { "no-follow", no_argument, NULL, 'F' }, + { "internet", no_argument, NULL, 'i' }, + { "benchmark", no_argument, NULL, 'b' }, + { "reps", required_argument, NULL, 'r' }, + { "time", required_argument, NULL, 't' }, + { "delay", required_argument, NULL, 'd' }, + { "log", optional_argument, NULL, 'l' }, + { "file", required_argument, NULL, 'f' }, + { "rc", required_argument, NULL, 'R' }, + { "mark", required_argument, NULL, 'm' }, + { "header", required_argument, NULL, 'H' }, + { "user-agent", required_argument, NULL, 'A' }, + { "content-type", required_argument, NULL, 'T' }, + { "json-output", no_argument, NULL, 'j' }, + {0, 0, 0, 0} +}; + +/** + * display_version + * displays the version number and exits on boolean false. + * continue running? TRUE=yes, FALSE=no + * return void + */ + +void +display_version(BOOLEAN b) +{ + /** + * version_string is defined in version.c + * adding it to a separate file allows us + * to parse it in configure. + */ + char name[128]; + + xstrncpy(name, program_name, sizeof(name)); + + if (my.debug) { + fprintf(stderr,"%s %s: debugging enabled\n\n%s\n", uppercase(name, strlen(name)), version_string, copyright); + } else { + if (b == TRUE) { + fprintf(stderr,"%s %s\n\n%s\n", uppercase(name, strlen(name)), version_string, copyright); + exit(EXIT_SUCCESS); + } else { + fprintf(stderr,"%s %s\n", uppercase(name, strlen(name)), version_string); + } + } +} /* end of display version */ + +/** + * display_help + * displays the help section to STDOUT and exits + */ +void +display_help() +{ + /** + * call display_version, but do not exit + */ + display_version(FALSE); + printf("Usage: %s [options]\n", program_name); + printf(" %s [options] URL\n", program_name); + printf(" %s -g URL\n", program_name); + printf("Options:\n" ); + puts(" -V, --version VERSION, prints the version number."); + puts(" -h, --help HELP, prints this section."); + puts(" -C, --config CONFIGURATION, show the current config."); + puts(" -v, --verbose VERBOSE, prints notification to screen."); + puts(" -q, --quiet QUIET turns verbose off and suppresses output."); + puts(" -g, --get GET, pull down HTTP headers and display the"); + puts(" transaction. Great for application debugging."); + puts(" -p, --print PRINT, like GET only it prints the entire page."); + puts(" -c, --concurrent=NUM CONCURRENT users, default is 10"); + puts(" -r, --reps=NUM REPS, number of times to run the test." ); + puts(" -t, --time=NUMm TIMED testing where \"m\" is modifier S, M, or H"); + puts(" ex: --time=1H, one hour test." ); + puts(" -d, --delay=NUM Time DELAY, random delay before each request"); + puts(" -b, --benchmark BENCHMARK: no delays between requests." ); + puts(" -i, --internet INTERNET user simulation, hits URLs randomly."); + puts(" -f, --file=FILE FILE, select a specific URLS FILE." ); + printf(" -R, --rc=FILE RC, specify an %src file\n",program_name); + puts(" -l, --log[=FILE] LOG to FILE. If FILE is not specified, the"); + printf(" default is used: PREFIX/var/%s.log\n", program_name); + puts(" -m, --mark=\"text\" MARK, mark the log file with a string." ); + puts(" between .001 and NUM. (NOT COUNTED IN STATS)"); + puts(" -H, --header=\"text\" Add a header to request (can be many)" ); + puts(" -A, --user-agent=\"text\" Sets User-Agent in request" ); + puts(" -T, --content-type=\"text\" Sets Content-Type in request" ); + puts(" -j, --json-output JSON OUTPUT, print final stats to stdout as JSON"); + puts(" --no-parser NO PARSER, turn off the HTML page parser"); + puts(" --no-follow NO FOLLOW, do not follow HTTP redirects"); + puts(""); + puts(copyright); + /** + * our work is done, exit nicely + */ + exit(EXIT_SUCCESS); +} + +/* Check the command line for the presence of the -R or --RC switch. We + * need to do this separately from the other command line switches because + * the options are initialized from the .siegerc file before the command line + * switches are parsed. The argument index is reset before leaving the + * function. */ +void +parse_rc_cmdline(int argc, char *argv[]) +{ + int a = 0; + strcpy(my.rc, ""); + + while( a > -1 ){ + a = getopt_long(argc, argv, "VhvqCDNFpgl::ibr:t:f:d:c:m:H:R:A:T:j", long_options, (int*)0); + if(a == 'R'){ + strcpy(my.rc, optarg); + a = -1; + } + } + optind = 0; +} + +/** + * parses command line arguments and assigns + * values to run time variables. relies on GNU + * getopts included with this distribution. + */ +void +parse_cmdline(int argc, char *argv[]) +{ + int c = 0; + int nargs; + while ((c = getopt_long(argc, argv, "VhvqCDNFpgl::ibr:t:f:d:c:m:H:R:A:T:j", long_options, (int *)0)) != EOF) { + switch (c) { + case 'V': + display_version(TRUE); + break; + case 'h': + display_help(); + exit(EXIT_SUCCESS); + case 'D': + my.debug = TRUE; + break; + case 'C': + my.config = TRUE; + my.get = FALSE; + break; + case 'c': + my.cusers = atoi(optarg); + break; + case 'i': + my.internet = TRUE; + break; + case 'b': + my.bench = TRUE; + break; + case 'd': + /* XXX range checking? use strtol? */ + my.delay = atof(optarg); + if(my.delay < 0){ + my.delay = 0; + } + break; + case 'g': + my.get = TRUE; + break; + case 'p': + my.print = TRUE; + my.cusers = 1; + my.reps = 1; + break; + case 'l': + my.logging = TRUE; + if (optarg) { + if (strlen(optarg) > sizeof(my.logfile)) { + fprintf(stderr, "ERROR: -l/--logfile is limited to %ld in length", sizeof(my.logfile)); + exit(1); + } + xstrncpy(my.logfile, optarg, strlen(optarg)+1); + } + break; + case 'm': + my.mark = TRUE; + my.markstr = optarg; + my.logging = TRUE; + break; + case 'q': + my.quiet = TRUE; + break; + case 'v': + my.verbose = TRUE; + break; + case 'r': + if(strmatch(optarg, "once")){ + my.reps = -1; + } else { + my.reps = atoi(optarg); + } + break; + case 't': + parse_time(optarg); + break; + case 'f': + if(optarg == NULL) break; /*paranoia*/ + xstrncpy(my.file, optarg, strlen(optarg)+1); + break; + case 'A': + strncpy(my.uagent, optarg, 255); + break; + case 'T': + strncpy(my.conttype, optarg, 255); + break; + case 'N': + my.parser = FALSE; + break; + case 'F': + my.follow = FALSE; + break; + case 'R': + /** + * processed above + */ + break; + case 'H': + { + if(!strchr(optarg,':')) NOTIFY(FATAL, "no ':' in http-header"); + if((strlen(optarg) + strlen(my.extra) + 3) > 2048) + NOTIFY(FATAL, "header is too large"); + strcat(my.extra,optarg); + strcat(my.extra,"\015\012"); + } + break; + case 'j': + my.json_output = TRUE; + break; + + } /* end of switch( c ) */ + } /* end of while c = getopt_long */ + nargs = argc - optind; + if (nargs) + my.url = xstrdup(argv[argc-1]); + if (my.get && my.url==NULL) { + puts("ERROR: -g/--get requires a commandline URL"); + exit(1); + } + return; +} /* end of parse_cmdline */ + +private void +__signal_setup() +{ + sigset_t sigs; + + sigemptyset(&sigs); + sigaddset(&sigs, SIGHUP); + sigaddset(&sigs, SIGINT); + sigaddset(&sigs, SIGALRM); + sigaddset(&sigs, SIGTERM); + sigaddset(&sigs, SIGPIPE); + sigprocmask(SIG_BLOCK, &sigs, NULL); +} + +private void +__config_setup(int argc, char *argv[]) +{ + + memset(&my, '\0', sizeof(struct CONFIG)); + + parse_rc_cmdline(argc, argv); + if (init_config() < 0) { + exit(EXIT_FAILURE); + } + parse_cmdline(argc, argv); + ds_module_check(); + + if (my.config) { + show_config(TRUE); + } + + /** + * Let's tap the brakes and make sure the user knows what they're doing... + */ + if (my.cusers > my.limit) { + printf("\n"); + printf("================================================================\n"); + printf("WARNING: The number of users is capped at %d.%sTo increase this\n", my.limit, (my.limit>999)?" ":" "); + printf(" limit, search your .siegerc file for 'limit' and change\n"); + printf(" its value. Make sure you read the instructions there...\n"); + printf("================================================================\n"); + sleep(10); + my.cusers = my.limit; + } +} + +private LINES * +__urls_setup() +{ + LINES * lines; + + lines = xcalloc(1, sizeof(LINES)); + lines->index = 0; + lines->line = NULL; + + if (my.url != NULL) { + my.length = 1; + } else { + my.length = read_cfg_file(lines, my.file); + } + + if (my.length == 0) { + display_help(); + } + + return lines; +} + +int +main(int argc, char *argv[]) +{ + int i, j; + int result = 0; + void * status = NULL; + LINES * lines = NULL; + CREW crew = NULL; + DATA data = NULL; + HASH cookies = NULL; + ARRAY urls = new_array(); + ARRAY browsers = new_array(); + pthread_t cease; + pthread_t timer; + pthread_attr_t scope_attr; + + __signal_setup(); + __config_setup(argc, argv); + lines = __urls_setup(); + + pthread_attr_init(&scope_attr); + pthread_attr_setscope(&scope_attr, PTHREAD_SCOPE_SYSTEM); +#if defined(_AIX) + /** + * AIX, for whatever reason, defies the pthreads standard and + * creates threads detached by default. (see pthread.h on AIX) + */ + pthread_attr_setdetachstate(&scope_attr, PTHREAD_CREATE_JOINABLE); +#endif + +#ifdef HAVE_SSL + SSL_thread_setup(); +#endif + + if (my.url != NULL) { + URL tmp = new_url(my.url); + url_set_ID(tmp, 0); + if (my.get && url_get_method(tmp) != POST && url_get_method(tmp) != PUT) { + url_set_method(tmp, my.method); + } + array_npush(urls, tmp, URLSIZE); // from cmd line + } else { + for (i = 0; i < my.length; i++) { + URL tmp = new_url(lines->line[i]); + url_set_ID(tmp, i); + array_npush(urls, tmp, URLSIZE); + } + } + + cookies = load_cookies(my.cookies); + for (i = 0; i < my.cusers; i++) { + char tmp[4096]; + BROWSER B = new_browser(i); + memset(tmp, '\0', sizeof(tmp)); + snprintf(tmp, 4096, "%d", i); + if (cookies != NULL) { + if (hash_get(cookies, tmp) != NULL) { + browser_set_cookies(B, (HASH)hash_get(cookies, tmp)); + } + } + if (my.reps > 0 ) { + browser_set_urls(B, urls); + } else { + /** + * Scenario: -r once/--reps=once + */ + int n_urls = array_length(urls); + int per_user = n_urls / my.cusers; + int remainder = n_urls % my.cusers; + int begin_url = i * per_user + ((i < remainder) ? i : remainder); + int end_url = (i + 1) * per_user + ((i < remainder) ? (i + 1) : remainder); + ARRAY url_slice = new_array(); + for (j = begin_url; j < end_url && j < n_urls; j++) { + URL u = array_get(urls, j); + if (u != NULL && url_get_hostname(u) != NULL && strlen(url_get_hostname(u)) > 1) { + array_npush(url_slice, u, URLSIZE); + } + } + browser_set_urls(B, url_slice); + } + array_npush(browsers, B, BROWSERSIZE); + } + + if ((crew = new_crew(my.cusers, my.cusers, FALSE)) == NULL) { + NOTIFY(FATAL, "unable to allocate memory for %d simulated browser", my.cusers); + } + + if ((result = pthread_create(&cease, NULL, (void*)sig_handler, (void*)crew)) < 0) { + NOTIFY(FATAL, "failed to create handler: %d\n", result); + } + if (my.secs > 0) { + if ((result = pthread_create(&timer, NULL, (void*)siege_timer, (void*)cease)) < 0) { + NOTIFY(FATAL, "failed to create handler: %d\n", result); + } + } + + /** + * Display information about the siege to the user + * and prepare for verbose output if necessary. + */ + if (!my.get && !my.quiet) { + fprintf(stderr, "** "); + display_version(FALSE); + fprintf(stderr, "** Preparing %d concurrent users for battle.\n", my.cusers); + fprintf(stderr, "The server is now under siege..."); + if (my.verbose) { fprintf(stderr, "\n"); } + } + + data = new_data(); + data_set_start(data); + for (i = 0; i < my.cusers && crew_get_shutdown(crew) != TRUE; i++) { + BROWSER B = (BROWSER)array_get(browsers, i); + result = crew_add(crew, (void*)start, B); + if (result == FALSE) { + my.verbose = FALSE; + fprintf(stderr, "Unable to spawn additional threads; you may need to\n"); + fprintf(stderr, "upgrade your libraries or tune your system in order\n"); + fprintf(stderr, "to exceed %d users.\n", my.cusers); + NOTIFY(FATAL, "system resources exhausted"); + } + } + crew_join(crew, TRUE, &status); + data_set_stop(data); + +#ifdef HAVE_SSL + SSL_thread_cleanup(); +#endif + + for (i = 0; i < ((crew_get_total(crew) > my.cusers || + crew_get_total(crew) == 0) ? my.cusers : crew_get_total(crew)); i++) { + BROWSER B = (BROWSER)array_get(browsers, i); + data_increment_count(data, browser_get_hits(B)); + data_increment_bytes(data, browser_get_bytes(B)); + data_increment_total(data, browser_get_time(B)); + data_increment_code (data, browser_get_code(B)); + data_increment_okay (data, browser_get_okay(B)); + data_increment_fail (data, browser_get_fail(B)); + data_set_highest (data, browser_get_himark(B)); + data_set_lowest (data, browser_get_lomark(B)); + } crew_destroy(crew); + + pthread_usleep_np(10000); + + if (! my.quiet && ! my.get) { + if (my.failures > 0 && my.failed >= my.failures) { + fprintf(stderr, "%s aborted due to excessive socket failure; you\n", program_name); + fprintf(stderr, "can change the failure threshold in $HOME/.%src\n", program_name); + } + fprintf(stderr, "\nTransactions:\t\t%12u hits\n", data_get_count(data)); + fprintf(stderr, "Availability:\t\t%12.2f %%\n", data_get_count(data)==0 ? 0 : + (double)data_get_count(data) / + (data_get_count(data)+my.failed)*100 + ); + fprintf(stderr, "Elapsed time:\t\t%12.2f secs\n", data_get_elapsed(data)); + fprintf(stderr, "Data transferred:\t%12.2f MB\n", data_get_megabytes(data)); /*%12llu*/ + fprintf(stderr, "Response time:\t\t%12.2f secs\n", data_get_response_time(data)); + fprintf(stderr, "Transaction rate:\t%12.2f trans/sec\n", data_get_transaction_rate(data)); + fprintf(stderr, "Throughput:\t\t%12.2f MB/sec\n", data_get_throughput(data)); + fprintf(stderr, "Concurrency:\t\t%12.2f\n", data_get_concurrency(data)); + fprintf(stderr, "Successful transactions:%12u\n", data_get_code(data)); + if (my.debug) { + fprintf(stderr, "HTTP OK received:\t%12u\n", data_get_okay(data)); + } + fprintf(stderr, "Failed transactions:\t%12u\n", my.failed); + fprintf(stderr, "Longest transaction:\t%12.2f\n", data_get_highest(data)); + fprintf(stderr, "Shortest transaction:\t%12.2f\n", data_get_lowest(data)); + fprintf(stderr, " \n"); + } + + if (my.json_output) { + fprintf(stderr, "\n"); + printf("{\n"); + printf("\t\"transactions\":\t\t\t%12u,\n", data_get_count(data)); + + double availability; + if (data_get_count(data) == 0) { + availability = 0; + } else { + availability = (double)data_get_count(data) / (data_get_count(data) + my.failed) * 100; + } + + printf("\t\"availability\":\t\t\t%12.2f,\n", availability); + printf("\t\"elapsed_time\":\t\t\t%12.2f,\n", data_get_elapsed(data)); + printf("\t\"data_transferred\":\t\t%12.2f,\n", data_get_megabytes(data)); /*%12llu*/ + printf("\t\"response_time\":\t\t%12.2f,\n", data_get_response_time(data)); + printf("\t\"transaction_rate\":\t\t%12.2f,\n", data_get_transaction_rate(data)); + printf("\t\"throughput\":\t\t\t%12.2f,\n", data_get_throughput(data)); + printf("\t\"concurrency\":\t\t\t%12.2f,\n", data_get_concurrency(data)); + printf("\t\"successful_transactions\":\t%12u,\n", data_get_code(data)); + + if (my.debug) { + printf("\t\"http_ok_received\":\t\t%12u,\n", data_get_okay(data)); + } + + printf("\t\"failed_transactions\":\t\t%12u,\n", my.failed); + printf("\t\"longest_transaction\":\t\t%12.2f,\n", data_get_highest(data)); + printf("\t\"shortest_transaction\":\t\t%12.2f\n", data_get_lowest(data)); + puts("}"); + } + + if (my.mark) mark_log_file(my.markstr); + if (my.logging) { + log_transaction(data); + if (my.failures > 0 && my.failed >= my.failures) { + mark_log_file("siege aborted due to excessive socket failure."); + } + } + + /** + * Let's clean up after ourselves.... + */ + data = data_destroy(data); + urls = array_destroyer(urls, (void*)url_destroy); + browsers = array_destroyer(browsers, (void*)browser_destroy); + cookies = hash_destroy(cookies); + my.cookies = cookies_destroy(my.cookies); + + if (my.url == NULL) { + for (i = 0; i < my.length; i++) + xfree(lines->line[i]); + xfree(lines->line); + xfree(lines); + } else { + xfree(lines->line); + xfree(lines); + } + + exit(EXIT_SUCCESS); +} /* end of int main **/ diff --git a/siege-4.1.6/src/md5.c b/siege-4.1.6/src/md5.c new file mode 100644 index 0000000..b30a6b7 --- /dev/null +++ b/siege-4.1.6/src/md5.c @@ -0,0 +1,440 @@ +/* md5.c - Functions to compute MD5 message digest of files or memory blocks + according to the definition of MD5 in RFC 1321 from April 1992. + Copyright (C) 1995, 1996, 2011 Free Software Foundation, Inc. + + NOTE: This source is derived from an old version taken from the GNU C + Library (glibc). + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + +/* Written by Ulrich Drepper , 1995. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#if STDC_HEADERS || defined _LIBC +# include +# include +#else +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#include "ansidecl.h" +#include "md5.h" + +#ifdef _LIBC +# include +# if __BYTE_ORDER == __BIG_ENDIAN +# define WORDS_BIGENDIAN 1 +# endif +#endif + +#ifdef WORDS_BIGENDIAN +# define SWAP(n) \ + (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24)) +#else +# define SWAP(n) (n) +#endif + + +/* This array contains the bytes used to pad the buffer to the next + 64-byte boundary. (RFC 1321, 3.1: Step 1) */ +static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ }; + + +/* Initialize structure containing state of computation. + (RFC 1321, 3.3: Step 3) */ +void +md5_init_ctx (struct md5_ctx *ctx) +{ + ctx->A = (md5_uint32) 0x67452301; + ctx->B = (md5_uint32) 0xefcdab89; + ctx->C = (md5_uint32) 0x98badcfe; + ctx->D = (md5_uint32) 0x10325476; + + ctx->total[0] = ctx->total[1] = 0; + ctx->buflen = 0; +} + +/* Put result from CTX in first 16 bytes following RESBUF. The result + must be in little endian byte order. + + IMPORTANT: RESBUF may not be aligned as strongly as MD5_UNIT32 so we + put things in a local (aligned) buffer first, then memcpy into RESBUF. */ +void * +md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) +{ + md5_uint32 buffer[4]; + + buffer[0] = SWAP (ctx->A); + buffer[1] = SWAP (ctx->B); + buffer[2] = SWAP (ctx->C); + buffer[3] = SWAP (ctx->D); + + memcpy (resbuf, buffer, 16); + + return resbuf; +} + +/* Process the remaining bytes in the internal buffer and the usual + prolog according to the standard and write the result to RESBUF. + + IMPORTANT: On some systems it is required that RESBUF is correctly + aligned for a 32 bits value. */ +void * +md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) +{ + /* Take yet unprocessed bytes into account. */ + md5_uint32 bytes = ctx->buflen; + md5_uint32 swap_bytes; + size_t pad; + + /* Now count remaining bytes. */ + ctx->total[0] += bytes; + if (ctx->total[0] < bytes) + ++ctx->total[1]; + + pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes; + memcpy (&ctx->buffer[bytes], fillbuf, pad); + + /* Put the 64-bit file length in *bits* at the end of the buffer. + Use memcpy to avoid aliasing problems. On most systems, this + will be optimized away to the same code. */ + swap_bytes = SWAP (ctx->total[0] << 3); + memcpy (&ctx->buffer[bytes + pad], &swap_bytes, sizeof (swap_bytes)); + swap_bytes = SWAP ((ctx->total[1] << 3) | (ctx->total[0] >> 29)); + memcpy (&ctx->buffer[bytes + pad + 4], &swap_bytes, sizeof (swap_bytes)); + + /* Process last bytes. */ + md5_process_block (ctx->buffer, bytes + pad + 8, ctx); + + return md5_read_ctx (ctx, resbuf); +} + +/* Compute MD5 message digest for bytes read from STREAM. The + resulting message digest number will be written into the 16 bytes + beginning at RESBLOCK. */ +int +md5_stream (FILE *stream, void *resblock) +{ + /* Important: BLOCKSIZE must be a multiple of 64. */ +#define BLOCKSIZE 4096 + struct md5_ctx ctx; + char buffer[BLOCKSIZE + 72]; + size_t sum; + + /* Initialize the computation context. */ + md5_init_ctx (&ctx); + + /* Iterate over full file contents. */ + while (1) + { + /* We read the file in blocks of BLOCKSIZE bytes. One call of the + computation function processes the whole buffer so that with the + next round of the loop another block can be read. */ + size_t n; + sum = 0; + + /* Read block. Take care for partial reads. */ + do + { + n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream); + + sum += n; + } + while (sum < BLOCKSIZE && n != 0); + if (n == 0 && ferror (stream)) + return 1; + + /* If end of file is reached, end the loop. */ + if (n == 0) + break; + + /* Process buffer with BLOCKSIZE bytes. Note that + BLOCKSIZE % 64 == 0 + */ + md5_process_block (buffer, BLOCKSIZE, &ctx); + } + + /* Add the last bytes if necessary. */ + if (sum > 0) + md5_process_bytes (buffer, sum, &ctx); + + /* Construct result in desired memory. */ + md5_finish_ctx (&ctx, resblock); + return 0; +} + +/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The + result is always in little endian byte order, so that a byte-wise + output yields to the wanted ASCII representation of the message + digest. */ +void * +md5_buffer (const char *buffer, size_t len, void *resblock) +{ + struct md5_ctx ctx; + + /* Initialize the computation context. */ + md5_init_ctx (&ctx); + + /* Process whole buffer but last len % 64 bytes. */ + md5_process_bytes (buffer, len, &ctx); + + /* Put result in desired memory area. */ + return md5_finish_ctx (&ctx, resblock); +} + + +void +md5_process_bytes (const void *buffer, size_t len, struct md5_ctx *ctx) +{ + /* When we already have some bits in our internal buffer concatenate + both inputs first. */ + if (ctx->buflen != 0) + { + size_t left_over = ctx->buflen; + size_t add = 128 - left_over > len ? len : 128 - left_over; + + memcpy (&ctx->buffer[left_over], buffer, add); + ctx->buflen += add; + + if (left_over + add > 64) + { + md5_process_block (ctx->buffer, (left_over + add) & ~63, ctx); + /* The regions in the following copy operation cannot overlap. */ + memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], + (left_over + add) & 63); + ctx->buflen = (left_over + add) & 63; + } + + buffer = (const void *) ((const char *) buffer + add); + len -= add; + } + + /* Process available complete blocks. */ + if (len > 64) + { +#if !_STRING_ARCH_unaligned +/* To check alignment gcc has an appropriate operator. Other + compilers don't. */ +# if __GNUC__ >= 2 +# define UNALIGNED_P(p) (((md5_uintptr) p) % __alignof__ (md5_uint32) != 0) +# else +# define UNALIGNED_P(p) (((md5_uintptr) p) % sizeof (md5_uint32) != 0) +# endif + if (UNALIGNED_P (buffer)) + while (len > 64) + { + memcpy (ctx->buffer, buffer, 64); + md5_process_block (ctx->buffer, 64, ctx); + buffer = (const char *) buffer + 64; + len -= 64; + } + else +#endif + { + md5_process_block (buffer, len & ~63, ctx); + buffer = (const void *) ((const char *) buffer + (len & ~63)); + len &= 63; + } + } + + /* Move remaining bytes in internal buffer. */ + if (len > 0) + { + memcpy (ctx->buffer, buffer, len); + ctx->buflen = len; + } +} + + +/* These are the four functions used in the four steps of the MD5 algorithm + and defined in the RFC 1321. The first function is a little bit optimized + (as found in Colin Plumbs public domain implementation). */ +/* #define FF(b, c, d) ((b & c) | (~b & d)) */ +#define FF(b, c, d) (d ^ (b & (c ^ d))) +#define FG(b, c, d) FF (d, b, c) +#define FH(b, c, d) (b ^ c ^ d) +#define FI(b, c, d) (c ^ (b | ~d)) + +/* Process LEN bytes of BUFFER, accumulating context into CTX. + It is assumed that LEN % 64 == 0. */ + +void +md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx) +{ + md5_uint32 correct_words[16]; + const md5_uint32 *words = (const md5_uint32 *) buffer; + size_t nwords = len / sizeof (md5_uint32); + const md5_uint32 *endp = words + nwords; + md5_uint32 A = ctx->A; + md5_uint32 B = ctx->B; + md5_uint32 C = ctx->C; + md5_uint32 D = ctx->D; + + /* First increment the byte count. RFC 1321 specifies the possible + length of the file up to 2^64 bits. Here we only compute the + number of bytes. Do a double word increment. */ + ctx->total[0] += len; + ctx->total[1] += ((len >> 31) >> 1) + (ctx->total[0] < len); + + /* Process all bytes in the buffer with 64 bytes in each round of + the loop. */ + while (words < endp) + { + md5_uint32 *cwp = correct_words; + md5_uint32 A_save = A; + md5_uint32 B_save = B; + md5_uint32 C_save = C; + md5_uint32 D_save = D; + + /* First round: using the given function, the context and a constant + the next context is computed. Because the algorithms processing + unit is a 32-bit word and it is determined to work on words in + little endian byte order we perhaps have to change the byte order + before the computation. To reduce the work for the next steps + we store the swapped words in the array CORRECT_WORDS. */ + +#define OP(a, b, c, d, s, T) \ + do \ + { \ + a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \ + ++words; \ + CYCLIC (a, s); \ + a += b; \ + } \ + while (0) + + /* It is unfortunate that C does not provide an operator for + cyclic rotation. Hope the C compiler is smart enough. */ +#define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s))) + + /* Before we start, one word to the strange constants. + They are defined in RFC 1321 as + + T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64 + */ + + /* Round 1. */ + OP (A, B, C, D, 7, (md5_uint32) 0xd76aa478); + OP (D, A, B, C, 12, (md5_uint32) 0xe8c7b756); + OP (C, D, A, B, 17, (md5_uint32) 0x242070db); + OP (B, C, D, A, 22, (md5_uint32) 0xc1bdceee); + OP (A, B, C, D, 7, (md5_uint32) 0xf57c0faf); + OP (D, A, B, C, 12, (md5_uint32) 0x4787c62a); + OP (C, D, A, B, 17, (md5_uint32) 0xa8304613); + OP (B, C, D, A, 22, (md5_uint32) 0xfd469501); + OP (A, B, C, D, 7, (md5_uint32) 0x698098d8); + OP (D, A, B, C, 12, (md5_uint32) 0x8b44f7af); + OP (C, D, A, B, 17, (md5_uint32) 0xffff5bb1); + OP (B, C, D, A, 22, (md5_uint32) 0x895cd7be); + OP (A, B, C, D, 7, (md5_uint32) 0x6b901122); + OP (D, A, B, C, 12, (md5_uint32) 0xfd987193); + OP (C, D, A, B, 17, (md5_uint32) 0xa679438e); + OP (B, C, D, A, 22, (md5_uint32) 0x49b40821); + + /* For the second to fourth round we have the possibly swapped words + in CORRECT_WORDS. Redefine the macro to take an additional first + argument specifying the function to use. */ +#undef OP +#define OP(a, b, c, d, k, s, T) \ + do \ + { \ + a += FX (b, c, d) + correct_words[k] + T; \ + CYCLIC (a, s); \ + a += b; \ + } \ + while (0) + +#define FX(b, c, d) FG (b, c, d) + + /* Round 2. */ + OP (A, B, C, D, 1, 5, (md5_uint32) 0xf61e2562); + OP (D, A, B, C, 6, 9, (md5_uint32) 0xc040b340); + OP (C, D, A, B, 11, 14, (md5_uint32) 0x265e5a51); + OP (B, C, D, A, 0, 20, (md5_uint32) 0xe9b6c7aa); + OP (A, B, C, D, 5, 5, (md5_uint32) 0xd62f105d); + OP (D, A, B, C, 10, 9, (md5_uint32) 0x02441453); + OP (C, D, A, B, 15, 14, (md5_uint32) 0xd8a1e681); + OP (B, C, D, A, 4, 20, (md5_uint32) 0xe7d3fbc8); + OP (A, B, C, D, 9, 5, (md5_uint32) 0x21e1cde6); + OP (D, A, B, C, 14, 9, (md5_uint32) 0xc33707d6); + OP (C, D, A, B, 3, 14, (md5_uint32) 0xf4d50d87); + OP (B, C, D, A, 8, 20, (md5_uint32) 0x455a14ed); + OP (A, B, C, D, 13, 5, (md5_uint32) 0xa9e3e905); + OP (D, A, B, C, 2, 9, (md5_uint32) 0xfcefa3f8); + OP (C, D, A, B, 7, 14, (md5_uint32) 0x676f02d9); + OP (B, C, D, A, 12, 20, (md5_uint32) 0x8d2a4c8a); + +#undef FX +#define FX(b, c, d) FH (b, c, d) + + /* Round 3. */ + OP (A, B, C, D, 5, 4, (md5_uint32) 0xfffa3942); + OP (D, A, B, C, 8, 11, (md5_uint32) 0x8771f681); + OP (C, D, A, B, 11, 16, (md5_uint32) 0x6d9d6122); + OP (B, C, D, A, 14, 23, (md5_uint32) 0xfde5380c); + OP (A, B, C, D, 1, 4, (md5_uint32) 0xa4beea44); + OP (D, A, B, C, 4, 11, (md5_uint32) 0x4bdecfa9); + OP (C, D, A, B, 7, 16, (md5_uint32) 0xf6bb4b60); + OP (B, C, D, A, 10, 23, (md5_uint32) 0xbebfbc70); + OP (A, B, C, D, 13, 4, (md5_uint32) 0x289b7ec6); + OP (D, A, B, C, 0, 11, (md5_uint32) 0xeaa127fa); + OP (C, D, A, B, 3, 16, (md5_uint32) 0xd4ef3085); + OP (B, C, D, A, 6, 23, (md5_uint32) 0x04881d05); + OP (A, B, C, D, 9, 4, (md5_uint32) 0xd9d4d039); + OP (D, A, B, C, 12, 11, (md5_uint32) 0xe6db99e5); + OP (C, D, A, B, 15, 16, (md5_uint32) 0x1fa27cf8); + OP (B, C, D, A, 2, 23, (md5_uint32) 0xc4ac5665); + +#undef FX +#define FX(b, c, d) FI (b, c, d) + + /* Round 4. */ + OP (A, B, C, D, 0, 6, (md5_uint32) 0xf4292244); + OP (D, A, B, C, 7, 10, (md5_uint32) 0x432aff97); + OP (C, D, A, B, 14, 15, (md5_uint32) 0xab9423a7); + OP (B, C, D, A, 5, 21, (md5_uint32) 0xfc93a039); + OP (A, B, C, D, 12, 6, (md5_uint32) 0x655b59c3); + OP (D, A, B, C, 3, 10, (md5_uint32) 0x8f0ccc92); + OP (C, D, A, B, 10, 15, (md5_uint32) 0xffeff47d); + OP (B, C, D, A, 1, 21, (md5_uint32) 0x85845dd1); + OP (A, B, C, D, 8, 6, (md5_uint32) 0x6fa87e4f); + OP (D, A, B, C, 15, 10, (md5_uint32) 0xfe2ce6e0); + OP (C, D, A, B, 6, 15, (md5_uint32) 0xa3014314); + OP (B, C, D, A, 13, 21, (md5_uint32) 0x4e0811a1); + OP (A, B, C, D, 4, 6, (md5_uint32) 0xf7537e82); + OP (D, A, B, C, 11, 10, (md5_uint32) 0xbd3af235); + OP (C, D, A, B, 2, 15, (md5_uint32) 0x2ad7d2bb); + OP (B, C, D, A, 9, 21, (md5_uint32) 0xeb86d391); + + /* Add the starting values of the context. */ + A += A_save; + B += B_save; + C += C_save; + D += D_save; + } + + /* Put checksum in context given as argument. */ + ctx->A = A; + ctx->B = B; + ctx->C = C; + ctx->D = D; +} diff --git a/siege-4.1.6/src/md5.h b/siege-4.1.6/src/md5.h new file mode 100644 index 0000000..6da2fef --- /dev/null +++ b/siege-4.1.6/src/md5.h @@ -0,0 +1,154 @@ +/* md5.h - Declaration of functions and data types used for MD5 sum + computing library functions. + Copyright 1995, 1996, 2000 Free Software Foundation, Inc. + NOTE: The canonical source of this file is maintained with the GNU C + Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. + + This program is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ + +#ifndef _MD5_H +#define _MD5_H 1 + +#include + +#if defined HAVE_LIMITS_H || _LIBC +# include +#endif + +#include "ansidecl.h" + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + doing that would require that the configure script compile and *run* + the resulting executable. Locally running cross-compiled executables + is usually not possible. */ + +#ifdef _LIBC +# include +typedef u_int32_t md5_uint32; +typedef uintptr_t md5_uintptr; +#elif defined (HAVE_SYS_TYPES_H) && defined (HAVE_STDINT_H) +#include +#include +typedef uint32_t md5_uint32; +typedef uintptr_t md5_uintptr; +#else +# define INT_MAX_32_BITS 2147483647 + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +# ifndef INT_MAX +# define INT_MAX INT_MAX_32_BITS +# endif + +# if INT_MAX == INT_MAX_32_BITS + typedef unsigned int md5_uint32; +# else +# if SHRT_MAX == INT_MAX_32_BITS + typedef unsigned short md5_uint32; +# else +# if LONG_MAX == INT_MAX_32_BITS + typedef unsigned long md5_uint32; +# else + /* The following line is intended to evoke an error. + Using #error is not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +# endif +/* We have to make a guess about the integer type equivalent in size + to pointers which should always be correct. */ +typedef unsigned long int md5_uintptr; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Structure to save state of computation between the single steps. */ +struct md5_ctx +{ + md5_uint32 A; + md5_uint32 B; + md5_uint32 C; + md5_uint32 D; + + md5_uint32 total[2]; + md5_uint32 buflen; + char buffer[128] ATTRIBUTE_ALIGNED_ALIGNOF(md5_uint32); +}; + +/* + * The following three functions are build up the low level used in + * the functions `md5_stream' and `md5_buffer'. + */ + +/* Initialize structure containing state of computation. + (RFC 1321, 3.3: Step 3) */ +extern void md5_init_ctx (struct md5_ctx *ctx); + +/* Starting with the result of former calls of this function (or the + initialization function update the context for the next LEN bytes + starting at BUFFER. + It is necessary that LEN is a multiple of 64!!! */ +extern void md5_process_block (const void *buffer, size_t len, + struct md5_ctx *ctx); + +/* Starting with the result of former calls of this function (or the + initialization function update the context for the next LEN bytes + starting at BUFFER. + It is NOT required that LEN is a multiple of 64. */ +extern void md5_process_bytes (const void *buffer, size_t len, + struct md5_ctx *ctx); + +/* Process the remaining bytes in the buffer and put result from CTX + in first 16 bytes following RESBUF. The result is always in little + endian byte order, so that a byte-wise output yields to the wanted + ASCII representation of the message digest. + + IMPORTANT: On some systems it is required that RESBUF is correctly + aligned for a 32 bits value. */ +extern void *md5_finish_ctx (struct md5_ctx *ctx, void *resbuf); + + +/* Put result from CTX in first 16 bytes following RESBUF. The result is + always in little endian byte order, so that a byte-wise output yields + to the wanted ASCII representation of the message digest. + + IMPORTANT: On some systems it is required that RESBUF is correctly + aligned for a 32 bits value. */ +extern void *md5_read_ctx (const struct md5_ctx *ctx, void *resbuf); + + +/* Compute MD5 message digest for bytes read from STREAM. The + resulting message digest number will be written into the 16 bytes + beginning at RESBLOCK. */ +extern int md5_stream (FILE *stream, void *resblock); + +/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The + result is always in little endian byte order, so that a byte-wise + output yields to the wanted ASCII representation of the message + digest. */ +extern void *md5_buffer (const char *buffer, size_t len, void *resblock); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/siege-4.1.6/src/memory.c b/siege-4.1.6/src/memory.c new file mode 100644 index 0000000..2e0ef8c --- /dev/null +++ b/siege-4.1.6/src/memory.c @@ -0,0 +1,163 @@ +/** + * Memory handling + * + * Copyright (C) 2000-2016 by + * Jeffrey Fulmer - + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * -- + * + */ +#include +#include +#include +#include +#include + +char * +xstrncpy(char* dest, const char*src, size_t len) +{ + memset(dest, '\0', len); + memcpy(dest, src, strnlen(src, len-1)); + return dest; +} + +char * +xstrncat(char *dest, const char *src, size_t len) +{ + if (src == NULL) { + NOTIFY(ERROR, "source string has no value!"); + return NULL; + } + if (dest == NULL) { + NOTIFY(ERROR, "source string has no value!"); + return NULL; + } + strncat(dest, src, len); + return dest; +} + +char * +xstrdup(const char *str) +{ + register char *ret; +#ifndef HAVE_STRDUP + register size_t len; +#endif/*HAVE_STRDUP*/ + + if(!str){ + NOTIFY(ERROR, "string has no value!"); + return NULL; + } +#ifdef HAVE_STRDUP + ret = strdup(str); + if(ret==NULL) NOTIFY(FATAL, "xstrdup: unable to allocate additional memory"); +#else + len = strlen(str)+1; + ret = malloc(len); + if (ret==NULL) { + NOTIFY(FATAL, "xstrdup: unable to allocate additional memory"); + } + memcpy(ret, str, len); +#endif + return ret; +} + +char * +xstrcat(const char *arg1, ...) +{ + const char *argptr; + char *resptr, *result; + size_t len = 0; + va_list valist; + + va_start(valist, arg1); + + for(argptr = arg1; argptr != NULL; argptr = va_arg(valist, char *)) + len += strlen(argptr); + + va_end(valist); + + result = xmalloc(len + 1); + resptr = result; + + va_start(valist, arg1); + + for(argptr = arg1; argptr != NULL; argptr = va_arg(valist, char *)) { + len = strlen(argptr); + memcpy(resptr, argptr, len); + resptr += len; + } + + va_end(valist); + + *resptr = '\0'; + + return result; +} + +/** + * xrealloc: value added realloc + */ +void * +xrealloc(void *ptr, size_t size) +{ + void *tmp; + if (ptr) { + tmp = realloc(ptr, size); + } else { + tmp = malloc(size); + } + if (tmp==NULL) NOTIFY(FATAL, "Memory exhausted; unable to continue."); + return tmp; +} + +/** + * xmalloc: value-added malloc + */ +void * +xmalloc(size_t size) +{ + void *tmp = malloc(size); + if(tmp==NULL) NOTIFY(FATAL, "Unable to allocate additional memory."); + return tmp; +} + +/** + * xcalloc replaces calloc + */ +void * +xcalloc(size_t num, size_t size) +{ + void *tmp = xmalloc(num * size); + memset(tmp, 0, (num * size)); + return tmp; +} + + +/** + * free() wrapper: + * free it and NULL it to ensure we + * don't free it a second time... + */ +void +xfree(void *ptr) +{ + if(ptr!=(void *)NULL){ + free(ptr); ptr=(void *)NULL; + } +} + diff --git a/siege-4.1.6/src/memory.h b/siege-4.1.6/src/memory.h new file mode 100644 index 0000000..5c9c8d0 --- /dev/null +++ b/siege-4.1.6/src/memory.h @@ -0,0 +1,36 @@ +/** + * Memory handling + * + * Copyright (C) 2000-2016 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#ifndef MEMORY_H +#define MEMORY_H + +#include + +char * xstrdup(const char *str); +char * xstrcat(const char *arg1, ...); +char * xstrncat(char *dest, const char *src, size_t len); +char * xstrncpy(char* dest, const char *src, size_t len); +void * xrealloc(void *, size_t); +void * xmalloc (size_t); +void * xcalloc (size_t, size_t); +void xfree(void *ptr); + +#endif /* MEMORY_H */ diff --git a/siege-4.1.6/src/notify.c b/siege-4.1.6/src/notify.c new file mode 100644 index 0000000..e9179a4 --- /dev/null +++ b/siege-4.1.6/src/notify.c @@ -0,0 +1,178 @@ +/** + * Error notification + * Library: joedog + * + * Copyright (C) 2000-2013 by + * Jeffrey Fulmer - , et. al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include +#include +#include +#include + +#define BUFSIZE 40000 + +#define RESET 0 +#define BRIGHT 1 +#define DIM 2 +#define UNDERLINE 3 +#define BLINK 4 +#define REVERSE 7 +#define HIDDEN 8 + +#define UNCOLOR -1 +#define BLACK 0 +#define RED 1 +#define GREEN 2 +#define YELLOW 3 +#define BLUE 4 +#define MAGENTA 5 +#define CYAN 6 +#define WHITE 7 + +typedef enum { + __LOG = 1, + __OUT = 2, +} METHOD; + +static void __message(METHOD M, LEVEL L, const char *fmt, va_list ap); + +void +OPENLOG(char *program) +{ + openlog(program, LOG_PID, LOG_DAEMON); + return; +} + +void +CLOSELOG(void) +{ + closelog(); + return; +} + +static void +__message(METHOD M, LEVEL L, const char *fmt, va_list ap) +{ + char buf[BUFSIZE]; + char msg[BUFSIZE+1024]; + LEVEL level = WARNING; + char pmode[64]; + char lmode[64]; + memset(lmode, '\0', 64); + memset(pmode, '\0', 64); + + vsprintf(buf, fmt, ap); + if (errno == 0 || errno == ENOSYS || L == DEBUG) { + snprintf(msg, sizeof msg, "%s\n", buf); + } else { + snprintf(msg, sizeof msg, "%s: %s\n", buf, strerror(errno)); + } + + switch (L) { + case DEBUG: + sprintf(pmode, "[%c[%d;%dmdebug%c[%dm]", 0x1B, BRIGHT, BLUE+30, 0x1B, RESET); + strcpy(lmode, "[debug]"); + level = LOG_WARNING; + break; + case WARNING: + sprintf(pmode, "[%c[%d;%dmalert%c[%dm]", 0x1B, BRIGHT, GREEN+30, 0x1B, RESET); + strcpy(lmode, "[alert] "); + level = LOG_WARNING; + break; + case ERROR: + sprintf(pmode, "[%c[%d;%dmerror%c[%dm]", 0x1B, BRIGHT, YELLOW+30, 0x1B, RESET); + strcpy(lmode, "[error]"); + level = LOG_ERR; + break; + case FATAL: + sprintf(pmode, "[%c[%d;%dmfatal%c[%dm]", 0x1B, BRIGHT, RED+30, 0x1B, RESET); + strcpy(lmode, "[fatal]"); + level = LOG_CRIT; + break; + } + + if (M == __LOG) { + syslog(level, "%s %s", lmode, msg); + } else { + fflush(stdout); + fprintf(stderr, "%s %s", pmode, msg); + } + if (L==FATAL) { exit(1); } + return; +} + +void +SYSLOG(LEVEL L, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + + __message(__LOG, L, fmt, ap); + va_end(ap); + + return; +} + +void +NOTIFY(LEVEL L, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + + __message(__OUT, L, fmt, ap); + va_end(ap); + + return; +} + +void +__display(int color, const char *fmt, va_list ap) +{ + char buf[BUFSIZE]; + char msg[BUFSIZE+1024]; + + vsprintf(buf, fmt, ap); + if (color == UNCOLOR) { + snprintf(msg, sizeof msg,"%s\n", buf); + } else { + snprintf(msg, sizeof msg, "%c[%d;%dm%s%c[%dm\n", 0x1B, RESET, color+30, buf, 0x1B, RESET); + } + printf("%s", msg); + return; +} + +void +DISPLAY(int color, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + __display(color, fmt, ap); + va_end(ap); + return; +} + diff --git a/siege-4.1.6/src/notify.h b/siege-4.1.6/src/notify.h new file mode 100644 index 0000000..cd7f72a --- /dev/null +++ b/siege-4.1.6/src/notify.h @@ -0,0 +1,50 @@ +/** + * Error notification + * Library: joedog + * + * Copyright (C) 2000-2009 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#ifndef NOTIFY_H +#define NOTIFY_H + +#define UNCOLOR -1 +#define BLACK 0 +#define RED 1 +#define GREEN 2 +#define YELLOW 3 +#define BLUE 4 +#define MAGENTA 5 +#define CYAN 6 +#define WHITE 7 + +typedef enum { + DEBUG = 0, + WARNING = 1, + ERROR = 2, + FATAL = 3 +} LEVEL; + +void OPENLOG(char *program_name); +void CLOSELOG(void); +void DISPLAY(int color, const char *fmt, ...); +void SYSLOG(LEVEL L, const char *fmt, ...); +void NOTIFY(LEVEL L, const char *fmt, ...); + + +#endif/*NOTIFY_H*/ diff --git a/siege-4.1.6/src/page.c b/siege-4.1.6/src/page.c new file mode 100644 index 0000000..1dca220 --- /dev/null +++ b/siege-4.1.6/src/page.c @@ -0,0 +1,127 @@ +#include +#include +#include +#include + +struct PAGE_T +{ + char * buf; + size_t len; + size_t size; +}; + +size_t PAGESIZE = sizeof(struct PAGE_T); + +void __expand(PAGE this, const int len); + +PAGE +new_page(char *str) +{ + PAGE this; + + this = calloc(1, PAGESIZE); + this->len = strlen(str); + this->size = this->len + 24576; + this->buf = calloc(1, this->size); + memcpy(this->buf, str, this->len); + + return this; +} + +PAGE +page_destroy(PAGE this) +{ + if (this != NULL) { + this->len = 0; + this->size = 0; + free(this->buf); + free(this); + } + return this; +} + +size_t +page_length(PAGE this) +{ + return this->len; +} + +size_t +page_size(PAGE this) +{ + return this->size; +} + +void +page_concat(PAGE this, const char *str, const int len) +{ + if (!this || !str || strlen(str) < 1 || len < 0) + return; + + if ((this->len + len) > this->size) { + __expand(this, len+1); + } + memcpy(this->buf+this->len, str, len); + this->len += len; + this->buf[this->len+1] = '\0'; + return; +} + +void +page_clear(PAGE this) +{ + if (!this) return; + this->len = 0; + memset(this->buf, '\0', this->size); + return; +} + +char * +page_value(PAGE this) +{ + return this->buf; +} + +void +__expand(PAGE this, const int len) +{ + if (!this || len < 0) return; + + this->size += len; + this->buf = realloc(this->buf, this->size); + memset(this->buf + (this->size - len), '\0', len); + return; +} + +#if 0 +#include +#include + +int +main (int argc, char *argv[]) +{ + int i; + FILE *fp; + char buf[1024]; + PAGE page = new_page(""); + + if (argv[1] == NULL || strlen(argv[1]) < 1) { + puts("usage: haha "); + exit(1); + } + while (i < 1000) { + fp = fopen(argv[1], "r"); + if (fp == NULL) exit(EXIT_FAILURE); + + while(fgets(buf, sizeof(buf), fp)){ + page_concat(page,buf,strlen(buf)); + } + printf("%s", page_value(page)); + page_clear(page); + fclose(fp); + i++; + } + exit(EXIT_SUCCESS); +} + +#endif diff --git a/siege-4.1.6/src/page.h b/siege-4.1.6/src/page.h new file mode 100644 index 0000000..2ffe6b0 --- /dev/null +++ b/siege-4.1.6/src/page.h @@ -0,0 +1,18 @@ +#ifndef PAGE_H +#define PAGE_H +#include + +/** + * PAGE object + */ +typedef struct PAGE_T *PAGE; + +PAGE new_page(); +PAGE page_destroy(PAGE this); +void page_concat(PAGE this, const char *str, const int len); +void page_clear(PAGE this); +char * page_value(PAGE this); +size_t page_length(PAGE this); + +#endif/*PAGE_H*/ + diff --git a/siege-4.1.6/src/parser.c b/siege-4.1.6/src/parser.c new file mode 100644 index 0000000..c7a7e60 --- /dev/null +++ b/siege-4.1.6/src/parser.c @@ -0,0 +1,366 @@ +/** + * HTML Parser + * + * Copyright (C) 2015-2016 + * Jeffrey Fulmer - , et al. + * + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define CONTROL_TOKENS " =" +#define CONTROL_TOKENS_PLUS " =\"\'" +#define CONTROL_TOKENS_QUOTES " \"\'" + +private void __parse_control(ARRAY array, URL base, char *html); +private void __add_url(ARRAY array, URL U); +private char * __strcasestr(const char *s, const char *find); +private char * __xstrip(const char * str, const char *pat); + +#define BUFSZ 4096 + +BOOLEAN +html_parser(ARRAY array, URL base, char *page) +{ + char *str; + char *ptr; + int i; + char tmp[BUFSZ]; + + memset(tmp, '\0', BUFSZ); + ptr = str = __xstrip(page, "\\"); + + if (page == NULL) return FALSE; + if (strlen(page) < 1) return FALSE; + + while (*ptr != '\0') { + if (*ptr == '<') { + ptr++; + if (startswith("!--", ptr) == TRUE) { + ptr += 3; + while (*ptr!='\0') { + if (startswith("-->", ptr) == TRUE) { + ptr += 3; + break; + } + ptr++; + } + } else { + i = 0; + memset(tmp, '\0', sizeof(tmp)); + while (*ptr != '\0' && *ptr != '>' && i < (BUFSZ-1)) { + tmp[i] = *ptr; + i++; + ptr++; + } + __parse_control(array, base, tmp); + } + } + ptr++; + } + xfree(str); + return TRUE; +} + +private void +__add_url(ARRAY array, URL U) +{ + int i = 0; + BOOLEAN found = FALSE; + + if (U == NULL || url_get_hostname(U) == NULL || strlen(url_get_hostname(U)) < 2) { + return; + } + + if (array != NULL) { + for (i = 0; i < (int)array_length(array); i++) { + URL url = (URL)array_get(array, i); + if (strmatch(url_get_absolute(U), url_get_absolute(url))) { + found = TRUE; + } + } + } + if (! found) { + array_npush(array, U, URLSIZE); + } + return; +} + +/** + * The following code is based on parse_control from LinkCheck + * by Ken Jones + * + * Copyright (C) 2000 Inter7 Internet Technologies, Inc. + * Copyright (C) 2013 Jeffrey Fulmer, et al + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * + */ +private void +__parse_control(ARRAY array, URL base, char *html) +{ + char * ptr = NULL; + char * aid; + char tmp[BUFSZ]; + char * top; + BOOLEAN debug = FALSE; + + ptr = top = strtok_r(html, CONTROL_TOKENS, &aid); + while (ptr != NULL) { + if (strncasecmp(ptr, "href", 4) == 0) { + ptr = strtok_r(NULL, CONTROL_TOKENS_PLUS, &aid); + if (ptr != NULL) { + memset(tmp, '\0', BUFSZ); + strncpy(tmp, ptr, BUFSZ-1); + } + } else if (strncasecmp(ptr, "meta", 4) == 0) { + /* */ + for (ptr = strtok_r(NULL, CONTROL_TOKENS, &aid); ptr != NULL; ptr = strtok_r(NULL, CONTROL_TOKENS, &aid)) { + if (strncasecmp(ptr, "content", 7) == 0) { + for (ptr = strtok_r(NULL, CONTROL_TOKENS, &aid); ptr != NULL; ptr = strtok_r(NULL, CONTROL_TOKENS, &aid)) { + if (__strcasestr(ptr, "; url=") != NULL || __strcasestr(ptr, ";url=") != NULL) { + ptr = strtok_r(NULL, CONTROL_TOKENS_QUOTES, &aid); + if (ptr != NULL) { + URL U = url_normalize(base, ptr); + url_set_redirect(U, TRUE); + if (debug) printf("1.) Adding: %s\n", url_get_absolute(U)); + __add_url(array, U); + } + } + } + } + } + } else if (strncasecmp(ptr, "img", 3) == 0) { + ptr = strtok_r(NULL, CONTROL_TOKENS, &aid); + if (ptr != NULL && aid != NULL) { + if (! strncasecmp(aid, "\"\"", 2)) { + // empty string, i.e., img src="" + continue; + } + if (! strncasecmp(ptr, "src", 3)) { + ptr = strtok_r(NULL, CONTROL_TOKENS_QUOTES, &aid); + if (ptr != NULL) { + if ( !strncasecmp(ptr, "data:image", 10) ) + continue; //VL issue #1 + URL U = url_normalize(base, ptr); + if (debug) printf("2.) Adding: %s\n", url_get_absolute(U)); + if (! endswith("+", url_get_absolute(U))) { + __add_url(array, U); + } + } + } else { + for (ptr = strtok_r(NULL, CONTROL_TOKENS, &aid); ptr != NULL; ptr = strtok_r(NULL, CONTROL_TOKENS, &aid)) { + if ((ptr != NULL) && (strncasecmp(ptr, "src", 3) == 0)) { + ptr = strtok_r(NULL, CONTROL_TOKENS_QUOTES, &aid); + if (ptr != NULL && strlen(ptr) > 1 && strncasecmp(ptr, "data:image", 10)) { //VL issue #1 + URL U = url_normalize(base, ptr); + if (debug) printf("3.) Adding: %s\n", url_get_absolute(U)); + __add_url(array, U); + } + } + } + } + } + } else if (strncasecmp(ptr, "link", 4) == 0) { + /* + + + + */ + BOOLEAN okay = FALSE; + char buf[2048]; //XXX: TEMP!!!!! make dynamic + for (ptr = strtok_r(NULL, CONTROL_TOKENS, &aid); ptr != NULL; ptr = strtok_r(NULL, CONTROL_TOKENS, &aid)) { + if (strncasecmp(ptr, "rel", 3) == 0) { + ptr = strtok_r(NULL, CONTROL_TOKENS_PLUS, &aid); + if (ptr == NULL) { + continue; + } + if (strncasecmp(ptr, "stylesheet", 10) == 0) { + okay = TRUE; + } + if (strncasecmp(ptr, "next", 4) == 0) { + okay = FALSE; + } + if (strncasecmp(ptr, "alternate", 9) == 0) { + okay = FALSE; + } + } + if (strncasecmp(ptr, "href", 4) == 0) { + ptr = strtok_r(NULL, CONTROL_TOKENS_QUOTES, &aid); + if (ptr != NULL) { + xstrncpy(buf, ptr, strlen(ptr)+1); + } + } + } + if (okay) { + URL U = url_normalize(base, buf); + if (debug) printf("4.) Adding: %s\n", url_get_absolute(U)); + __add_url(array, U); + } + } else if (strncasecmp(ptr, "script", 6) == 0) { + for (ptr = strtok_r(NULL, CONTROL_TOKENS, &aid); ptr != NULL; ptr = strtok_r(NULL, CONTROL_TOKENS, &aid)) { + if (strncasecmp(ptr, "src", 3) == 0) { + ptr = strtok_r(NULL, CONTROL_TOKENS_QUOTES, &aid); + if (ptr != NULL) { + if (startswith("+", ptr)) { + continue; // XXX: Kludge - probably an inline script + } + memset(tmp, 0, BUFSZ); + strncpy(tmp, ptr, BUFSZ-1); + URL U = url_normalize(base, tmp); + if (debug) printf("5.) Adding: %s\n", url_get_absolute(U)); + __add_url(array, U); + } + } + } + } else if (strncasecmp(ptr, "location.href", 13) == 0) { + ptr = strtok_r(NULL, CONTROL_TOKENS_PLUS, &aid); + if (ptr != NULL ) { + memset(tmp, '\0', BUFSZ); + strncpy(tmp, ptr, BUFSZ-1); + } + } else if (strncasecmp(ptr, "frame", 5) == 0) { + ptr = strtok_r(NULL, CONTROL_TOKENS, &aid); + while (ptr != NULL) { + if (strncasecmp(ptr, "src", 3) == 0) { + ptr = strtok_r(NULL, CONTROL_TOKENS_PLUS, &aid); + if (ptr != NULL) { + memset(tmp, '\0', BUFSZ); + strncpy(tmp, ptr, BUFSZ-1); + } + } + ptr = strtok_r(NULL, CONTROL_TOKENS, &aid); + } + } else if (strncasecmp(ptr, "background", 10) == 0) { + ptr = strtok_r(NULL, CONTROL_TOKENS_QUOTES, &aid); + if (ptr != NULL && strmatch("body", top)) { + memset(tmp, 0, BUFSZ); + strncpy(tmp, ptr, BUFSZ-1); + URL U = url_normalize(base, tmp); + if (debug) printf("6.) Adding: %s\n", url_get_absolute(U)); + __add_url(array, U); + } + } + ptr = strtok_r(NULL, CONTROL_TOKENS, &aid); + } +} + +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Chris Torek. + * + * This code was altered by Jeffrey Fulmer. The original is here: + * http://opensource.apple.com/source/Libc/Libc-391.4.1/string/FreeBSD/strcasestr.c + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +private char * +__strcasestr(const char *s, const char *find) +{ + char c, sc; + size_t len; + + if ((c = *find++) != 0) { + c = tolower((unsigned char)c); + len = strlen(find); + do { + do { + if ((sc = *s++) == 0) + return (NULL); + } while ((char)tolower((unsigned char)sc) != c); + } while (strncasecmp(s, find, len) != 0); + s--; + } + return ((char *)s); +} + +/** + * http://rosettacode.org/wiki/Strip_a_set_of_characters_from_a_string#C + */ +private char * +__xstrip(const char * str, const char *pat) +{ + int i = 0; + int tbl[128] = {0}; + while (*pat != '\0') + tbl[(int)*(pat++)] = 1; + + char *ret = xmalloc(strlen(str) + 1); + do { + if (!tbl[(int)*str]) + ret[i++] = *str; + } while (*(str++) != '\0'); + + return xrealloc(ret, i); +} + + diff --git a/siege-4.1.6/src/parser.h b/siege-4.1.6/src/parser.h new file mode 100644 index 0000000..da4f427 --- /dev/null +++ b/siege-4.1.6/src/parser.h @@ -0,0 +1,32 @@ +/** + * HTML Parser + * + * Copyright (C) 2015-2016 + * Jeffrey Fulmer - , et al. + * + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef PARSER_H +#define PARSER_H + +#include +#include + +BOOLEAN html_parser(ARRAY array, URL base, char *page); + +#endif/*PARSER_H*/ diff --git a/siege-4.1.6/src/perl.c b/siege-4.1.6/src/perl.c new file mode 100644 index 0000000..28ceb8b --- /dev/null +++ b/siege-4.1.6/src/perl.c @@ -0,0 +1,222 @@ +/** + * Perly functions + * Library: joedog + * + * Copyright (C) 2000-2007 by + * Jeffrey Fulmer - + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include +#include + +#define SPLITSZ 4096 + +/** + * not quite perl chomp, this function + * hacks the newline off the end of a + * string. + */ +char * +chomp(char *str) +{ + if(*str && str[strlen(str)-1]=='\n') str[strlen(str)-1] = 0; + return str; +} + +/** + * rtrim + */ +char * +rtrim(char *str) +{ + char *ptr; + int len; + + if (str == NULL) { + return NULL; + } + + for (ptr = str; *ptr && isspace((int)*ptr); ++ptr); + + len = strlen(str); + for (ptr = str + len - 1; ptr >= str && isspace((int)*ptr ); --ptr); + + ptr[1] = '\0'; + + return str; +} + +/** + * ltrim: trim white space off left of str + */ +char * +ltrim(char *str) +{ + char *ptr; + int len; + + if (str == NULL) { + return NULL; + } + + for (ptr = str; *ptr && isspace((int)*ptr); ++ptr); + + len = strlen(ptr); + memmove(str, ptr, len + 1); + + return str; +} + +/** + * trim: calls ltrim and rtrim + */ +char * +trim(char *str) +{ + char *ptr; + if (str == NULL) return NULL; + ptr = rtrim(str); + str = ltrim(ptr); + return str; +} + +int +valid(const char *s) +{ + int flag=0; + int i = 0; + + for(i = 0; i <= 255; i++){ + flag = flag || s[i]=='\0'; + } + + if(flag){ + return 1; + } else { + return 0; + } +} + +BOOLEAN +empty(const char *s) +{ + if(!s) return 1; + if(strlen(s) < 1) return 1; + + while ((ISSPACE(*s))) + s++; + return (*s == '\0'); +} + + +int +word_count(char pattern, char *s) +{ + int in_word_flag = 0; + int count = 0; + char *ptr; + + ptr = s; + while(*ptr){ + if((*ptr) != pattern){ + if(in_word_flag == 0) + count++; + in_word_flag = 1; + } else { + in_word_flag = 0; + } + ptr++; + } + return count; +} + +char ** +split(char pattern, char *s, int *n_words) +{ + char **words; + char *str0, *str1; + int i; + + *n_words = word_count(pattern, s); + if( *n_words == 0 ) + return NULL; + + words = xmalloc(*n_words * sizeof (*words)); + if(!words) + return NULL; + + str0 = s; + i = 0; + while(*str0){ + size_t len; + str1 = strchr(str0, pattern); + if(str1 != NULL){ + len = str1 - str0; + } else { + len = strlen(str0); + } + + /** + * if len is 0 then str0 and str1 match + * which means the string begins with a + * separator. we don't want to allocate + * memory for an empty string, we just want + * to increment the pointer. on 0 we decrement + * i since it will be incremented below... + */ + if(len == 0){ + i--; + } else { + words[i] = (char*)xmalloc(SPLITSZ); + memset(words[i], '\0', SPLITSZ); + memcpy(words[i], (char*)str0, SPLITSZ); + words[i][len] = '\0'; + } + + if(str1 != NULL){ + str0 = ++str1; + } else { + break; + } + i++; + } + return words; +} + +void +split_free(char **split, int length) +{ + int x; + for(x = 0; x < length; x ++){ + if( split[x] != NULL ){ + char *tmp = split[x]; + xfree(tmp); + } + } + free(split); + + return; +} diff --git a/siege-4.1.6/src/perl.h b/siege-4.1.6/src/perl.h new file mode 100644 index 0000000..839fba7 --- /dev/null +++ b/siege-4.1.6/src/perl.h @@ -0,0 +1,40 @@ +/** + * Perly functions + * Library: joedog + * + * Copyright (C) 2000-2007 by + * Jeffrey Fulmer - + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#ifndef PERL_H +#define PERL_H + +#include +#include + +char * chomp(char *str); +char * rtrim(char *str); +char * ltrim(char *str); +char * trim(char *str); +int word_count(char pattern, char *s); +char ** split( char pattern, char *s, int *n_words ); +void split_free(char **split, int length); +BOOLEAN empty(const char *s); + +#endif diff --git a/siege-4.1.6/src/response.c b/siege-4.1.6/src/response.c new file mode 100644 index 0000000..881d867 --- /dev/null +++ b/siege-4.1.6/src/response.c @@ -0,0 +1,685 @@ +/** + * HTTP Response Headers + * + * Copyright (C) 2016 + * Jeffrey Fulmer - , et al. + * Copyright (C) 1999 by + * Jeffrey Fulmer - . + * + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct RESPONSE_T +{ + HASH headers; + struct { + int www; + int proxy; + struct { + char *www; + char *proxy; + } realm; + struct { + char *www; + char *proxy; + } challenge; + struct { + TYPE www; + TYPE proxy; + } type; + } auth; + BOOLEAN cached; +}; + +size_t RESPONSESIZE = sizeof(struct RESPONSE_T); + +private char * __parse_pair(char **str); +private char * __dequote(char *str); +private int __int_value(RESPONSE this, char *key, int def); +private BOOLEAN __boolean_value(RESPONSE this, char *key, BOOLEAN def); + +RESPONSE +new_response() +{ + RESPONSE this; + this = xcalloc(RESPONSESIZE, 1); + this->headers = new_hash(); + this->auth.realm.www = NULL; + this->auth.challenge.www = NULL; + this->auth.realm.proxy = NULL; + this->auth.challenge.www = NULL; + return this; +} + +RESPONSE +response_destroy(RESPONSE this) +{ + if (this!=NULL) { + this->headers = hash_destroy(this->headers); + xfree(this->auth.realm.www); + xfree(this->auth.challenge.www); + xfree(this->auth.realm.proxy); + xfree(this->auth.challenge.proxy); + xfree(this); + this = NULL; + } + return this; +} + +BOOLEAN +response_set_code(RESPONSE this, char *line) +{ // we expect the start line: HTTP/1.0 200 OK + char *tmp = line; + char arr[32]; + + if (strncasecmp(line, "http", 4) == 0) { + int num = atoi(tmp+9); + if (num > 1) { + memset(arr, '\0', sizeof(arr)); + strncpy(arr, line, 8); + hash_add(this->headers, PROTOCOL, arr); + hash_add(this->headers, RESPONSE_CODE, line+9); + return TRUE; + } + } + return FALSE; +} + +int +response_get_code(RESPONSE this) +{ + if (this == NULL || this->headers == NULL || (char *)hash_get(this->headers, RESPONSE_CODE) == NULL) { + return 418; // I'm a teapot (RFC 2324) + } + return atoi((char *)hash_get(this->headers, RESPONSE_CODE)); +} + +char * +response_get_protocol(RESPONSE this) +{ + return ((char*)hash_get(this->headers, PROTOCOL) == NULL) ? "HTTP/1.1" : + (char*)hash_get(this->headers, PROTOCOL); +} + +int +response_success(RESPONSE this) +{ + if ((char *)hash_get(this->headers, RESPONSE_CODE) == NULL) { + return 0; + } + int code = atoi((char *)hash_get(this->headers, RESPONSE_CODE)); + return (code < 400 || code == 401 || code == 407) ? 1 : 0; +} + +int +response_failure(RESPONSE this) +{ + if ((char *)hash_get(this->headers, RESPONSE_CODE) == NULL) { + return 1; + } + int code = atoi((char *)hash_get(this->headers, RESPONSE_CODE)); + return (code >= 400 && code != 401 && code != 407) ? 1 : 0; +} + +void +response_set_from_cache(RESPONSE this, BOOLEAN cached) +{ + this->cached = cached; +} + +BOOLEAN +response_get_from_cache(RESPONSE this) +{ + return this->cached; +} + +BOOLEAN +response_set_content_type(RESPONSE this, char *line) { + char *type = NULL; + char *set = NULL; + char *aid = NULL; + char *ptr = NULL; + BOOLEAN res = FALSE; + + if (strstr(line, ";") != NULL) { + ptr = line+(strlen(CONTENT_TYPE)+2); + type = strtok_r(ptr, ";", &aid); + if (type != NULL) { + hash_add(this->headers, CONTENT_TYPE, type); + res = TRUE; + } + + /** + * We found a ';', do we have a charset? + */ + set = stristr(aid, "charset="); + if (set && strlen(set) > 8) { + hash_add(this->headers, CHARSET, set+8); + } + } else { + hash_add(this->headers, CONTENT_TYPE, line+(strlen(CONTENT_TYPE)+2)); + res = TRUE; + } + return res; +} + +char * +response_get_content_type(RESPONSE this) +{ + return ((char*)hash_get(this->headers, CONTENT_TYPE) == NULL) ? "unknown" : (char*)hash_get(this->headers, CONTENT_TYPE); +} + +char * +response_get_charset(RESPONSE this) +{ + if ((char*)hash_get(this->headers, CHARSET) == NULL) { + hash_add(this->headers, CHARSET, "iso-8859-1"); + } + return (char*)hash_get(this->headers, CHARSET); +} + +BOOLEAN +response_set_content_length(RESPONSE this, char *line) +{ // Expect Content-length: NUM + char *tmp = line; + if (strncasecmp(line, "content-length", strlen(CONTENT_LENGTH)) == 0) { + int num = atoi(tmp+(strlen(CONTENT_LENGTH)+2)); + if (num > 1) { + hash_add(this->headers, CONTENT_LENGTH, line+(strlen(CONTENT_LENGTH)+2)); + return TRUE; + } + } + return FALSE; +} + +int +response_get_content_length(RESPONSE this) +{ + return __int_value(this, CONTENT_LENGTH, 0); +} + +BOOLEAN +response_set_content_encoding(RESPONSE this, char *line) +{ + char *ptr = NULL; + char tmp[128]; + + if (strncasecmp(line, CONTENT_ENCODING, strlen(CONTENT_ENCODING)) == 0) { + // These should only be supported encodings since we have brakes in init.c + memset(tmp, '\0', sizeof(tmp)); + ptr = line+(strlen(CONTENT_ENCODING)+2); + if (strmatch(ptr, "gzip")) { + snprintf(tmp, sizeof(tmp), "%d", GZIP); + hash_add(this->headers, CONTENT_ENCODING, (void*)tmp); + return TRUE; + } + if (strmatch(ptr, "deflate")) { + snprintf(tmp, sizeof(tmp), "%d", DEFLATE); + hash_add(this->headers, CONTENT_ENCODING, (void*)tmp); + return TRUE; + } + } + return FALSE; +} + +HTTP_CE +response_get_content_encoding(RESPONSE this) +{ + return (HTTP_CE)__int_value(this, CONTENT_ENCODING, 0); +} + +BOOLEAN +response_set_transfer_encoding(RESPONSE this, char *line) +{ + char *ptr = NULL; + char tmp[128]; + + if (strncasecmp(line, TRANSFER_ENCODING, strlen(TRANSFER_ENCODING)) == 0) { + memset(tmp, '\0', sizeof(tmp)); + ptr = line+(strlen(TRANSFER_ENCODING)+2); + ptr = trim(ptr); + if (strmatch(ptr, "chunked")) { + snprintf(tmp, sizeof(tmp), "%d", CHUNKED); + } else if (strmatch(ptr, "trailer")) { + snprintf(tmp, sizeof(tmp), "%d", TRAILER); + } else { + snprintf(tmp, sizeof(tmp), "%d", NONE); + } + hash_add(this->headers, TRANSFER_ENCODING, (void*)tmp); + return TRUE; + } + return FALSE; +} + +HTTP_TE +response_get_transfer_encoding(RESPONSE this) +{ + return (HTTP_TE)__int_value(this, TRANSFER_ENCODING, NONE); +} + +BOOLEAN +response_set_location(RESPONSE this, char *line) +{ + int len = 0; + char *tmp = NULL; + + if (strncasecmp(line, LOCATION, strlen(LOCATION)) == 0) { + len = strlen(line); + tmp = xmalloc(len); + memset(tmp, '\0', len); + memmove(tmp, line+10, len-9); + tmp[len-10] = '\0'; + hash_add(this->headers, LOCATION, (void*)tmp); + hash_add(this->headers, REDIRECT, "true"); + xfree(tmp); + } + if (strncasecmp(line, CONTENT_LOCATION, strlen(CONTENT_LOCATION)) == 0) { + len = strlen(line); + tmp = xmalloc(len); + memset(tmp, '\0', len); + memmove(tmp, line+18, len-17); + tmp[len-18] = '\0'; + hash_add(this->headers, LOCATION, (void*)tmp); + hash_add(this->headers, REDIRECT, "true"); + xfree(tmp); + } + return __boolean_value(this, REDIRECT, FALSE); +} + +char * +response_get_location(RESPONSE this) +{ + return (char*)hash_get(this->headers, LOCATION); +} + +BOOLEAN +response_get_redirect(RESPONSE this) +{ + return __boolean_value(this, REDIRECT, FALSE); +} + +BOOLEAN +response_set_connection(RESPONSE this, char *line) +{ + char tmp[128]; + + if (strncasecmp(line, CONNECTION, strlen(CONNECTION)) == 0) { + memset(tmp, '\0', 128); + if (strncasecmp(line+12, "keep-alive", 10) == 0) { + snprintf(tmp, sizeof(tmp), "%d", KEEPALIVE); + } else { + snprintf(tmp, sizeof(tmp), "%d", CLOSE); + } + hash_add(this->headers, CONNECTION, tmp); + return TRUE; + } + return FALSE; +} + +HTTP_CONN +response_get_connection(RESPONSE this) +{ + return (HTTP_CONN)__int_value(this, CONNECTION, CLOSE); +} + +BOOLEAN +response_set_keepalive(RESPONSE this, char *line) +{ + char *tmp = ""; + char *option = ""; + char *value = ""; + char *newline = (char*)line; + BOOLEAN res = FALSE; + + while ((tmp = __parse_pair(&newline)) != NULL) { + option = tmp; + while (*tmp && !ISSPACE((int)*tmp) && !ISSEPARATOR(*tmp)) + tmp++; + *tmp++=0; + while (ISSPACE((int)*tmp) || ISSEPARATOR(*tmp)) + tmp++; + value = tmp; + while (*tmp) + tmp++; + if (!strncasecmp(option, "timeout", 7)) { + if (value == NULL){ + hash_add(this->headers, KEEPALIVE_TIMEOUT, "15"); + } else { + int num = atoi(value); + if (num > 0) { + hash_add(this->headers, KEEPALIVE_TIMEOUT, value); + } + } + res = TRUE; + } + if (!strncasecmp(option, "max", 3)) { + if (value == NULL){ + hash_add(this->headers, KEEPALIVE_MAX, "15"); + } else { + int num = atoi(value); + if (num > 0) { + hash_add(this->headers, KEEPALIVE_MAX, value); + } + } + res = TRUE; + } + } + return res; +} + +int +response_get_keepalive_timeout(RESPONSE this) +{ + return __int_value(this, KEEPALIVE_TIMEOUT, 15); +} + +int +response_get_keepalive_max(RESPONSE this) +{ + return __int_value(this, KEEPALIVE_MAX, 5); +} + +BOOLEAN +response_set_last_modified(RESPONSE this, char *line) +{ + int len = 0; + char *tmp = NULL; + + if (strncasecmp(line, LAST_MODIFIED, strlen(LAST_MODIFIED)) == 0) { + len = strlen(line); + tmp = xmalloc(len); + memset(tmp, '\0', len); + memcpy(tmp, line+15, len-14); + tmp[len-15] = '\0'; + hash_add(this->headers, LAST_MODIFIED, (void*)tmp); + xfree(tmp); + return TRUE; + } + return FALSE; +} + +char * +response_get_last_modified(RESPONSE this) +{ + return (char*)hash_get(this->headers, LAST_MODIFIED); +} + +BOOLEAN +response_set_etag(RESPONSE this, char *line) +{ + int len = 0; + char *tmp = NULL; + + if (strncasecmp(line, ETAG, strlen(ETAG)) == 0) { + len = strlen(line); + tmp = xmalloc(len); + memset(tmp, '\0', len); + memcpy(tmp, line+6, len-5); + tmp[len-6] = '\0'; + hash_add(this->headers, ETAG, (void*)__dequote(tmp)); + xfree(tmp); + return TRUE; + } + return FALSE; +} + +char * +response_get_etag(RESPONSE this) +{ + return (char*)hash_get(this->headers, ETAG); +} + +BOOLEAN +response_set_www_authenticate(RESPONSE this, char *line) +{ + char *tmp = ""; + char *option = ""; + char *value = ""; + char *newline = (char*)line; + + if (strncasecmp(line, WWW_AUTHENTICATE, strlen(WWW_AUTHENTICATE)) == 0) { + if (strncasecmp(line+18, "digest", 6) == 0) { + newline += 24; + this->auth.type.www = DIGEST; + this->auth.challenge.www = xstrdup(line+18); + } else if (strncasecmp(line+18, "ntlm", 4) == 0) { + newline += 22; + this->auth.type.www = NTLM; + this->auth.challenge.www = xstrdup(line+18); + } else { + /** + * XXX: If a server sends more than one www-authenticate header + * then we want to use one we've already parsed. + */ + if (this->auth.type.www != DIGEST && this->auth.type.www != NTLM) { + newline += 23; + this->auth.type.www = BASIC; + } + } + while ((tmp = __parse_pair(&newline)) != NULL) { + option = tmp; + while (*tmp && !ISSPACE((int)*tmp) && !ISSEPARATOR(*tmp)) + tmp++; + *tmp++='\0'; + while (ISSPACE((int)*tmp) || ISSEPARATOR(*tmp)) + tmp++; + value = tmp; + while (*tmp) + tmp++; + if (!strncasecmp(option, "realm", 5)) { + if(value != NULL){ + this->auth.realm.www = xstrdup(__dequote(value)); + // XXX: url_set_realm(U, __dequote(value)); + } else { + this->auth.realm.www = xstrdup(""); + } + } + } /* end of parse pairs */ + } + return TRUE; +} + +TYPE +response_get_www_auth_type(RESPONSE this) +{ + return this->auth.type.www; +} + +char * +response_get_www_auth_challenge(RESPONSE this) +{ + return this->auth.challenge.www; +} + +char * +response_get_www_auth_realm(RESPONSE this) +{ + return this->auth.realm.www; +} + +BOOLEAN +response_set_proxy_authenticate(RESPONSE this, char *line) +{ + char *tmp = ""; + char *option = "", *value = ""; + char *newline = (char*)line; + + if (strncasecmp(line, PROXY_AUTHENTICATE, strlen(PROXY_AUTHENTICATE)) == 0) { + if (strncasecmp(line+20, "digest", 6) == 0){ + newline += 26; + this->auth.type.proxy = DIGEST; + this->auth.challenge.proxy = xstrdup(line+20); + } else { + newline += 25; + this->auth.type.proxy = BASIC; + } + while ((tmp = __parse_pair(&newline)) != NULL){ + option = tmp; + while(*tmp && !ISSPACE((int)*tmp) && !ISSEPARATOR(*tmp)) + tmp++; + *tmp++='\0'; + while (ISSPACE((int)*tmp) || ISSEPARATOR(*tmp)) + tmp++; + value = tmp; + while(*tmp) + tmp++; + if (!strncasecmp(option, "realm", 5)) { + if (value != NULL) { + this->auth.realm.proxy = xstrdup(__dequote(value)); + } else { + this->auth.realm.proxy = xstrdup(""); + } + } + } /* end of parse pairs */ + } + return TRUE; +} + +TYPE +response_get_proxy_auth_type(RESPONSE this) +{ + return this->auth.type.proxy; +} + +char * +response_get_proxy_auth_challenge(RESPONSE this) +{ + return this->auth.challenge.proxy; +} + +char * +response_get_proxy_auth_realm(RESPONSE this) +{ + return this->auth.realm.proxy; +} + +private int +__int_value(RESPONSE this, char *key, int def) +{ + int num = -1; + + if ((char *)hash_get(this->headers, key) != NULL) { + num = atoi((char *)hash_get(this->headers, key)); + } + return (num > 0) ? num : def; +} + +private BOOLEAN +__boolean_value(RESPONSE this, char *key, BOOLEAN def) +{ + BOOLEAN res = def; + + char *b = (char *)hash_get(this->headers, key); + if (b == NULL) { + res = def; + } else if (strmatch(b, "true")) { + res = TRUE; + } else if (strmatch(b, "false")) { + res = FALSE; + } else { + res = def; + } + return res; +} + + +private char * +__parse_pair(char **str) +{ + int okay = 0; + char *p = *str; + char *pair = NULL; + + if (!str || !*str) return NULL; + /** + * strip the header label + */ + while (*p && *p != ' ') + p++; + + *p++=0; + if (!*p) { + *str = p; + return NULL; + } + + pair = p; + while (*p && *p != ';' && *p != ',') { + if (!*p) { + *str = p; + return NULL; + } + if (*p == '=') okay = 1; + p++; + } + *p++ = 0; + *str = p; + + return (okay) ? pair : NULL; +} + +private char * +__rquote(char *str) +{ + char *ptr; + int len; + + len = strlen(str); + for(ptr = str + len - 1; ptr >= str && ISQUOTE((int)*ptr ); --ptr); + + ptr[1] = '\0'; + + return str; +} + +private char * +__lquote(char *str) +{ + char *ptr; + int len; + + for(ptr = str; *ptr && ISQUOTE((int)*ptr); ++ptr); + + len = strlen(ptr); + memmove(str, ptr, len + 1); + + return str; +} + +private char * +__dequote(char *str) +{ + char *ptr; + ptr = __rquote(str); + str = __lquote(ptr); + return str; +} diff --git a/siege-4.1.6/src/response.h b/siege-4.1.6/src/response.h new file mode 100644 index 0000000..87916b5 --- /dev/null +++ b/siege-4.1.6/src/response.h @@ -0,0 +1,141 @@ +/** + * HTTP Response Headers + * + * Copyright (C) 2016 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef __RESPONSE_H +#define __RESPONSE_H + +#include +#include +#include +#include + +typedef enum { // HTTP connection + CLOSE = 1, + KEEPALIVE = 2, + METER = 4 +} HTTP_CONN; + +typedef enum { // transfer-encoding + NONE = 1, + CHUNKED = 2, + TRAILER = 4 +} HTTP_TE; + +typedef enum { // content-encoding + COMPRESS = 1, + DEFLATE = 2, + GZIP = 4, + BZIP2 = 8 +} HTTP_CE; + +#define ACCEPT_RANGES "accept-ranges" +#define CACHE_CONTROL "cache-control" +#define CHARSET "charset" +#define CONNECTION "connection" +#define CONTENT_DISPOSITION "content-disposition" +#define CONTENT_ENCODING "content-encoding" +#define CONTENT_LENGTH "content-length" +#define CONTENT_TYPE "content-type" +#define CONTENT_LOCATION "content-location" +#define ETAG "etag" +#define EXPIRES "expires" +#define KEEPALIVE_MAX "keepalive-max" +#define KEEPALIVE_TIMEOUT "keepalive-timeout" +#define LAST_MODIFIED "last-modified" +#define LOCATION "location" +#define PRAGMA "pragma" +#define PROTOCOL "protocol" +#define PROXY_AUTHENTICATE "proxy-authenticate" +#define PROXY_CONNECTION "proxy-connection" +#define REFRESH "refresh" +#define REDIRECT "redirect" +#define RESPONSE_CODE "response-code" +#define SET_COOKIE "set-cookie" +#define TRANSFER_ENCODING "transfer-encoding" +#define WWW_AUTHENTICATE "www-authenticate" + +/** + * Response object + */ +typedef struct RESPONSE_T *RESPONSE; + +/** + * For memory allocation; URLSIZE + * provides the object size + */ +extern size_t RESPONSESIZE; + + +RESPONSE new_response(); +RESPONSE response_destroy(RESPONSE this); + +BOOLEAN response_set_code(RESPONSE this, char *line); +int response_get_code(RESPONSE this); +char * response_get_protocol(RESPONSE this); + +void response_set_from_cache(RESPONSE this, BOOLEAN cached); +BOOLEAN response_get_from_cache(RESPONSE this); + +int response_success(RESPONSE this); +int response_failure(RESPONSE this); + +BOOLEAN response_set_content_type(RESPONSE this, char *line); +char * response_get_content_type(RESPONSE this); +char * response_get_charset(RESPONSE this); + +BOOLEAN response_set_content_length(RESPONSE this, char *line); +int response_get_content_length(RESPONSE this); + +BOOLEAN response_set_connection(RESPONSE this, char *line); +HTTP_CONN response_get_connection(RESPONSE this); + +BOOLEAN response_set_keepalive(RESPONSE this, char *line); +int response_get_keepalive_timeout(RESPONSE this); +int response_get_keepalive_max(RESPONSE this); + +BOOLEAN response_set_location(RESPONSE this, char *line); +char * response_get_location(RESPONSE this); +BOOLEAN response_get_redirect(RESPONSE this); + +BOOLEAN response_set_last_modified(RESPONSE this, char *line); +char * response_get_last_modified(RESPONSE this); + +BOOLEAN response_set_etag(RESPONSE this, char *line); +char * response_get_etag(RESPONSE this); + +BOOLEAN response_set_content_encoding(RESPONSE this, char *line); +HTTP_CE response_get_content_encoding(RESPONSE this); + +BOOLEAN response_set_transfer_encoding(RESPONSE this, char *line); +HTTP_TE response_get_transfer_encoding(RESPONSE this); + +BOOLEAN response_set_www_authenticate(RESPONSE this, char *line); +TYPE response_get_www_auth_type(RESPONSE this); +char * response_get_www_auth_challenge(RESPONSE this); +char * response_get_www_auth_realm(RESPONSE this); + +BOOLEAN response_set_proxy_authenticate(RESPONSE this, char *line); +TYPE response_get_proxy_auth_type(RESPONSE this); +char * response_get_proxy_auth_challenge(RESPONSE this); +char * response_get_proxy_auth_realm(RESPONSE this); + +#endif/*__RESPONSE_H*/ diff --git a/siege-4.1.6/src/setup.h b/siege-4.1.6/src/setup.h new file mode 100644 index 0000000..9a397ca --- /dev/null +++ b/siege-4.1.6/src/setup.h @@ -0,0 +1,234 @@ +/** + * Package header + * + * Copyright (C) 2000-2013 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#ifndef SETUP_H +#define SETUP_H + +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_LIMITS_H +# include +#endif/*HAVE_LIMITS_H*/ + +#if HAVE_SYS_WAIT_H +# include +#endif + +#ifndef WEXITSTATUS +# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) +#endif + +#ifndef WIFEXITED +# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) +#endif + +#ifdef HAVE_UNISTD_H +# include +#endif/*HAVE_UNISTD_H*/ + +#ifdef STDC_HEADERS +# include +#else +# ifndef HAVE_STRCHR +# define strchr index +# define strrchr rindex +# endif +char *strchr (), *strrchr (); +# ifndef HAVE_MEMCPY +# define memcpy(d, s, n) bcopy ((s), (d), (n)) +# define memmove(d, s, n) bcopy ((s), (d), (n)) +# endif +#endif + +#ifdef HAVE_SYS_TIMES_H +# include +#endif/*HAVE_SYS_TIMES_H*/ + +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif/*TIME_WITH_SYS_TIME*/ + +#if HAVE_ERRNO_H +# include +#endif /* HAVE_ERRNO_H */ + +#ifndef PTHREAD_CREATE_JOINABLE +# define PTHREAD_CREATE_JOINABLE 0 +#endif /*PTHREAD_CREATE_JOINABLE*/ +#ifndef PTHREAD_CREATE_DETACHED +# define PTHREAD_CREATE_DETACHED 1 +#endif /*PTHREAD_CREATE_DETACHED*/ + + +#ifndef HAVE_STRCASECMP +int strcasecmp(); +#endif +#ifndef HAVE_STRNCASECMP +int strncasecmp(); +#endif +#ifndef HAVE_STRNCMP +int strncmp(); +#endif +#ifndef HAVE_STRLEN +int strlen(); +#endif + +#include +#include +#include +#include +#include + +#define MXCHLD 1024 +#define MSG_NOERROR 010000 + +#define F_CONNECTING 1 +#define F_READING 2 +#define F_DONE 4 + +#define MAXREPS 10301062 + +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif + +#ifndef INT_MIN +# define INT_MIN (~0 << (sizeof (int) * CHAR_BIT - 1)) +#endif +#ifndef INT_MAX +# define INT_MAX (~0 - INT_MIN) +#endif + +typedef struct { + int index; + char **line; +} LINES; + +void display_help(); +void display_version(BOOLEAN b); + +/** + * configuration struct; + * NOTE: this data is writeable ONLY during + * the configuration step before any threads + * are spawned. + */ +struct CONFIG +{ + BOOLEAN logging; /* boolean, log transactions to log file */ + BOOLEAN shlog; /* show log file configuration directive. */ + int limit; /* Limits the thread count to int */ + char *url; /* URL for the single hit invocation. */ + char logfile[4096]; /* alternative logfile defined in siegerc */ + BOOLEAN verbose; /* boolean, verbose output to screen */ + BOOLEAN quiet; /* boolean, turn off all output to screen */ + BOOLEAN parser; /* boolean, turn on/off the HTML parser */ + BOOLEAN csv; /* boolean, display verbose output in CSV */ + BOOLEAN fullurl; /* boolean, display full url in verbose */ + BOOLEAN display; /* boolean, display the thread id verbose */ + BOOLEAN config; /* boolean, prints the configuration */ + BOOLEAN color; /* boolean, true for color, false for not */ + int cusers; /* default concurrent users value. */ + float delay; /* range for random time delay, see -d */ + int timeout; /* socket connection timeout value, def:10 */ + BOOLEAN bench; /* signifies a benchmarking run, no delay */ + BOOLEAN internet; /* use random URL selection if TRUE */ + BOOLEAN timestamp; /* timestamp the output */ + int time; /* length of the siege in hrs, mins, secs */ + int secs; /* time value for the lenght of the siege */ + int reps; /* reps to run the test, default infinite */ + char file[255]; /* urls.txt file, default in joepath.h */ + int length; /* length of the urls array, made global */ + LINES * nomap; /* list of hosts to not follow */ + BOOLEAN debug; /* boolean, undocumented debug command */ + BOOLEAN chunked; /* boolean, accept chunked encoding */ + BOOLEAN unique; /* create unique files for upload */ + BOOLEAN get; /* get header information for debugging */ + BOOLEAN print; /* get header and page for debugging */ + BOOLEAN mark; /* signifies a log file mark req. */ + char *markstr; /* user defined string value to mark file */ + int protocol; /* 0=HTTP/1.0; 1=HTTP/1.1 */ + COOKIES cookies; /* cookies */ + char uagent[256]; /* user defined User-Agent string. */ + char encoding[256]; /* user defined Accept-Encoding string. */ + char conttype[256]; /* user defined default content type. */ + int bids; /* W & P authorization bids before failure */ + AUTH auth; + BOOLEAN keepalive; /* boolean, connection keep-alive value */ + int signaled; /* timed based testing notification bool. */ + char extra[2048]; /* extra http request headers */ + #if 0 + struct { + BOOLEAN required; /* boolean, TRUE == use a proxy server. */ + char *hostname; /* hostname for the proxy server. */ + int port; /* port number for proxysrv */ + char *encode; /* base64 encoded username and password */ + } proxy; + #endif + BOOLEAN login; /* boolean, client must login first. */ + char *loginurl; /* XXX: deprecated the initial login URL */ + ARRAY lurl; + int failures; /* number of failed attempts before abort. */ + int failed; /* total number of socket failures. */ + BOOLEAN escape; /* boolean, TRUE == url-escaping */ + BOOLEAN expire; /* boolean, TRUE == expire cookies ea. run */ + BOOLEAN follow; /* boolean, TRUE == follow 302 */ + BOOLEAN zero_ok; /* boolean, TRUE == zero bytes data is OK. */ + BOOLEAN spinner; /* boolean, TRUE == spin, FALSE not so much*/ + BOOLEAN cache; /* boolean, TRUE == cache revalidate */ + char rc[256]; /* filename of SIEGERC file */ + int ssl_timeout; /* SSL session timeout */ + char *ssl_cert; /* PEM certificate file for client auth */ + char *ssl_key; /* PEM private key file for client auth */ + char *ssl_ciphers; /* SSL chiphers to use : delimited */ + METHOD method; /* HTTP method for --get requests */ + BOOLEAN json_output; /* boolean, TRUE == print stats in json */ + pthread_cond_t cond; + pthread_mutex_t lock; +}; + + +#if INTERN +# define EXTERN /* */ +#else +# define EXTERN extern +#endif + +EXTERN struct CONFIG my; + +#endif /* SETUP_H */ diff --git a/siege-4.1.6/src/siege b/siege-4.1.6/src/siege new file mode 100644 index 0000000000000000000000000000000000000000..ac3bc551e28841a0bb98f4703c1e10a315066c88 GIT binary patch literal 665784 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 O>~kDu>OTP`Vu<)WRro%0|2B^Mg)Q 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%0DK6&>10NZV;@4i{(ydLg`OeXGyWtflN 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%0AqV>dn zAAyLy9tIa?4-!w4<CgZW#rWqa%LXjI3iAN}N9pYM zhP2OZlN-f%-!=ALuR0tJI@;k1pE$}alkux6;n)3IBFQCb?C`N+c_5FczSV6sd|ML zLY{VhjtpMdLc0VaNR$!C>2g6y6NsYip%h3m>qMrHpzc`9KM+lvV!;BFyNf#Ur;@+} zF;C*Q(a^tujYs+uwDorTq;c(xha@mTO!K!B1H=Op}W0hsB%tE+1- zoal)BEod0i8Y0gNhw#TL%*59BQ1Vzmrhf-E^d!oCh8A{GRFriC&Rb(Fbt?5=_G-tU zDk4&3sY$~&aU5t8%uRUX<}4jy9F_WBMV+F~LI+%t$Hx_;#71NMt>qDXLmVGQ6O)To zG=Wq=KSLFW%ICeE3Q;*Fy|Y3~c6r!-hXWcX=*VPFl|C6P=94?4i;KrzbO0EltGtIy zz-7o{Ly~KwY6LcgfT(pkwEZ&d1o z3U4&az#|e%)1oteaw0&(6S5xCW^X<6tYrU;Gh#Lrij)V87|>S)+QmgT%%`3Dj9t(m zP+0XD#R_X|R``}mGhP?g&!i-FzQIy*##!TXVGljYT;Wcg3^m%twanvqri9?MT%~F< zvbAHhqSGindvP^N&NRhg%Bw~*Xk*GPLN>nzWb#>vW7g(o)ZDjiak20gPIboqme#nn zjN(S^w$2Tu^UkEC^leiquX1~#!emOI742scho49Kh$jd(o+~TDjb#F3dk_F6Fc~4- zaV7)5fp@&$08YY_eBfdc!77Eu@Zl2`BuSh+K@<$+|4@J!k;C!^FDo*di9f7(2yM&U zGJ>!J!N^P=9Uh;c{0MH)B!NpqqT};Hio|v{6+1@OPf19*3`;>wfcLgwbDYVKc+W{3 z_(+KilD*!5`$3fqUSd7f82DoMfP}~PS6{K0xldRS&N>rSq-()cVU%wd+l@ZWCkawi zKab-c>boW*BzX(*{;c*2txF9;6AQjn-!_jLk85-yC_|$*bs@eUKrlAiQ*F#h_ReQw z>WrR&Vo=S95?9;jF~>-Zjse}CP0mZzRhi|f)(6}069~cWWD+?c)8uSu0VHra9<5tN z&AP?lHLT_R3WZFp!0DS`Y2|b^L#&dMxsXH#m{2W|nI&m~m#v5_c+C}sXAng$EQ!2C zQ!<2de6?-24mKF-rjrmQ2__{4(Q#-_r1^ff2SQ36AO`p(&Gw(&WXH@y#f`d3!f}pa z%Z>=jyca}Mog!Gtt-!mQdMj(5d$R&xQ8sK_DKCep1D+nY{`d9naf|vQSt7Fft5!nz zy8UY9MVtWZ7b$2sFEO5}o}5<=S}2J6_D)u>GOf{R8XIpB6`?m@4%vk?r}LKX40>}_ z$Z1Wdl^z1olXmuQ8?!$d$3u+sHl^S&?o9^4^!1eYw=H|Q7IzX6hV|yL`CiUH_U2N` zdkeT@I0f^pKaHBtX{^;S1M$z|sW7F8!~+<|{p=B7mb= zNVV0+dWR0doUJD~qF2%YlMq|^&Em&;y$qSLjnYbXeJ2D3v^NV~jim^-o_aHcv0Igb zSZ{n9xl%g)D~NihQDt_wWE_<5Gb>%y9SS97d$a8i#zP<4)biGpOy>!m`{(CDFN<1< zkG4J?Sd^_;8hQ;;#iG?a*gPr+)Rmv0>M312ixFLu>jzN*JQ3Oz94<9tlta%C@#AQ( zdD5a6tg*>F#w!BxAW$JDDuJFWktk%$<`?&q8wf&dfgO@9B!@e=8F?KY0LWnPm zjMg%*X)JA9%MfuDuxwew!lvchBi1mA*$Txyt#T$0Bh}pfp)Aie2A<~dmiD36Nu;>^ zWD$e{EwbG5?$KS31TXeKX1WasxrSGux_wP?%b+s@b6iREa~cNge+^fLzV*k=1Gw|u zaKkS410ZmJ{^L~2t5dWds8D&N)U>ey)v4-2IuI~1P(X*lm?Nxy>de-M&EwK}f|j4Wm#yGcrUN zH;8>_P3Pms+;mV1F>L}=;@#>j?K>Rp+1mI2EDd$VQBhY))wK?DP{upF-2U@_IPYLr zAkRD4Hvocvp3XbCEfDWOPutD!TeAtFKl_({IVJQrcrzz4RMN=5fEsdCil4p+xl_&P zDviqQ7p?CP zyQ&AffC|sx8Y2&B`8QmF@OB&DqUJzryCr@UTiT=1^#Yvp9a*FQLpE8NJMG}Gb9{2L z`=4Z*1w;evUu(Y0&$->oF2CdLIqts2uD&;6)I$XiI*SnA|2Mh`&2r=~Li1wfczgOa z=u}_i7ChcAzXOx*oHt;hfq(w}R|OskYwWiUUc()QAG;^5eO37b%zIR+sg3pZnj(6< zwPS9j&lCtO&lu5v1p;#G9dFkwfW3Qg9>3_tmlNk%b4sJB?{;D*(8rg=Y8GvIWjJAe z%S(8@+gDPWFG7wHgBpM2R!xxR2!JyjqXUwWdvud^gD6OF8%+mfP{*Q` zzCwV*=M~44t{ntA&v@bxH<9`|z2K3M!yD?~B<2vi(vdDh;jnFBB?&3y#uG}=O3Fun zG{egUk=%?}~^4ZLFS`w*aClNQszh@1WCGdnZsD{^9or`|6a|6JsH?U$yr3RQu$3 z_eh>X_jtHSDWJ{1IwT9^N9?J?-^IXEbRQ{E-qH*Xjv~RLJCFH-mwIRDpNCyCLIip! zOfR^ad?yP(ZbB3#o$f`@{m_A3yNG)LM}ydxFvs$psx#XVcR%O>FoI5R(hi4*5barK z6pn(aFUN7G+Y7pbTiU>4v?d+EUFRU~VCsF3{sW;uY zj8)QQB}AfD`c4FDrSD)3vbWsTV1dFTQLD{Ynpyk>Dnv0!!(rL1!mG6AOr>XO4M1W6 z09WewgL#V2Qmd7ZXg=LqY28vL_|}qmL3Sw2*~}_sHdLq6jVk6SNDbcJ(u@)_jUh{G z%(pz#bmmis=^n({C9{WifgN&@>5P$2Ga)D~U9K9QbyCFE;FeL$R{SqkMQi`(s+BbX zm|Z2S;4dwk*YVFPG#9MQVh^S)I|WA2yFb041l-FMB*S;d@|}r=xe>?5yP%Gba~`{o ziygd=^X<>ag?8xUT~FS}#g2$BUP>2z%+M1cXezlHuzF<_LjkQF!V&l+E045hu~ z3~l*bLSNK8oz45z)3?j-)`4B`!ycUh&sWEnmFlXdJ@KdGKO;{v{xXbB2!@gIe_#m|>;fcKhc@vZFP9j9)&T;53o%1#T@FQt(wSf)Q1N>u{_#Dr!S* zs*Oh;=jb4IQwm{a(F7kHp6qV7R^FO;C(G2qyVZQh^tghG2V6z;YwL7chm?-|ncH$< z_;2t1UM&-UgEAAnjHUvDJFHyY6YYHEFU$u|I&QfQp>{UE}!h~x7sJo z{Uem!z_PTSsBKa-q`M5DgcAPUKsVeZz_`BsF~%%YFHmXWv-|?ndr_+=W)ScRx9=Dk zR-DovGptWgb_?Bxk)HX>I05)q`~LXn@ccsn!13KVJo?jlG->!@V;GJbL2vSm2K3nW zp=Ey99S$p%VLj#0K7Is<)W}%KDjc}$HQMTwf$xw6UG+y4TfjVNn z;vVc_grSU5)-}R@TF2Y3pholg?%wXnkEqgmv3qjRYPZ#k!(-J{N6lk6w6FJ?$Li?y z@zG(s)leiil9e^*ps==m+8tDIVVdqi%5(k^wo}Aw7bsayf^HCEh7cbmBsaJ38Hx}G zF&s&fosFF(e2RjlC?40et|Tt*CW3tq&}-_^1{Ct64+B{A_85vo6EDI(H2(rl8<3mN z;pAcQ{ia&q+}K#JZ#-DvsHxZOCQqt~X7hMuqUaQ;x?rR=GPCDW!x00dKobsd+mr9x zLubX}1P#U^+$XBqI()xK>R-P*|!)#|Z^vLQDXfz!C-{uY04+{zu)Zw zmX5}RXvB*ZF*Bn06`;ekgc2idsXCl6ye{D`k?5Zr>Dpg^SX(2F35t6um!SHPUXYj$ z;ClB5fXe_57^U%IEaE39fMql2m;+=3*BaBYgPq&napHnCyp>6W;!=LPs-BsM#T?P{ z4}VZ@0X+~7!X;ooMP*}Rv7g!vphVKGTuFEF zEzq}8;)z;@R&YG5@)sNr7$Y?!LIbe~eP+h${R)1NlIA1EzNA<_fb2G%iSvEC@%Q&n zXlrSGVG${oABxn&=rZOMQ}l|b1(<@aaE1zfnZL<8T~D=}Y|J3ZzHo*1ldY0FjJjO@L%!}}r)IY0P?JkoGsig0U9k=K_aKk`i*C4dBwEKdhM zz&!v05&fFh*JF~6Pa0nHm|ixIJuUE;-~59y?zWTW5{3U%1i#QxMs0vi^~RwNw01z3 zbQ&7~EjsbfgF0PmeYDUrjZ4#S-_4LlV=KF9)>=Vdg?1o+lt4M%0?=z)P|t&x=!dd( z`X0WiIw9veUXFD{I9m-J;JKRC)=nGCwOaM`Jyn90)0KLY;YbKCc*&d8I&Mi&1(*`4 zPiR*3P49r@+t5KE7)YG+E1`MvD=Z%p8j! z&XK;TFsHTOe7U>b+1`g4o3Ex#xDmQH=T~9$MD6VDNjOV*Xa)^W@vec}SiV)t>WULJ z?iOy!;qyQ5yxu>8O7g9=5~{I>X9SqdHk56)EAGvzFIMLc&yY`;*dnGV2U-P3UZ7-M zf?&7IpV;IpK&m!<1Iu*~FJ;1JH#|pKMa%E}_8ei5`%aA4bPtri#n;fsxolXwnmJGn z?`lvAf77%#c|)6Y((i}YY9)%3AyHM8xUy>OYAP61M%>P+CcwV-(k#~Wu_i1b*W@o1 zzVkC_pNlmy&ok6bFA}Jt4fdU1WJA+35ssz}9oq=51MZ){Q2*%TDj9mS_%C}o>+y+V zqv4H2V>I6iYn2yO8=~FLvi`mEJOb~98QL65Jcy|VGwCATJ%49@DeB8ftNa- z7s}_H$JpEs#Rb;0NujyH*pGsElG=!`s@^5awjOKB_>Z0|m7X@QsS<4Lcpv?nuTT=v z{UGkrggQ7jFIS-Bh;`o^|-;)^hGat|{N} z<=BeBZqkmtlSbs1i=%r3;I$*7<~6R zQ&a@u;t_p&>)HjQq!Wi|-F6Ryn-x~nr8Y-88KenmH~)!n)VihJq4OLDDpsP)RefL! z2~HbcPQyE2hh=Kv(w><-1^^la*NDt`eUJ*9qAxD(f2MM|v|nSNqaAI;8J@2uv@{~G zcu4~V*u7l4TsoRrn&{bsVU>3sRo)i)mFmGuJD#pF7Y>rJs+=}5o4OeV4No3)@YmL| z`^zH<4PbSWEVyaQ1Vzv_W6V)#Q0@cnmgN%qx*`_4q11~offpPKAr%P*nkPj;&B`;7 zGZM;7s6angDUKW?VSP)7Xapsp=+QKdhMBXY(SyxB*7OQ0E_)fOMaq(xs2BG8L4qgL z7`@Txu{>O#adt_Z-?IN~rj?~-@q!SBO2RSJ)A7x~Nle8iMbspJ_44Y(Qm`o1IeKNf zE2>`h!Yfy4Wy)t?(L{|UV_`CKzVz`kQ=F>vyme+p4XHZ>hqf$^WgN5hFODA$5R(D7 zj?C39&NsS(dUIZAC=BM-JumKeiNbeg&AblRD+QJUpiBXhDF8BM?#ht!On#^pj`Y-H zk*J?alo~jR6!Cx6bM(`tv&!qQy`rXiR=vVvc-iDXoO0daMqTSWb4v6BFZ0GcMFPqV zxQcYZfCJ&>f`z4QEvd;6%Lt(WIv;s8Yfc1gxFjVnPPWYO2$ioUXVaffmwyo%z^6Z* zp1QxzpPILDgE(*L*Lj6`{qp&l2y}OvUe*d~=KRVGrv4cd{1O{j4xg@R*RQ+4Q~Gx; z$E>JE_)D^3ppb>y+k(RyvUV~fkaEKZqgJUfjA<5Vvo?IT)!LWc`F%Ez#kE9pSreC3 z$50--zW+&{@C2rz#MqXWyzGU8e=;KcQj6WKEk~Tx@Uo&M>LUAys6G~S_+zHfi=h^n zyfQXzCKV3*jS%tQ@XBoD$}gR1#&p@Sz$xmI@V3}7F)DNPRBnh@dKs~O5C?B2X_SU* zS3HioVc$x$aCwbYk*uxxO(Gcg0wb+4!a4vw3Q|~E*iZa(bg+@N6x*IN%62rSV1|+D z24A|};BPvHXb*2=bsLZ*8~(`}}kXV`XA_lX~+ znDDST23jwjra+;sx6i6IuiO%RW`DZSJbm(eC_HOoRAB zRE))E7AZNCI+e6TG7ohYMifGyV>ufEj%+IBA;vr*Y!d>6tf_DGQ{>t0j45xgTZ-Ri z8w7joeg+GoGq}6=Zp}y}%4bFQa{0XGnics--99g!8e#6KX~X3*C67U_^@N~|W+?u1 zV#7>~75g+6M`i4s=NeMhDw-`Q2#;f27FZ5WI=8cXyap9eGO_%N=xl@Q@u%FPnq5e- zh6%suVZOC=G9cW|yWtF*Z=$IO#fc&}ZFGnY>U-EDt<@J8lf;3WIw&_z+_X`V<2#ya zbfD@M_I>NX#ENFdz;ak~?(}8FK^omf0k>t%5zCiP7sdkyw=eSi)*C$+Gs;cPC-l32 zj_NbCN^>!$?sq!U%$ViloW3{ia#!LYj~;d!hn@xGe@y0Znk2eH4@}g1u(5~)szTXa zOacq^J7mx55G7;AACJ6kfdGq>4j0&}EKh$~aZk4Hnve~(ZOyUtO5h5HD9+XF(2a}b z^N|4aD^waO(2?BM=^keTg$$FEQFVCJ?7Ur$Wri*Imt;=A$T|Rr6Cp2J4y4;dR-`15 zXTiK@YP3%)7Pdkkq@N4j8qJ04oG?piQE*}?>&i`}k?WC%F-4qO<_E#HEhR5#O*I>b z?3SE+yt63^aO&8?j#youop{DEX3C_C&NGF6>15k9uzJD`FXwtw+C!Opj+f7Wqpj~+ z2Rlv<7nGZt+zI^A;FOQDUXP@mQS^m_gMqtpaA{vI*@O1llZSMu$ zt$Q!(6lMS}0Mb#lL(CIEMlK`L(4{(~3+7iv;dDSrdzqabkcT_q-Eqn-;K`-NDdG%9 zPRFsy!tzKkY7Ij-MK`#{C=h3qP3wlv9dJ=NnHY|tiRKNr-ybo#GdfQ!|GjF131k5Y z4MA7({vX;$guFS1m)Vy}J9}VN_EjqA`)u5bdL0N{lzvsQU=rX0LKmro zl%Z`FVW$ofkoET`NJS4SUR2=vw#;=+v0d1VR$PA?>BaI|BaGOcrzFBd#|`qJ%xg1K zST>rP*+dSg0RQE}kd%iXDUVIHa2_}voTNODT3H|YkliH#Yu>H)qJih#!Bk+&vxsFG z5S>J}H0yYmCabXQQCyc7lw3Enx-z}Pqm$jk0}400Y^{29z*%Y{8IME$X1ohha+=cd z3bLcY;vHL(3%;GvlK6fp6A)^lc@|P|&gHT{bvWqwRRqRTkjTR(!U6^gY2w%Y=U8p` zs5K8nmcwCrdnK{sx0?rt2fN!)?$u%Ygo9@lV#^=w7hfDc|8why6FN29B*d4XS6a>v zckCJSlty04LPd^P$36ku`VG-!(XdgB4eK;Hq6BKo2m4xLNwqBKv3`Juy4{2(I+%>@ z?JNN-t_ahRDaVpY{V34Ef`r5(Aq^tdF=lZS9hR*ov$v&o;FS48&ITbmi^a zPP6`#U;p{tJM(qD{_VSW_fJ==Sy?g(B#BmbDefrHV!l#I_HE+otqNTsk=!DGZK%e5 zb-L1k?w8jvi zuZhaeLJ~m{QIu@2jM1it0Ek!kWpwpmGhe3(m0s?)Pu`e{7o!QZjD*WL)z(HmR-;VN zZxP_zANve(G;e{>DdDU+nzb8YDciY$eF?I(C|sRPg{zg-rzP8Tzoa|{YBGShKt!G| z3qbep3_-MSuvL@msZqsm+lH6B#|8*~6PxgFxeYp=dI%Q;p1268i*Y=flpR$E@S#SW z_DjqBuUp8?w&WJvId;l);|Gn+%SZV_4r+iUy?of%oLp_*Qs@!R0UCUC`53=VqVO7h zTJihgD2QGk?EX;1C;5)@UA#DGpS(6jnC-o%USZ-t;M|XaO~vqOh_e*2EC3gP?&1+Z zL$W1!P&+^&B4qT2y+|2mWvbVwzpU3bPCr#)wBtlwtLo|c#-r+cOpV9xvR#UHme7Tp z9nCI^6RJrdf_d~JiiQ%qkTWEwXeu4`(7h&mv(o_IBe7Hep8PQ1Q|cyY0+;Q6m4qA5 zU+h%NF|nLNcQ7Z(jq$GbwcR@T(01b_kWo>yC>*DthFv@>qojY06RZFS+o|aAE$%fd zz1I|z4K;n6N=>@_9Ws#Q_J;Or@bItu$#AQ3db**OZMUbVn+pD~h(NQGPM0)U6gE5j`y}k&XuV)IMJ9|83!BCm z4gOs{Gfz%*(nc+6lE>zo=ca_z@*^qa<+EkF=`xs$fgcfjY3rDink5kZuQSy1Bp9ix z3oy%7J9O(Ot%qE!f{-w~juz{ZRJQ=$^8z-(*OCSu$2%Y}tR>~IUeY0SmT#j;DpmEJ zyG=B)`XzxrN)7WP1tusvm-5Nzh}vqU(`ldVY~i4G`u zME*4$>HGFY7ik2uENk~kF*1~(uR1@p!}6pK&yzOP{WXtTK>OTDcTD-z`2lx?Rh}}2 z<^F|edI|`F%bQOm_a_OW7lSqvz)KO<_=%dPFn`5`;blToP zck7v+)+u-VOjMWwx^Z%2H0u-#;VRZXl}jWzF2hCiEFBM>XINUtR>sKnm@)=FD(-V} ze6B3>7kbBKOB$rNxf*wocu_k=1demgAWA*Yp0o3Bq5L296dC-3M2o>ce`vNl`>l4n`Lfm7!+eQ5-jYd3%k52XO#<4^ zYAloDR)qHS)om0d>@%;R>1|WXrd^2-g?onw^NH&F6l`8A_pki)$@I3m{?go86-lMon=BN!eIo*8<-ht$*+3G0Dq*l` zbh>ApQZVjjVf^I}KNNv`&b6u5-wbNi1tSncE&f$?Lu+RA>7-G=Z(}1ifeJ+BImzC_ zl+)woGp$b%{4BBF{gJ}_Fh=9E+kE^GmllP}apEm4H2mj!{JC7=5~9!_hUb2qI^%z_ z`vWH9HpYuuI{)~a_04q?slPnd4u>GqE%`kYxc_~9NcF46yc2B)#KkyuOxL0tir9{X z6%eI0(-uW>;#MB6SM`F<3+`3vUe$rLBG&f7rm7FwzN0RtVs-yvHM=-x0jvyALsnLc zf}=-(Ge(!JRqmeUYHUu$N)h2jkAt5IXZ^40N z`_5#$=iY6``)ft=Gr-aCm1)`~fq7z&UR?Es&jywugwjj@x=>^x|NU zgJY62-rqkmV={MtPpwVTWGxE18UxNd>-t}idV;;iM^lj7g_i8jJbr{;Is6+!`s0W7 zGdLskAdAn4e1!@}O@6Cq>0Anc()F!?-H-hHk00Luh!`Hmu_VKy@Uu$`z!?m@>eQC7 zvSs0H7j3jGT&*DzOD{XR?%XV?OH;1ArQ2^ix-M_O?-snU&5dW+nT4vKMSx1{XS+|( zK7I{A7p+Z$lZ}2@%^kssAf>$9l zMg))!!N6}97-FSf2W}EAr#bi;oH%v^t51NdCXSuH!R=~(_-7OX2B@}eq%p<%AOAm0 z&Kka2-v55TWgc&Dy*=j|=5}&vQAT38Oy1;6&&>iaOA_yamZD^ctQ-{c!Jy1}S1S3YI&iZQvUukiN!qubLAX5+U2(Qpk# z67RFB@dt8sz|<3$N4O@3@*8umvbL6(I?KPu@GBI(HZP2tagzRPxIto{VVCtsl*=Kd-*M zR_;g=+KF|qoof#P$N#(CovfOV1X>K!0L>KcrJ>aBn6eXM8dx2r04U+ng|C~~Ll|a# zIyZlkOn|a|9RV+{pOLJgv?Yic;bnmJ5B%+Oe*x0P8M-5qt0OKj^6}ukdTI3i<1E#?GXZC{7plPLOv=juUYbN#dV$ywW{Z5CZiMPm?|v1N4Z7yl)M?iW9MCChPnP3qc3 zC4*f*>ac+&qc!d?icKpbO+f7?x?yA#Xhlb+-+%(`-&ck9Ume;k9ooNKiI&x(k@`%u zY5&)?X#ehNwBMvIi@_=F#c5u__h$?jpxwW(*g+gmC#w9S>R1f}03b9Ko%G=33~nfq zd%jcC8Z9+>!0B`$*oM{`!j28+1e2*(g@~Qqlr8qLp6S0rZTFkh+ZAPyzltXBS5)P} zA_9KcZ#h1tCeAy$L^`=8(oAv*3D#nTJabvW+(jw!8@Sn7U--qeh2=`=66M%py0N>d z#%3$Va%!>9Q;OYDC1w?3Id#~7_$@w5t#$VW|38FQNuN`OQ+3X%1mit2HLRwbXX}#g z#J4${pwn9q7|lP%nIM@W1YMnTI1* zPZ#5es~MKK`h{hacN4k)JMIlkup6hp=HPFUrkH_@=Rdl6Ezg%*j(JCL`=oLzg;g)> zNcDDk&N)&NY0q)wAC_yH{qA@|fr`b+?VfcNi&SOa-ZD;M^MzP5Bbc`j9-%}^yFGIv zW`Lv`R9WJy&D&Qly60O}-yz?yw({=yGllcZ7D1FjpeiqU3W%29pY9+>0}Q9I)6mUUQ_SP}WQF-qZAn zmvaVLXfm`K3s$WB>hM(2W0UwN(@(T;)>95OCaawfNppk&csm}BGKnWoZ=J1!Do-n( zg9-L_5B@SW)S@%)Xx>#XVCg ztTiPzbMhG)dFzby_0!#1&1fW2V%D2fOXILRy9?6s%JSaMs_j1CD>*2ad6~`^=z6P) zk$^BkM11zQ6nl>@gD4Cz=I%$eT;hYR(~F;0tLa+fzFJ$uuSiHCCNR-Qma{!pr^aG- zU1>ySH6ysuRUpbBv>c`dtJJqEqWNk_1NCjfK^W+8=u_eeIGQLr$7V3Hue_y(Oc|0D zac4UAixVYD$AqXti7L!5A9kdS)|kEM_2;AWsVnbaeV`@&1&6V+vU2)%`Q0XFk*b_j zRw=5meX>({^1QN20Tfo=VhV$C@{Zm;sBP2$nfx9KG_b%gijv1GdZ#|APwqz6C*_-% zi9xW~bhrOK=PN7)T}F-r>YQ^&*Z!WQTa-X}O66l8F4W>(Pb@~Kf(ftvl_IyjJZ`^x zr`G5QJ2B+ePB+v}^Q5`<6ysQ_PA3|6I%}!(!wo(s-`q;Oa5A1^AI)716ec~)k0hqw z`M(7eW+S09l64bD6>#pz3SGqtEfCtbg}rXOwPs9)6*{(%g#>Iv_N^C`{?#6+1x}k$~!rN$~L_;ZO_bt z#RNKAlgQ*tFOqU)=~tk}hbX>^ruULfXHzx+U_hV0pnMY8t!X802iEDCLdrV+EufEk zDwi3@ipQjbRhBw08ZU_H)9L~*#^tCcEgQQxmFS8J%3Mz1f*ErR?bN02@X&cldu zp~nf2C+cyo^C)O2)nc9U6ZPKzc-H;cxZi8suX1NHfK1T2_rCOa)~(j4IUgg@VG3uA zOm?H!h~rhq(HOH8srNmy2fRH|%2q{($2olQqTM=yvd{Ngor=eL1&o4uexXXsAaCqr zKBv&cdO)Wggf5fR!^ za2X^TGI`)Usa&=iHI~rPN|mO_@f^D{1P(k75r(ew&oI(x0N5*G(@@+xIcDWEE`_dfQYP| zf1fvVR>b0T&Z7xt_Y(=HOWj(}PVNeN{~NCVMLY`D%&^$u6IG^o%y1^%Z@yJ4Te2Wr z+3o2@jBuzAXeweyr6~i-B%8@yNaABNH)+O=Yos^v=gHYd|1n+U-x!8$FC1M znBT92`o4u&5@QcZ@JK%->tuC0DL;h-)NOI8x|FKw1;f1Bz{SZz_rjiQ8(Oauy;zr> zR)7a!P0aaN-UB|Ueh~~tS*AXUv-Qe2{G|oxQUFE-nMyS`o(y$SbxIWm;9BGu@S8+CkCR7>_EfE#_-Bp5WV$|bCbneuz9D!zXTY~K3DyLSzW4}GdO8}J(wHP{Cm z>kX2P!}fIPN;i3uzQea0wkiD8`1V0#y|Ht2cgv>+mEu zh?@2Ln2b0R6#fceeZOsN)ZD~d)C}XR39-UbJS56Oazz#JVodXIP~{Uue|?HKu5(F2 z`@JxQ7Rscx78~Qma1&3c73c_M^j*Zbh|P<>DNqu~)*F#O#+ZLB?BC#HGz0|HiOp#H zOCPP->e+4S$CIeXk<3Y=iH;*ajKeeO*5>fAxlII6T~3B-nIlDG&{n|1YyM_wB5|az2J1DIkLl+Wv473{=-NjsNEVsTU7M7h%*u z;!7;p(nb`FpUDBVo)^|^7{%hi$fwAO$rYSCdI*z;?aV2+?Zg^^s)uya#}WgCle73k zq>6`_6Bt-K9bHx@(>1LaL(~-M`s^rf4Cg{5sc|%+`-juYi9K_0;a`SunB#sa3SpdY zST3fuBta_}&t{O}#rZF*oKu#^o*LqBq zXF4`a*|!4noy`*#gO|-d>Ldlw%3w!TZrv39G?S1qpC@={Z!c~98aQS?7%HzhTM}2o z0n91zzM0}r_b=9th`=vj^G-UC+c5)5RqNppt4&uu&O;R7*%B0Z`_aN9l)X9i;nMsW z?O|O;=bs046v3$a4?^tJ>rfrXjW?=!%Exj^=N%O@Lz?tx3)sJUJmS{e;o4!W3x1Q9{|rk>X#PQz=q4Wb*ZU+Te}9=Qr&= z$``JsdnfP2C|_{O3gVQW=Az9@Yel*%TZe{p4ufHw*v2q<$YiLq>TdbmzO`O|4|RuzkRIM)TTPUuQnfVZajRbzET?x9&T=Y{q^QI>+kc#*1UKY6&01V z_SagcRw-h%DHw{I`NtPtf+RpSkiLZKc-z!w4&c{XyK*pm?{Pso++Nx(%p=>^F1f|jV>u0ibJ%WR!%819N)-j0DW4a_otNY zoXit!X*7t;J*r7*Y$OVvDi#?O%bix<>pd;XVqu2v!c{HERdoR1sV-^7rGtWuy1rev zZfXC~tElSxQH-&gs~jc>psq$vvgjCUeyk!GN)$WxhO3 z2%b^6EzN%khzRc&N%!-lMDVC(k`3tXA6_{D3|toGU<@!580Y(1!&I$h^1pm@G6Ez@ z22a%er|Q$w+pA&Xv0r7)`MIoX9rJXL#-dM~J|4SM`P5T)q@YbSNpt_uB6T{gy%(Jh za=tkEma6M}NWXb@o1CfycJXF=P76tr|B|(12EpMzc&@CLoiX3f=7DcL8FMq0U#4H- z9g5Tn70R879BEN>jmvqcYAWM0OJO{Jv7A$B+y1PVkxt@r?NbpRY%l_Q6DL~!R7Wrz9>AOa6%>6T?SUGM2(>3 z&n=22Si@gS0R7*i_JyPuZer^aFV(3@u1oa!lH6Gf2%Gl$2;0?s-o}X&=Rs6Oi9qaqX}r-dieqZ0%fHysJo#$*7fL2G7|1L>t$iw@ zphd(R|BRv4$|V=mu+x%8P4j3mC5`Hx!!%4I_53sqlCc_1lAu1u1feeRCquoB2-Ju+ zLjleq<(;NZnoG=E@GSrDUHTioOS9Hk*7RvsOQ_a~;*44?=i#$3^1Fj%zqHDnCV$0% zhkZ1Z=lE>_vy*tY#C^Vk`0A{h0EjC{YO}@K>MeF@tN%PD^0Z?+18(tLPFGXi#$uke zo)p0H7s ztSU*YJqp_dXNpTkS@yiB?===QB+A))Y{P`E9Soq2&4T*26ulQgtY}GBW=c6v=uOnCH6K5$xlZAf&=PZR zqvprV2v%PdUgYtjU6!$t3;#0E>5g=iYT7omQC@;Eb%3VRCJ@pd-NgWm2#M_WU#&l9 z-~>b-#hoA;CpY}2QpsS=&+?^S`Vx-RON)6?Fa6(lp`MbI@&BOnG$o6i4%3uA3{PFy z*M2Sl$K=!ylR-z}U?G1MCqsXrL*b_5n}K=VKwz(*CF22yKph5GY()iFbcZlBDuS^p z#iZv`D8n*sXq}k7@Cai7pS=0t-Mf#@_s0E?IsvF6yQ~3UcBFfe4pCi#*87BER#5PsctB$Y>jqp&_gcYG($KMy~qX_@0(bC9r2$X(tuV$ zKRpcc&(_)+9(-*IY6FKS+Ljc#VRFiW?WhDv0&h+Zx5*o(4-`rT6AP&N5N^Q`0IEKY zy8sb3-un+f&<3t;^VN>~d;Zl|YiJ??Lttl1PTbBwMvOYy>)H6QLBvs{V_3Cosv)zi zap$zfXW=>bt%0=R&C5+yzaZaJ?w?$JG9@BcsdunrjXWda#?%A0zOiXf82xB)klZ%_ z0vIx0o7|%w6X_>5|HmvtBm=?t&k0}8U5v*=R78MQB)EGydcxQXV_+JEV*C32wZh~t_!^v;R@47eT8~eTb+a)r*bj@w*u6rg(7k%0>H+D zOWKMKQK?p!LW)9z1ZYL*)Fc58A5NNXkPFNS5KGp*$Za$p+@ZZJ3ia;+B~P+Up4i;xCT6GJfg!%VeR)M`gR?O?B~JQR}ZxGm>cO{z!9cnPpI=H zIZ{F;FD{~73E2qnFp;s4@tyG~B88Bps zOSF>6i4Wgf%j@M|$~NH>`72hgMb^OTg9oa)I_IB)OmP+S7|$!WoA+d0M+ zlazrD`R$^DyY0}i(py7ubm2Q?)Tox&(oBWUO8sZR7Vtc+EMS5|TbiBnue86jHfqkT zsTc(Qg^%9Sv{SeAD;+o@x#q!ss)+t-T>T3mzC4t`7M9{Y5#d9Ja2+86TmUSc%2M;5 zYF!IGrjMM&oEc4sJOo-h&U2Bpp#sH=n@c(plj`)tfv2K_;(^Yfn<12Krt>r$hQRdV zb$J221(Gh~1onm#+ya|I0V1JjsjK%t@mR{D3j;qzS5p*pPdT4?S$DZH+Onv{8~#*5 zc!mJ_ub1*zUOkZ)3%itlUYMZSfr41-Hf5)#`lq^nsZI{0FX*4DKHo1DMap;^j?skL zL}YFtv{N=Pj`joSiGJx}!t3CAyagY#o52iNZZm0|Z701*pdAihRl(Agd`46)t-$LV zF;J?sr!QR2evdMEE#?PQFqp^_)j}l8wNS~qt)^?LKIks9v+8^Jj&wvFhW-yT#I356 zWz6Wli0Ux${_M?%9-Df(MYOM<17wuX?Ut~U)p0U$RH%9>IZ)FeVBHlkn~A7EZ?uR= z3xjX()#(iDtsTBTd9n-z;0J!-%HpRMc$Ncd9|*iO>Eg^gWX&YzPjK4lbkwh4AEZF# zef0}DM$eJ#bV|};WlKUWuD_v$uT!((%^>ucrZBIV#=s+*00Jq^ba#Ih33=*SZJ-IA zlatR#Rey$t_M6*>?H@Wjt)soeANN}a7*y~0W$WaV%6UOAK3;e*CW$L~;i-8i;lx39 z7J0@%!^|L++E_1H>wo49@|$6Xb^mh*l$p|L3#7VWlmXdsx|zzL zWtO2|-rHOoKQf;~cA}Q;K~EXdtCX)vA>1qtZ}yPtoc6FdwA{$-jkH4s5Uk}xaqEr4 z#}CjgNw{63-Y3~BpPF!NbWy=IJ_bw(Hw{{sFj@p=@(zx*|7 zw0s>GhSkqqC+D)8nMgO6M|Vz~GAB~``|tx$*f8$ThAzIPvLJ?!m{`t2+xrqE^Dn_O z|5RM_?|^Q8eR%j4@y>s7&thxk@(fc`ZBLQrloO8y`D5>VYS!Ut&I~VA{X*r;>*sY| z_;o~Q^LQ}ylOQ-tds7o=-y#$P791LQ-riB0jm-wJFgmKqg!ITd_;>fKuafb4BWBI> z7$r~?z6JPsG+LI%tpC-E$ry8Indq_F(kCNkV7&$fr{{R)rWD7x$LAr(R=n&+#Pk#{uphUpQuuVZ9AB>AZ4mCXGAa4}1iP?6Uvri~c3oXo@KN zvsP3u*aHITbMlT%Py)tr*|ozC+sc*48(=NOUcW`T8f+=S-7 zb^px(`C>G={0JD2@L2kJz;FHC`y{PCBMDzq* zkaVDHoi>J5IB4@=L!;3xn`Uh*FmRi=kBNvqF}Vaj4+Ab1?9M%t8|yO&qY=`<-Y!NX|2~Gpnr$9a<``UdAQpgmF>mHz zTwkVlen`e}xD}k1Wbq;0VL1N;9O0USyZGYEZ0gy+YCq3@Gh2D~&)&b^KGK~5TOX%w z^z8`~t6!ZdJE(b;b4v@-@iQP`mUGNq?~glCT}z9STnl)u%z!r&GC4tCMvPhrUntH{ zgmRjAl#N3A87$9d1d?#ipv01iU=&6en-3+E24fwWP%4|EIy~iM)B~QmlLY5sO4gBV znw((+KCPv3N3Z`}aVe&eXw&DN4LhJGJl9;a({yH7GP$|twY2c*)#<*nY|ZCzN>dYv zeGzVHwubz-5&m#qa-D)eNXE!J!sGm1F-Hh<{Jbsxm&tCT;3|#N$NzHK{#|@>{{`n{ zp|#Csbo}-A)G-UIyr1t}zPC>H6>SDr&p7Z@WEPu^Z|Wm-Bp%s-CU=a-z6e2hr*KS* z_cT2aQ>_@i;R|FnSo$0pk8597FkoELVCMuhG+T%v48MN&uH;dJX~17maj^6`NO6ge z)smWfn4b-KUnYIUQbs{Li_nbI&D$`=uj4!L#llpT>;juui))DSE>XJ&yC=H`?UUxg zc57B#YZ!!f^4Mv$w~u#^PSC&Ow4zI#R%S+|w)HVN(R?KhS!)d+<@S1Z6hH6g!c9IpSsDIzRZu+rZ-%@lf5|%J{*q96c4&-f1XY) z%=aJMg^Rk?qYhRW?o=ouu_Htnc6z_M*sV3qC-eUU6KKZMbifOqD^N zIpo33qQ~a5q;R+3-F%LSIim#tZ;qjzt8-vq4&lsazq%;1&Dp%}uBiH~EHxU2%k$A_ zC(E*gG`i;0)HC*YWb(|&g!e6W z$}gst?l0a6qnn=@-PrEt%s%(eNIoZHE1fV3r{?e^omW+qOM&1-u%d$kW9wm~S*AXrLiw(aqGtk2lpMC~1 z5{su%IH#S<-8Ecu8&N3A(oJ^!V)=l99RB#nKXPK4Gz^A8l+t+b0lwYA(t{oXJc2TY z#5me(?(gkBml6P(g!J{>mr0za`{Xs%SZLCBo+;)o_Irin;@T)LOBrl<0h<=bO=)Qu z13eCR#cyOMqgdVBmm$I0M;J>c^>0$7;w8w~4Pm_$A9G6QK^T;$j&bv8RQGl|$FC1M zXaQ6GLdT==;9u{-HGi(~TQp)e&VR{F@9!TKuAO?1{e_~SyO;sO%P&Eq-)4s8?!B}1 z-jb>4mMF2|%{ivcu#n{ynp|yC@-)n-W^$$J2d|^>`VDYZUpGXD`1b9_`nz{-jqssJXoFmkLlZ3#g_asxNN3mCK*~t1G#wKRE`4oGhO)n#GfbzWnD+{^hSd?}d^M zuI7^0ya^~;bii3?6Cayft-o5q2*mKM4^H94#)24Sz^I*{rMscsUXH12~V<|YC5iHxgRS#Um_hItN!2;@gBhL_G(l zKE`dkFVD2P8Pg4>xD0_#IM~5r9Xyw)=+X5W%YL_ml$gCBaet40?6kgb?ybN}slKW< zpP5QQlH|fiGTPbFCCqa;2&E4ZCv9a0f$_?(Z5csVTjs&lU@L!S^BEOUKLJqaEoqa^ zTWgFY7@_GUi=MaYm(HLq+H{{A&9@zDM%}&DaOXW`m0+{rRCLM+%={dt5~1FrK_@*Y zVyL_6w;l4$(`ToD*iffpEPh%cpoNc9>&GF5?4Zh%Jj_87+cYtY;JcDInDZ{n@~qt` zF|tNZMY%@<^SM9DU+iUvb@s(Ib%F)~6fQ%0L_goH-oxhicAuXd9`1FHjt^gUfFN$a zf+uYct}wkEFLw7@@O5Wzud@wL>%~8K`W#u;BO$UUYptez%Nlq$+GUh0_ z!n{HayqtGhFJ2$4ye;YQT}{1(=GX4S3Fr+5jV`w;(Vg$F!8;wk{mt&dgU!xft9j6A z9_)1X;S0XiA(Otl3Zou$-MDy$k7?6xt&@&X=ZH1vai1!6I@>?KgqocWKE%V}K85z= zIie^UnXOP#Du{YvAHT{M?uc9Ljs}wy|Mw_ZQjkQd0ypn3PI2`dc26~rc3TH$J;C|6!@3gk}n#V0&2R3%a43vA;ld+@jbS|I>4&8_Qm_i~xr4eN2i;drL#!wa4 zQI+)sv<)sMl9gfd6(Amv!t}dj03+fv#FsjmwvHTsh_L*;U>o2$6P+IpSMp|^vhLm>M)MCi=#N+t|>&u35WaV+V?)= z4_5i$@C5h=T5DcLq|ncT0Lb{s*)SYShC&XYM+S+M2?r>0JmM&NY)-~8UcV?E)T3{= zb{dK^MsU72|I!Z!@_r$Hq8M~Bh-2l3}YRBO;_f@B2yz42`DiD z-l3sp|K0oC1#|WYW?4Wz@L(HrebS=&3hwp6O}#&fx}1$i;cO)bKuvD^1m5}pQ633c z`@xm!0{iH9;o2e@_9#x%5K}@abp(_G&;+>b*bq>c{TMFfMmY?%@yHVpWf>wK8a6-! zFwqJ1NQBDfBfH&%iX9|gfq3g)QW^nl85)Mgh~tqqXfinuswt=5APG7i6zmUsqtI~h zr9r0~U<0>~hF~)P1-&ZGIgSEi6is~@8|4A_Q>G$!U$nQD;h(39zEOg#cI&8l+&nov z_Gp$V>W#_#hxB@s{Fn+mZRqn%qFb&(Vq5-7Oa^6B9(RD3!o4H2mw@LY36;4BF?<1W zeORViRm<{-lX~HcAfhOPrXKMK*sW7+WCpUfY`a}{ny=)TL@t#gB@0WrRawqHP`5Rg zrKu@DvwYA$g(c%=hW_=|x_s{fAdcY|5XU{y`CgCCAFiDNT|=9n3Mv@ij3he;!7fS+ z#0(7&z#x_!lFHP~o)Q7hhG+LAcg$!I>l9VHqxm zrza^)cEU>J`>pL)hn)jeS>M=v@bJ;&ufO@09|7I@EL-125&9^zcm`A4(lYgBvE+CY zkT{zPd|_SVOv+;aoip59GTIBcI7fNQHtf0ix(OPtE--Bhn#mZD&2VL5l=*I_Iv$Rw z^zc%-&vI)Ct&PeXiw4Ys;o?4fmVfMQ9p;Tm*L=(v1MA=vbOwW@0^G`aX3#5o)1@j? zz^$4od{1qx!yn;gLQib|&k0h8F=yM3B)vA(ko4&mP*nYV46PuX*>+t(dLLYml5CZ) z)W-Wvri4O+%jO(r@PR#@ZVmf##@^GO+k+2xfG*@z@(d;O7Vns%oS2^?Wqyz7{l@U2 zs;g~S-|!sc>Ebg+>y%SH!BD&`DQu|v{koNB#iZQBEsXa{V~F`$rx#o8Y8ec(e}OA$}sLxd|$GCq|{Y}>U=RrgZnq^ z(ilgY(`q0U3@iI)7w$D=h;qaRk{W{$lhEVUIRFv?R}~fEe6Jdk4#r9X7n-k5X^r^; zJxXC5rzndZUm?*4WWhx^8c_mon4J#sgAJ$ggc4N~@c@Igxv}rL^jjt*kVEo2^AMus zxb?rUcaK~24tOPgwd%kYJS;rhJ=m6K9>(#-JYY82lAnIi0iP-1dQImfi(=(u`o`H% zwE48*VMbu{sw0a?stD+_dHj+_z4BH#btnO^-*HIFw+glccet+K)~RXKF{Odc_vS91 zE=i0pPQo$IrTAKzjwre8wW}?lr0Bk=|C!sN{Nbc3(Y=~ZG)zeEn17kt=mp)d7q|j` zo$(8rKv9%kEWNW=frhLGb27}AylORfTE{DI>5yN%)3G`&;{togZ;^`xEYcfv3Hro` zDM(Bms#jbC*o#|>zzUJ%4*tO$*3O!WJ_bwaZ7y5X-M$5)Uf846)tS5eNG}KRFS4dJ z&i5+@-JWPDeC1lWqoV{bmOyf6`|#lV*1>M;V7rwcY1!_>I8Br_XP9<>adRabJ@kG? zGXNHdhW47FfhxMk)j-8nV95(UsJjPn8ecWPZ^r!V6lJ z_DS&tAL~y0WM_NoOIXI%LB6iY*7)r2?7i4NDAuQwAfhWPjVUWcGWFIEC$nB7UpMXj zkL`A=dA$8&KVLrx0E9h6pmmxDk;z%02PIz28{26 zpNIzeCO)?F&c@};oUoebA3$cwO;4@v7Rlg z-pW^tXK6e35nb%;VknsA-imZh!>RE#c3oNirR2t~NAV}Vbx~-UYsR?}XEo*AtJ&uC z@|G;8yVAvTG*fF(vf?Etu}H^mHxCXEcDI{*omYn%v9bh>z{TEZ+GYr8IrPqeOYQ6i z4i3T(ZI`~Fkne(n)!|p#z>kZ-RdjfKvfpA6-VI)-%thtWpkfE6N4%W4u|E=RfWqA| zawF$hS_OZfgqQvR(-*GNcuPESJsOi5#C#L4*@ z>@^WaaDyNzFMwD162`bh{|2V9aQxQ1GA zbEUCbd5K163oo#w0{EDTjlMwrFaq`{yuL%l1fhb&kN_ATDS)oHl$h<_CJ00v??UtL z@$L`WsOoWJlda(477a-)pfh`u4VJV+C;S5b569%tDe59Llqah9vmrdROCT=Vc(4JJ zTn2oM(D6zgF|d%#0}UNK-B7AchL{E~%aN(kVHYtD zJHP5|XV5$pl#@r-^Vk^^wZI**z{%}vw{MpxOyxG{Uii^D>+jwJv{q3SEP)PCI2vl7 znzLZ;{Vt#d*kuFoBt*W7X_~2^22mY%OVJ!uR^M#_yl=qJj)78l8bVuHlBse#xQkbU z_h(4%!!}u- zr<9hDjE)6mz-d65*d#4;=;)Qz21_1YUZjNK$nYZ~+9=^d%6Jbg2q~4ElN}=U_v1lx ze;1z}{H1kV%6*^{n9)KTm?K>(Oq3*?ob@v;av^BN4|Q=69v7lr3xHivCFQo3(~AT? z$;>jln-uw~q>5E*n+@!|KKS3)hbOHa*-2W84y}cHTi!@sW*O7Y+F6?^=M&M@@O0Hw z1&F>%*_P@(D{Leg7nJam)3%ZXQeR{*iE71NV{tVCW-^KD<8Wy27gXDo@22)3A>sU# zcUzU^%)_-Y7kw9NgN^iw(G(sF2NX8cVtw8sVvy@ z%`A}I*x1#yZKoa12^6ewahfclT#VodB|j4evDW!*)SwIYy;R9q|&^AN}07X`qX`54xezf>H5 zDFPXJ>}(r`{4=|g4AD}jL3Guo^@3p2k`D+p@RWz9 z$yuGFsKg1S{NWn}YLDZ1pi+1oARCa;6iSBHcUeKJK#~hwMprWDJ!o|+vvJ_dy~F2C zqfR;6J!;L6s+zgz;AnNG(AMB{lmw;1)e(osvH9t_L>8@$H9F#mep0kE3P*tpxwD!T z3fF+w%(BGaY9P=fd6gp6|29Nm*(kK zE!45MWEZEhY`&}d0J^U@I-ktIusfq>SSnc#C}(y5G^pvrVv(@Em*8r!+5;M(Hrj9o zileKzz|WM0@N-)g0N_eyuh4l8380m?_n>#I+B)^pC=7@gc{{_ZSs-|}-@%56@1$zbDd&pbn2`t1EF>=6#7a_jh~!99F* z(5cf-p=1&}dpqtFrY|xI>7hkqRYn894fdhL+Z-n7peC9pf@+D$h>J}f-;d4!)za<2 zP-s7cB~~39Cg+FwDqpl6lWQB6#rw`qXpC=i31v%WPL?j~$>pG3F;OzXOW3ZkxsLv+ z?7CK5n=es$_Xa_d#ECZYX|vI}X|sYCfhkLLe zUQ4K56U>IGv4}%hrd=Ry{#eS4xkegafDl3QxTA+e*32|Y6J&=k3$(};?uO|IJIY%N zFlm4$*hN=!_1$-^!x!FVj3#VDc1uTaSy}z%lNUzlQyNC_!+rNuy!6(ee)6#LEJt;R z(!tP6SFEm$)p_Ed3By9OWC9o}M&ylP?W%`fiBt5!zAAB7Mi^nM9e4SvZg0hGd-|Bq+ED9M zo$-BkyL5Y0w{*G03{=*^ngK(9OOT?n~8^e#Uh?$L3^_QkIUjmRnP> zRVh{L*n5>=n=-pG=MtC!L1)EMFPy;P}Me=NjiF+%xOh}v-N)oR#4!=m8$a~ui}Tr((T298*w z=kyFp&0jM+8& zhaMfacYnapL8AfM#Q+N$3xL|g_rQI!d{(~C;BWyiQZ&5yxBr`z9;0|=YClm#c6o`B;)k=guOoHx?%@SEoRou zIgXgR2t_hLc)w8a^+J7s|I>>{Zb@Tb#w}KC@&Wi;yYCYF2s|sg;M%gZUr}|q$vv;= zpv=LSNVgGp;ifz@DFO(uC{CR(%>_UB?A=6ff7 zwBx%`)~D&uX_C)|a~LY`^pSJi917i089LEhg?CBicqs?wypCe~by?z`2Rn%$Zd6)I_t_B@!hbr@^D{sCQ`RwmZsPg+~=mw(aSB3k{VmVbeMDOxIxb#3?|9s9%4d+&SbbNBFI>-}Qu zV%y8C(0dQ*$K&RHuDwNe?Y#%9_v-LC*93sl1rXd*T9`VX)_!w$FV|Es1k$_%{3kFp z=^~B&*lHfPbB)~uezH&_M|;ha7l+6DNas2UQ9jk>XLmF)-{bUC#pwWm||GLPqzqLw8<`}f(XcQP?7JC8`CO_6-Wjn zDp!5X$zTGjtf-^bF%S)-AQ{wD-yZ{NmZ<{QO4g zwHQvu0m{F_aY)!KNmo5lAsp@>VSu;Y7p=W^YsKg&Sxvyuj+#ErG)s%XH*1bvo^+^> z&R7j$kB&}W9RqId?7u!~{Xpn>x4F0bQ|tJt$`&8Q-482&7_L55!m&exH1rM*cB>M_ z74idg9+9$Z)eZBzY+pm)SSJG^NHKTxvO3F|U&aDi&#}b}6l7mY;Nt1cM{%8kQ$*+W zv&6?>1H~>`prm2IfP+OIPU9?}C`OLbHm}Gble!HSCnghKlCgQNyp7dyo~y;B>-w#Z z%806p`=-gK&Ntef;u1X7+NNddlYWwSd5=;jSb0xI$6iw#u&c_-ytIr`>(ya8c=MO+ zi0&cV@4Sn1%i83Y=GR)8g(oI<7HDB%5PjF&BZ&`}8JeYChTT9Td{-1)C{z>n9M`-9 zk2?Ie=2TO3V=!~YOy~ifz9ZmxG=tWGR7e~b$YSM=7Q_ALJ2N0{fM0pfN*wvIN-bd zWk7-2st8*5?AAMHhYo^vYQ$m7E&}&NQ5gk+&tFMUd)XiW95R=SOx5CY3sjcQ!{&|Y z9>LZ^^Lur2a@1aP#)#34kaFp{bIVHQx!pC**dVHc2K47;9oQ$HmDSCsm+V&tPmf3hqAER*d7AoM%L6+CZk(NOwj0i&A2a567`Y?N^#N{TzKb zm*?S`eX3`ef8Yv-i>rfT$UCeJ69gH$G_yEJn&gR7JTI0!*g>rpJ~=q-{N?!hqe`}% zMkJN`9*q&Enk%94PNlwEHVc(~oNu14yZV3%4!X(BXdF95N^el~Ai^Ur+>~oKvwd`= ziB)H4*#=uLk6T9_D2aDs?X4@(wM1oc3!Y^Q_LW{Y;hj4NulJv~j@7d*wSK+6{_XlV z>+AhJ<<@dzqhlkk85&ulWd>uHXBn&#m5q~n+?`MiIRZ~AZWY5o23BsR$YvdqpPlg^WJei*$ zoUs;V1mMrJ$-ke>tyOU!&ZhK!%3W01jZ)cX*>>fU`uR4xj?U?9qVA`1l8&+HPcsOS zpJtIEKg}XSe!7hW`HB2c@-zrd24|H$41pYyFG7j@#H*0s&!2K6$4_=E@34!74ZIs^ z@l%1YDBHAY`!#K=N_Q!Df8tI!7br=hp!Gc{khKq638V2hoiXN{z%b6M#kU)e>2-Pm z_^jmhgH3uJMrAJ_Kctrw(ii{97nzveCs7)nM;KtYWE2xK3{$LhI1@7-Q?6uO6EiSV zYWe^>y2)8BrfK+dV3#4UJd${o>=Nc><4C$ce{6T&GA-{~uW%-Qd4m|NFpaw(g7Ng%6pwxCYcv;3r@sw{fy6|_uhR=+hF}cOTUtP(G?u*a zlaUW+dCKtNIlhAe(_Z(^O5YfLizvaf!@GpJqL{IQAdC_vLnouVG%rL&y$?jW+l84!4_m`%sC0DM2gYS0tbC zAASsiXtktHgxXV#cTeAkqhc941~pYv8E-EAm_Jtw)y@M9?=?QdUN4D z9G>NOqZrNgvM|9?TUurl6i7qowCyNsBBzR`5?VDXR0QdC%|lH}@Kb7Sx6e`2=#fOZ zc4K2>`b{b*IoiT;!wqAdYnd$5sVP^FVkaddt{FA0KOQHfS;hQy86GS*kxG3BcoR%! z);u^-@Pq6RJGxZ6wGYpCx7(HSRxA-Ukgh8w;luAXoAi#;(L-;(Xw5z9v_jI0g~y#8 zc(;?xGv-@|t?GI)r&hF6_^fr$x+AX4HTIbxRGD6U4p_;L7}+x#a3%rO^^w4rizhb{B8%6dPL|#g{F680D?e$zqtRD3ua@+$XnoS*p+iF7*Zgh;3sd1T}_wemHO^G)oC5R z=y+@Q?|bULI>J<6uc&kQiBGcWS};>feRF-|0q!!s{&UcWyYoi9m<)!Pl^G@jPyWOs z!BDWzYAV1;D-A52N#A0#tWZ9w5vEB68mx_$&C>aa6F0ad;|n@$a{$Cl#ulB%g_5+~ zU_0TMou4?kU;rSlqfDVY`pY0f&{ap1vq9KZdtn!7R1!dr@JV_>;heFZSt(|osvsoO zFq6tj_aP0|RE&#Ckvl26Gt016DV`vQF4abdQ>O2(7zbTOoFY-NFc4!n7)aiT{siqr z?o$Lx6vYDcsOG_sXm5l#<;SNwn~k>r5A^v|FfSm@#u)MyTi9n&F8y&yC*-Q z$oR$X$w8~#Rxb{ZRZ|@`kKt;5z1KWeN3W0J;%;Hs%0Ti}+@H0?ecGi2Ltc&jkX(&v z;y=R1O3X(x>`8)d04K6XrpPvv&8*Esat)i3n4oqcpWUZKzS&yZY}M4#cT2?+kGZw`naRT9Fd{;O zJ#o3;l6kr~+!<>Q`(_7bF0-v=GnRMGoi`cv5cT#b2_4>0a`ZSPs_Mnv>3El=&5XvV z=-OF4JoA$t#;R*<&=X!0_q&*fJC8QI>81NS=~5)`*ol<2Og8{~c~Ne(O8W71S*z$i zF6%Gn6?JMz9#c##Fh4HqFXhG1O8Mh5{aaput&~45%V&8ZGPVA=%pc`N$hi6AGJj-> ze8)4ToO5Qg)wf~o ze6bZVnC)(7h;U*^+Ru^`L~lof&tDJpVu1I1$E~B!Ul42st{G@DyCQFhzR(vDhk_n3 z(PP~U@B=`64k};YV~Y{?=K6E)SL4uPUW)%Z_r9|4e+Z}*bc8WK5QUf@7vtf;{?ZIc z;el`@<~i@B{t2Dp;q>@~*6;XNk^0*i%!HB4(R(!*2Nky$#5ss!`Y{H7lw4gyAETpF z7D%q*CRe2Pp6FgMS@j2iqU=wdjn3`qh2#yR_F(ZQc$B#@jf$KE8kS?KeC~Rv|9a&9 zNBRHyT_SxO!-rqqHFm21@5aW)eh1GUZa(_2|L;HJ@18m*#+QUAneG#+9OUZs=p;tvexQpm#ln8iA`u)*HlQ}9AnO2T`G47^Y^mxK4N33xwO zqH=GlK&6(6Oh4wijmMk`Y~Wu#wdsRrid=4$w_wW3qQu4Xh7UU|UEtJZ>`c7h+&(@; zk7tSw3q|1lBwBgf;k<3dBJWmhp=r&OR$f{D(<%i<%#K6*rfZg!W7I$y-0c#R7Eq=2plKwLsPz>dV^rS5DzvcKc>L|VTFt`_U~!SHUwP}ex&xfp^Fx7R^!dP= z4ev)C3eu0_j8G3YNEgL~DHw$BhEgSQvKNV-aX#^JKLcWk8s4rGTM}*B1_8?0@e$UJ zxERoadPuAun1q9#4jK*+6(#}ZOgo9uUNVhqCPDBBJ^6d+oUe%t20G64(*59{V`8tH zk>H0ajz0--22~DaSwIJy>+73yp@Vz>?)U&8S$qC#_*s$9)tM;;DSTy<5HFB_KQw++ zV|LTbX6g>26gS4+(3FSmEC^`&76LH@GcFbsAbT6AL3z`n8>CR(eqhnnilDLZ5`l#~ z6LBeLl2%;~`3)(J4R!W9`qeJGQb3%2_pO>;l29j|)(=O` zgPpmJ<8LPx;da>g&$u04a0m^~f5)NOilJoQ_Tw074zp-!KncN7jqFdZDMTHNx4O*H zMb@A==1|*>B$9;gpeE6`Fq|8p%6q0pwPq_f8dX#yx)1Ofuk|5Ddz&PvX*4&+5YxC` z#8E8yPfaGBs|&b&0QF$6h#~>$AQr()0p>P>;fI5elGSHYWQvWQC2e^0WXC9!q^^b`S|KGD3uI37V8 zY|&}gphg;7lIanDfaD+I^+0IAd~>w2dS;a9MY56sSe&8g9CPg=6%Z!rn77gy?V7}a z!03~TV&$f^dHRm0-SXWoZ&1VO&KH+Uy2rL*RviJKTly)sqc^Lz&~PwK-uIL-kEvQb zm)wAa`?JgA^d|@e)xUnqv^U*y{up)T*tNg{gP@%j-6NTX$X4YH4xFeKnL-w*<>%_EEBd;zhtfgxx=G>CTxd0TrKYzP zTAD;~z{isah%g|VGP5KaK8n>a@U_0!hTwy$ui`7htb_##@`Q)fmQyt~2mva#w>5!A zW%}blve|`r{W+sz%jXF}q(-bb3FZJ{Mim0-N@nW_a+<=v5>(O6OdW8t=a4XvKLFx9 z#ni32Q$sItBnBuEWaR?rCH~bJFqh`|@%3nmB95E~P<&+_Q~`_ZEZYF`0F5>g2QY z@f^T^-^~{P!ynY>s`uVAOP40GtmDzg6Sdrgigt z^>&8CupJUGh{756i0?tOvZ_tAWRp&4qeJ}{A9K5gi=Y>sgToWe^g8v*-#ZQDctczx z3>N*m)!{iT%fcYFuxTu0rH?KCO3iIm?^U%&seX-*oDz~}L}+ZS2E|=ial#9smF6$f z!Y3!XkbX{WeJWV%N{qL+&i+G%jS9&FnHuJa0{p$^J72hW!1U}t&HOl)k0WHKqsthx zq&qDFnt4a|#O1OzIKJQhCmdfU-Q@oBRX?~w0vc%a3m@HP&H_xmhe($4n+({{Lse~@ z!YY)(!6Ya}kLZ#GawVzRTz8y1UO1f^6IqE+G*;rqGa3wtEc<{AK^jn4{QGbf-mhsY zM6OjX3EOp!oC$nK_X*rYqp}AGfQABMg_?tugiKappdkf*;mA^8b!yll6V}_?Dj0Vg zn!V6^@EUjPr|kFv_l^^;5k`q#&RQ_F(>iJ$?6eNHcUx^jiPJHl$0<^fb;{(}K}k@+ zX|Z)GL#= z2i=P({QE>q?3i4^bm@FS`^cr8V+=)D(!h{M4Ek?SoQ-DUR-z-bNC3)4F>{8_I;D~* z-7pAOL_IR_vV@&aYjGL3w^yH9B2?1Hbi<@O0ovMdqPR*7E@T~UGryBFjnI`qNdVI$ z0(~+y(8522LuB-j)ggMtj@`Y4@`Ed67GbFs6v2#<8u7cY#e~E(@}ohcrNv3OB_6z` z1)w27w9W0m@Y}2ic6%EyKlK)tsN2Q3liL;M5Hz%PC~1(D&q}o)exOU!R0DXLqZ&dU zr6iMT1d+vR)$?xmfr5XkWerf*nI^FF1sVaU&kP<|VW7UhrJ|DAE5=sUXduZ}=APbB+ED@88s1;}ek-%AeK1oGy zLWlB7;|_8$@z3xQBQF%X;*$WG4ruxX+T%krWW0mO0~Nl0Dn?m&hOsd?sjrUeuYaJi z!M5<+2w@k8;wwr+!FM)#8unCmrwaJl2n?$AeR#mvL}fH#3<3j$uQC|5Q)v_v8Z}Uk zp_An19x{!gWSt4U@~Y}iV|Nj+XlY0fff7d)2~?B7v*{-sX^fTop&jWcyPx@CbbG~t zy^$+b1RZBAOQqd*fQuzW8JUsh#A!{&z_AWS#I9oU?=A}2{LyFtL2-)g4|6b(#-#+PYgsA&aWI%*-aDGU&>bQsfij+46;al8sAUS%IG@D{uY!&&~Qz>-BHn-9KGjUFMM5@6>myu_oa1UT5k;{o*7F zQSIdqwkU=)$9zY6&b?PSpf7ud3AR$`8K&-Wq+xacRMjzg_Nn`AHP^v7nFJ>P2RdNs zhUp^swfdkC!xWSz7$Hn@mYUo;ny4~JsEsEhJOeC$BocgxVrF+IjeLrgr@F0F+9074 z!0=V#kAMhD&NC;2ll{ghs~Sv(k@{v`txz|ot3=gEBPbuVs^soP93zo!a0|_a$#1f- zjQS){I%7tOgYn#xrr_*b+XgWYCO<;K)wnzXkbVS+HRdNAGIi+RNJAK>g`IV1-Yf?m zGQp2^5os~ga+Y>cCM+hMFy|=HgJNdtf)X;pfgYpqlMp%i2L%*QecSZTm7b_)c(m4R zP8&}L8wznpH`JzjpdPA6>ai0ch|D*uChQuex*MnC>T+0ZTvV!PfL_ul4v{syl}xwk zcsYb>VqYzMr}K8Bal!I*lNOPkCe_Bek`yqF%)r*}%O!Pxty=8J%jB?OOVs6G5Zq-x zn3@28{(S;`&!@~pj$-#!MRHmW`BTS| z_W&zbqzwc>w!Fc}4JjgQONqB9(Gjrc+h2WU!N_EL*HS=fh=V-feXO8=ChV^)#L7KG zP|b{9jiGNh8V3VuLsa(&Rw&hsCucg3hTJ1Y7o@Xj!s-Af-^wi8@-IMywthIN$Dd50 zVHizPDq5+>ggNj>#WTsOmMvnThvzoxy@0wdKo}z>v6n0fs?Tv~27&RaN_BfJSPX}E z0!RD*_z^c1j@(2?w->w@#dtmP?Py2R?2iLcJ&yhJ8W28RSokmXWNP4o|7^a8&y01m2m-;^tyV7)>C+W-VtXm&50dW1ExFRc+ebXhDK116_(T z!{$(We!$O^+t432W>kNChw5hK7O1%V3(5}a$jE)dOudqAZrCqW$|dd%VGR*2BlyDw zg9smy5#<3DuV^-hAWE2oCSjUR&~B4VIqg9plYyb1d`Q&_S=AEqm1GyI=!ZAP9m7dFxOrkKDlGa0m^VwU=qWzoe#!cQ#{w5s^(m?yfv_VhPi;xpbI=QN zZ2mc-;uJ$9MdxhSj3fG{u|B(JUdSg-e@E5qlr4T;;bg|SF;-Ouz;!NK3uV3&O{FpqkE79sHzRHzeGs9;tZQQ$(=ENv&0A3-)r>Y~r**V{xYH7`6C<{H zgeXDagy0dGl^M@bHQYyZdc$GqqnMcjsC zFuX0wK{PLlr2tv!Hq&d%XUUPq?uskcJj ziY-K^7mq)|Kru~>HVNfv8#!oh*4Z&xX(2iESuU31iF zpB!VLMzkBO*Lg?lrPZ)Rk1br2053n4qDIA8;@}!f!wz6x;?njd%lU1P#Dr%=VjFjDe9+XlTA@;$u>`(u%P4f{5p#XXFf5{}gV3+6jS zcy8q{bV~^1PxEFjtH1SLgb>4i1(+)F^RA|APa5}^*Vd}>IsYFk+A zZ(;nAnW$@6`2=y80IfrR+`ZsM)&oklKwsBxgb{OWp5~`8h*l7f21rcNd{9pH6eogX z_$XW5xL^CBHmVw+p)vhXPGIV^&0&HOsJ7n2O$menYQR^h`YHpMLxW~S1wu{UQ!T!3 zMeeUXD{#t8YSfe?L}PK2k(Egk#_-y}r!kD1M8uO_f7%y)y38Z6vHqqQr0)44$G$Fk%hP>N|Y^PQ4`ubDo;9u2l^@RM*a{?;R=jJ%U0-{%Zu&hMo_uQI(Jp7m})1 zj?fy#?AWkcv?Kmri zXIVE2x+`VnMAA(kpMVy-m4pyx;O<05mgf;6n-*|td$JhS(e*l+%v^@P!xuSJ8j*^j zXauw{fawb35?)3?q9u4Lv_lVdrMo}ux3n{bRx{9zP;DGlc#3Tj>kaL`J=4f^M=Lj9A*PW%o$#3Hhonz10)WLPPevNU{e1&Ykz>GeWiku>RX98 z@fkFgx3Vo+{v^Y!RD>PAr*>jOPINVr7f75KdZY3AhQ5#gGYoy5^T0?G;F;7m;}|Hh zN%w*Tc|*}2v4op|9>EX+u@8+65wEb>w>*O4IUuvV8(QYM) zM`q1=@RHdli`+63FBp?Qe#G2AIxv{gU->vhR6d5OkKu`M0bNqX(R$H)Pp8X)>nr7X z;I^Z|6S?$`$PzN@P~nxge}(4WHtRpV`-(yUFPED8&Gd;aR>~<2zw2yTi;z?(JnT0yy+^l&!A#M)Pp{|^;Of1>6GYsUfRiLy4W%L0&SwKOLcVbvUL1293|c0> zP!cT=BUVmQhZo5jtLL2$OPYU5y1)v-J)&r|la4Clenbr9J141%3|lkGI(KsS=A3+7 zGFE-tKfa{!oNw$_q3~bI0%{Wlcusb2zB{urO>I?8^{c9zILDTtAX<9BcE3ykxqI22 zgW{<4FhIuG1csGsfYLCioscXjlx^U#~eL0a30yl+bgCTuM=sG0%vhFnx~UwSIKpY z$M-rc1DkP$eeDmgz1@-4$6>@D-mN|D=^@F@WMf^> z81?<{M0B;tfA$Jio#C7`i9e~%TGMKA_*LBliG6oplx$*6poyr5&g+B!eSLV++Q|&0 zvMfI+dHsQi#bjo9lFRBl1FPsLsZ{@aS%qjaJcHxzwj^V{$Fvo?ey8?sB@g9B;c{rg z+W*K_#if@4syieKtGwUui0dUi$3mD51yg~(6(@~4D`1?MBcE9Hm8&Sh4ydMFnbXSg zoy+BLItz5cd17>B4#Zwo7Q5IzcyUO9m7t3->WezTT`>1@>^Rzj>19ricaNsuv%(x} z$3--A1)PR9Ht3BB#69Q80Sf$#qHiKwM~;@7N+ZtF?D9tA+r~9|IG}+lQt*@pEslF) zLQBE9vE}mwSq5@tK_}qvByu4c6*kVJ2?j1)L+eOjCe|o8q+a?pU|}}v>tC-8({lyq*QoW@mThYG0{Q4co^eRJVR%NV_8dUs#cL%P77p=XvGk3D(#U2XIEh}i} zyQ<$heulZKJUTb>iGI5}txfAIIdxcM|2u75@N(wBr1G?pVfCra-aa;VbeT3ddOK@$ zruvlOaRbv^o^OD&)=%EwHptnls2iEpzKz_JKUBMW$if`I-fOijk#nLQOeh3MFG2gp zOcXZ9Wu)~(tM$VPaU7^PLHR8>|HjKf; zMJ)0@=(<>rv3sH``BEKX+1KLzudQ$pihhfxq^%U8j zJMhHbEp*}_>N^m-(NXBoM3)FhJ{-g;_QHNYAomrPOn4FrPXsU+N(h(828oo+d#?@; z|Dslirx!14t&f2Q25~%+Y}MJt(eh{t%}HZVYob9$p^Y9rG=cIzckt{%mQm?X85Ocd zD19A{DD=uk6_>IXT$9rV52qu2H@pr;fk@7`mN)1t_1NhGbu`}E@Q}K|r;@*?SRc*V zNX5dc_)J-1Czqvt_0fENa$jlPN5){*KF$w>qp&RJ9;>g^#(PIuPf8EgrBG5!Ub{Fk z9aq$|oVG^4c(?j~P2lnEyL>-WLP~D@$3(5j5&fk?U@O2_mf+zXbkxX*5cAAK(a0?q z5hWviyRIz%Vw?WNdXY338=(w?pbcuGZ9xFAKElV+eFiVvh8uvV>PFy^BK7p5YHUSj z)Ge=C(Qug&`q&nx#wvaAp8;5T0~axs7*L2%oK#)d7m-KvObJKpLHH)(Q!gIpyd>3r zyS{VS)`r<7rj{;?0-z|ivW+ponj`b`*dwv<*a#MT^v*R1bZsxU8jitj=0yhqBN>)9 zo)zjkwG7bE;)$#lBOQH{dt^|Z0{-&lxK(V816V5L;GRkqNqj>#=^7PvAY z2si>Q*4lC%3_MP7LAPnt#rzgkUhR#l zC+4{aO~9CU`_^Tg{Gurq92;CP9fctY*%1L<3z7DT#l_dCwTp??jih@ij2>87(aLAuTlIHrM^hVmXd@Fjo!$i+ZaM zA!fb6h}Jzr5o_BTv_#UzMs!cS*MrV_dTctb9`D6(_CBo3safMwS$w(?-08}v=b8q2 zOv}i$VV0afk*Hs5|!0ey5cS>iU@oBb}NLvb4)~X`dFr<-j&%{-#+GWyCb_+}z z>9Oha&Y4#=?A$Y!QI*q*n6Egi0JHTR*Qw$a>9m}&XEyEfQv}fCR{QlH`Xt!);Uy>2 z(ML6eE{3Iys?E*vFhyTAkh*#z!ra6-mHAG0JFSdqX*|&xrKx^!4)a9 zqGs=qP3!v{+k?(!*cY2Rbb(1CF=cHq2BtSP4h)nTC2kU%xpaN> z0?bD>+amND4Vzcq$|#C-we;~7jP~w?bxByu(@IHTOH6p?64i5t!*n=3Ko_iHClhas zOD_QrsXES#UQ|rr&3Zjd>jONgR{{Q8amh7jZ?>Eiysxn(+mcq!1|`LnTU9)Y4ftie}h@yf`d9lXdS%VYiT+D?C4>6XNXK) zJXGu=K|ee1h7UVuBOvi6XXzLaNlm?d`&Sbar1Oqc51JOwskmnigF={%^=4y9G*!ZR zMPo9}rvN>J8wsexcGncbra$m?s%lVG|=WGTi zGYTor%&_vAGhZt_jzR#<(Qr&{A-;S@wsx zrOj?PfLn)7ACo5jnGWXZgb!>WD>mqFRlTY(KxnciH~HJQr>Cct(|f1Or++xDo)Vid z=)Zd>7j)KwO9noDY&5cWtD4VY>Osd9pV8l`I$fIGr!+z?2v2N60oxawFjwI)RZR>o zR+F%Zoq6K!AU-=2nUhJ)ilrztrm?Sq#oeC>gIeDc*CmYGi4)2M?>APy7#KRe8Nvp>VNji|SSnmnZW~Ld)BA&_+LrF&e)Pf~ZYF|X!&`EC zoTEeOL&reL^@SFlKd3?**(NZ}>XLOncPeJ5Rve1V0;d6dLL_M;$U`sa)r<|V#Ovze&WNH6{8Wj`cxCAL#`l2INR0=!%?qu&!xZ`Ge3;t-qFo zx^%DP0ViONb$JA&Wou6`1Oga0X`0Uq;9Jq0<6GJWluJ57&hi7WGjq$5b)%= z&N_*4&(rIHbUBSVjM!4%8M5}QDcRjkf~4#Qef-F;m*pJPgTJfIj4z!VZb3JCPyKmf z(SbM*!I20?YQu;@>}k6pw^$R1YQ}i*^{S_P2O8@GHU31iBRR|%1y_J~SgY7GH*ri} zyg(8}nUsK}Nc_FW)B`P>-n2p7{lGj*PO<_6r&~*8ihSm1o;A+BfFVt^v4NxqBlJW_ zBjvb)t^$-ZsyMmAjAjKPG_K1G8;xP+!Q&dsk{^t;aj(H76(|FN@MZ1MPKyH9N z)+vX|Wssbqy)l!2$z*`hxXd*VyqG^3j3pnEk{+>|c zUa?j?OjJrh3~sJN%^^nq)BimAlUiB9PGMX{ z7{!56#^%N#E{qav8H;wLXopL7@+AQ&0+6(}UmdQzeOo1O#pRXf&Ew^j?^jnn__8j+ zRN?Ceg(UR=xH1Z|9TF`@4-@RK!gA=3e09JSE^)SbX>H5yZO`2UCXlu-uU_`9T zb5sI4z=rPwN&&W!!)I2Pzpt8j3viuQae=B#lcZ|*c=rdA0yHSnOy~P8e$T%Q*y7VN zFkUqYEU4~sS($uO<%KdT9Bj*hM+C!14%3j<#9Ysa(14?+9@xDc z*Zf1kMxYXEm9uN77|X^Cf_)fFo-Jz)#IgT4bD^(j)o>jR{uCoX955%aA{CLX9%_#` z^9;vUVYg2T&H?<;&sg8KZDDH-;h?wbqDa@xywyP6CYQo71RN%%Yo@QMo`iJ|CfAp1lbPRGI} zT?I8aa0gEeCIv*q%^6xTSgtl#o5T=KgfhI+@iOn693Jkiyp=6fZ)wTk%M)VzGCQnY zo=_#XVlCEIF;ZwftvEQewAxh5w#WZDs;TTX@_qAo7YXrO)D7_VNK(uhtqBQbm>{O; zAi604l0WJ1e?pjcf+H0J5ps%QZA;GdLQW0i4%p^KzQZ(d7L&6<*i|XoSdf!mp@%&C zlIdM5c`}_Z|0$#VxZr$C5{KPK>y$G9)5d2f1Ah3Q1Ej_^>c!#le)D98)^g^WBlMvo z8Qk665M6`x&GBoEBf5gBmtSKBU~=-3C3+?BPhCtEYu66F-}#Wk;Q8p1-MrhvciCRE2Ul+*Tm3hgdXUVc&3$-5cg$3G z${z!YO-$4dUT{cVdH1yP=nC2KC-oHy*C2bzCWR7zUO{&pUtYYx@wUPQUoM?ZqeDl= zbWwzgyMw zXo5vEEV^+vq}aveVW@3-91W0+^;DJ#nYK9#C6`;{$u z4dpQPkxrd%l7eum4jGn2?%`l5N5H@QpfolK={GeV9-k& zZt!FyHV2r*xGod+S2kopueIzJz(uZ#zJbYl?kVBj@c<+fF`@6yDhRa^@!5hdPH?!LU5Nm5o)s z0HfJS#A(+npC@z zz4P4k&hI|GS+komIl(jJ9L@N}Vjc-N@mk{2yYt}mK7}R8U-!!!E(YdG_tZ-OV)Xe^ z#L08GR?=Ns&eOzr!NiC?j{Vb%5&SiabH!P$^m!y9xvp;GC{+a)OP&>jajW*IH#~Q7 z$U?MxiLQ+2Sh2IbQC~K%Kk1}K`U#m}nAb)XZhhON5N9Z%OGa;rX~rivIsA}Y=p6oW z;t-NB?fCUUXAh$;EbBTZ_6%H0KytVN-g|b3^<7kP>hUIK<n?6I|$u=e;Sze?c!V#Hc!>cD^Zfo-2m`rDSp!zMD zco58**7(?Jl8ZI&8fC6zmcJ0Tza;LXp$M?1%zgTjW=c(6A1Xz(LT+XJ>(zX>NVe4X zU?K5D)~{xEUMxF(2vj!74FKt*!U%{2wB4%uD1rS`ADNn}!+)=+zrEssr0PO7Wqe#D z)J1yLk{m3#k?M48nK9%aa`Wy}H-(D?Io<6$2n~JU8JWQ)j#?W)sf^ahsRjd|IUdH+ zv1bV&(<@@Sh7)!+lI&DjoW(hz87D|9@M4Wy&^a0n%fd228dliXImjq4hEU4bLU}sI zDG3?H7zjfr?+32M4;r=@s~;Dy2^-}W#3_(j_OjjxWfRB{Jw9__Mu(m%w^rtI&0to$ z#^056lP!$SScOTMl4N%vlP{Di!xt8N+pHYrGZXn7socJo&;{AOr^r3|hg;@0qCw`p zVTz5cN)}bem4??M`)tCDkq1aUDcwO*1Umh@zrpW6{Vfi9@i_)sdgko} zX?TvTF`>EygK)PItdJff5q!)sI8ijFl=mh$8~P-lq$sz^FdZi-IC~Q(gC6j}y$K55 zP$hd2Xa`KF2KUv_PbfC~Ma<4X)>%yJSR|P%8|izV1cti0x@y<~uQAMD#KU0C^Xhl_ z^C+1xQ70rJBy$3am^n5kU&5VkQ}U!e=oyCd8{B{Q{BIu~{RsTWKll7^tUr9T@t|=2 z*B}4){Qool%B1y3_`hr&w2qs5>ge_Jz1?jE|F;g>EpLi^Uk3+#P*a=Vsy|Pn00sJA z!!28o@_&7cfZs%O>!*D>t0395Fu`HmB|CG@9%16{vqvG>x}s=^r1i6O8b?5D41x2-QYZqWRU_-ffmXxpNslBq zM?FQ2Mmz}mV>24Sfu7c0a6%TsEykx>NJr^JYB6U%jFD9<)*Ye18?fMjD~lkEakPgb zHp-Ze@?$bZ#ewzE02!mm>y|j_n+ZrxQLk?p;{oojdE;AW9AYw(9`Don#7~ek5Ar>F zg&vVlH0e;$r(A1r>-CJ=O*p1Rb7909AiIWSS&zDramu1S;ty&w6+<=BPh$k38FMmA z4x=IyUZZmg$9(aiz;l3cg<}sh1M+TAJa-BF++#?@r9ZpjkDcL-(f2p zi(H(f(N#4jNO&Wb>gfoh_`q;7Ixw;i#`z^dKS&bM(8!wCC}0-crCs!4IfUlRXPbqZ z5|1YsnrEa<4hT6Xkq=;Dd}>9u8xu<-_;Y&lKG~mKh3Um=&Dx^?YZai@LBbbPssh*t z4%sx8#Pc{7Wc|ps*EMBv!Ps;U)p56BY+W85+2^Abu}9;y>&?=6X^sNA>2`auWT2Lq z@N_<7tV-#UXx|9!r8QUFJrX4|L5A4<_kxJbWN;GPCRfC9`soLGMW>ToW_sd4!=*Ub z7TZkJs32~Nr$g2!K{`TL0Ma^9@_1h6(p_>_i4=rkA0dzxod}XoitVusf24CnX+Xdu zLUW{*!SFD_wU73fwV5MG*`q;rpr(V=c<^f+(u&aOR{cOGOR>!`oIK|s;)MyiAv8!K z&?SnQC*w*BfYpDKVlw+A9Muu{F9v6>Km{pLnP$!SMRYnC=?Bd*dj#xd_=S zo2#(qfFc;a5HZQ&_s+vh4R?d!9FRj%O;-fdC`@LGyiMv!B2*hXo;MJt0c5~1WjiIYfpRzj%pn^EF{W&#n}J8d;V**A5MG%6 zXx%7^GAvryEy2QwEktAGcQH*DWeH+SA*JkCR@4Ksv(svAov@s^un;kTr}q~iNp`}yCrU7LCU`C;o$(~^ zfJF^wcqHO(cVhK_P|=rIBE3mhQse>k1R&g-z;%pkK0%{?leGdB=3yFeVt^ztu_Q1| zV&s!sC#p2EsP!t~>&|WlE{Ki|E(?qxMQA?002DbE>q(-<0)f{Uj+Y)Ps(fW;28jFw zhDPp_V}SBdR#|8XSUWrvG#XBA#`+zK#DL_Mv3a`;^x8aoIF$j>JO%_u_!{wEdrWZ|oh;$3 znw0`_!;p)TMkQqOhqEVW=v&$^)`1)c_0c35#pEwa(HJq>Ba-_BG;t~zz8BXx8Buyc zN0YR?1d?pXs(J{d2^ZD_Vp5M*h^cxradN@)*kW?5I1fGC8UtDypt*vvpGYKaO$p$B zS#$)5d!n(Cr~B)oCGFUxt*7-cRDkX}ilaJ?#c&D&QnTAA24D1!Hhcq zc8?a?9X8VVrcW|IB3fT~v>u1mqaF72=#^?=J}fE1oMEpATb|MtqbhLaqJ3>eDxiZB zZb`)wH5DDR*2Qrc$Rs)Uqwr_nt~Y>Lg|B32gvZ7Ur8#FdaRh>@=Z`p#VvMPelCjFGF2j&o{g)p01b|OY{_cb zmw`K%SVhLykWT@mWQdLY#m(3Zm&#Hrr{Q zTK9yGI?^`9vdDP4{c||3#dYoxm=Kr1_aog3KJY1GM(DY#cSSgm5D3%As96Hg#UOA2 zf+pM!@N>Y%Zpb@@Q6G1M{F(&dLbiYz>D_NelX4XtFXF|Aw3O$Yiw7>$F%G6C*-v85O4VnfwJ*f9h@N=-6pIRBHnRO( zvY`?`==+q)C&l0ffHayTzF%;w_K03TAmh`t;t5Yg)WKM+ILCJLeC{y{^^FP*4a10| z;vfxy0<%TIj{=)Rk;tJEZ1vfT+HGGCQ4ltavwzg8Y5%q#eR|H@MHrz=_1?|}& zA+vj0bf6JzO30E|mD-?oEn?Q!3XfFmZZ5;%N;bv_4=n=U?UV4!?!$<~2yvoX77x)R zMfuCfc_dcC`mXUkII)u&GrPRvurVkHk>DZN(l7|dVolsl;BCTc4W%|3z$FmtxlLgs z<<74-{Afj3WfvVWS%5+z^q-ECVFu5We2b4|#96E zLA-4wRnZ1^S1+2a?kpsqM@Gn;av9ju5a}=`cCiI*g^5Xe@o2{9aOYu&I4J-uTim-r z=|xR1C0P-{ZEreC#k(owRlq&KW8a+&d?Rfel2b5He-r;4g&`3S&qL`Q0NUV&i7|hO znk&oUnxHJ9pcmbQ-J>>p{_lln33=vJ_;wVmY{>{6S5jXea<_WsZlzL`ADOZ#3*@i( zt1Nw$B(|~$5t`}@^rm~9yN8kdzW+B^1dLi9M@B4em?g5_G$a9ZK*c?$IGypcRYf-L zl0}qa63|?jM7IMLCJ~mh&~Ho`K#iL&x@#2xhc=7{2NXrtrI&yvccCc0Q1~vfB1BvV zl-PKc+$bsnHX(;~0hCkIpbCcriz2N?j2U5gs^qPF04_BcAc~KAfJB&u6?+gMJEK*@ zf-~fG6@m+=o#n#bN{C=^gDLA|f{eJcPyzgXT4TC|9gl)UvjxIdTA@9cgHvRWEuS_( z0%Kc`6B~>zgl@+P%lRn6Gb5S|ItjCF5>Uw^4F+CLFy=6nI(S1(ODqI<`aDiMS3=XP zG%(6a=yXOh*;tF3>{J=xX+0?%Ao2aAuRsShV)-oHU_IDs8Phg>=5({w)XN`NTGTv~ z$vLm=3$*$+fJo{I6X{f7HxX{mAv$4I0VZ%U*d+uB+$peW>=;OGB;N2JJX%V-OV0L_NeCZ zp7!_kD8Gl9*=9pM_fx=3M}{F`HnKSwXkqht!UlFl0*ZiAzc%St1HNqvg6JbH;3s)7 zQh_jw%b1xKP0Q(ICD5Yh$S$z>Ffj3vbpLKjQ=l49=s{v~bG=tAFGS=_0KHE$q=-G(_ zcj%}4o@$_5nn-2lVEk*teXfsjGnz4Cf&)9gR!MqOA&+-@&M`ue0RApN(e@h zVqr|RGlo(k;xqOjPf-R#*U82@33*eb9bm~(kDQ`p7YF#Dfp|pgJzlfkgPHPUKCmxv zd75xr)wgNLC*s}w-w4DV^6b$jO8M~X>{m|-)z7g0Qj&+#$=-qI&E zrd=aPC5%fs3;_|gv7xV^H@ioN4&tCJ4A5o|*jkdgsm*n@ z1Is|EK{1Xgo+&Q?ML@d01;mRi6$xTBh-gq1kv>ThGs_^l9zBQDT0HOpBdn0cm8=WC z@^K+>vZAw$DJ)owhw3bZJ0#ytX3doDPh~|WL}6sAA`i$5&j=OB)}$K}zz9k%xgI5l zv}np>FMmY&DipRmRA_(G=1;c*Zlb|oefP&yLd zE{RLDNsW&?>r@klGB~wWSxlLkS1pNmgPJixv=<`d;IFenvkX?9*3ZZ?vwd$1d_HA1+GV)>4j zkzH1IQ;?AG^g+OO*gipf9O31t1%=jlz}ke+5FWX}wy$YBp^U$G7412wb0z%+LRF}Z zykN}m+~L?p@idi0_M(MiF4Sri5qO3~&|CYk3}Qvi6^NRqFIFY?B74FbI)9ajSC;xw zo*7uM8%M}k3Y5mmCk)uHHx#*!7=rj@z;=lyR_Kx|+Q73r^+not_Bhc-ab@fTpA7e= z=JUX1Wv!^0uQjPGTp`JhWHzZ-1lbqJ5b1@+4a62IQw~l=CfZ%KHbR<)<#4TIXjbEI zM-t~~{;hYe5)hNH9!_7HbxGifSP+Ab635=77QCU zJr4n0O=AxlwR?RCV4ys2`Qf?+fLX<#kh?b7ON+Ub>aA+WGV1ukPiLrF zV5JCOG4;&K5B9v8rg(XZYa{Zd%;lBuNhV|@(_)su=})+)>AmosO-;}&j0|EZ*>;9v zzQb~OH|&ytnL}o>!j4v6ubgP%bdKh+R+wkSP#nVwsP>4}L_|1c?2a;o4&nD~3ox)V z8(Se98!ZWw8$;Br;C*7G^EG4`k=aGn^kqDla9D01o$nF=LgmJ9!RcyJz)>+rUd2B@ zM}S7Xt##NlOT?j@Q%6f}uY4J~r$wktn$ac8R#`BB4B-?P+OLXvvUe5$O28!%>6g{( z3)9Pt48?~amaT02NJ|g@=^0s>Ci{73kSpRLmwK?ePfIK4h6r{ZyLajV5G!(>zThn8 zWp`;-P*Nf=Ha8$6BhTJ|DPU$?{6|wSLPw!Dgo6pNQ%6H6!g-|x^4Q)3DavFCH4$%8=}=np?7hU5)CY7Uew5nl}|e*N?>%gM)clr0TR z7xiHv50H9-&P5mSo6v_L?#QCSg2v9f{CUEbYGqe zlc{fUxw?hYa92t+nPia5n_!6PS#n#x;oZ$K5FjHm!I-89A8Y0Cz!RYbpC2A-T0=^d zyWHZ#n5_XsY6M3wjUzEQVFkGE6L~3Dry=x=m3|qrn4k(xlC4>*um`iCA4zUsTUf9L zlAt4sg$1z`oWQe#U9;S!yLDpG;cQqD9>qfPQlwU;19WLPe}JZ}K9Lt;s)b4{D2}^b zKPAeH*-=!fQ-a8Z!)X#dMy+VMvTMR#K777I&EYY8B+rCPoM{5_@tLKIrX2h;;l}7V z^B&3avu1|m^b%77wq_-7v(Njn%A_T)pp{ZPyFPQn-OS_^0E^9S>_hIHAb|bAIkCHj z2EM2aog|Dw#${k0xXW?C&N8t{FDagBB*J0nCbOtCEx>MVDk$;6W6M82-X?vzfc*+f zh8Q0ZzQbj=(wrN1t0&}PqDebjAckCyab>RahB+6`Zi4ME||GWDrd z3Gy0q6th{Y3rl#MVKay_l1XCR*K}s}nw$+Btrl)(vm|7>P)AWq*M_+=tlm0BNM>zw zn&Bo>IW@u5Q^OHfM?sL($8jA$+5F3x{OJ{@c5vij#PR}G1O{YOVglsmHQ`y^AT}Wo znvn%UWsYG_$ByTOZ$(?JZ6xfe5%G=i+76oN2`j-I0^KeEMvm~&86ffrsHAYk9-(Mp zaKc7jQhvnnaAcJ4fCbILJu`~zURIk@K!uJO5(?vy55qgOLPK$GXtEtlCqrg3sEB5C zjHQz|Mqg2yHEatp(j1I$eB&C-prws_uj;~Zm-<7vack&CbP>b*3rtoh%B$4gfLe2G zRNizs4|?L-09YJWog-S3_yCXrT0wI9!rch!A(hKv7j<|o-%t+{#W6eCn%9dbXXE~4 zK=x9p)jD8^w!tN@bKk#=6HYAxhtWUR-ZriUmG*A1*Av-lIVM)f_E3%mXQ487)!z7K zM6_beR&)Sf#*7F9h79~PbzDAbIkAM+8&8aHL#}fbn}7j$iG;4fO|GbCQcO+s7I7Fk zy4eVvIjEcjIj(7|d>j~B7#T9MblGzwcayT~5-2cm+(A4`7vQDN!4i0>P>O6i;Neap zYMN*Pd;prC)GMUtLYD9nSehB+-G~D~k##m-^6n9HECeN{ zWDQ}X8}v{yP!m5eu~=6hf*W35Mtq@dTO-__$y`gZwok%0>!e)iaq#h48fkWjx}9v^T zwYEVHwa=bgz?&H*CSQlX?#eldVlmQprK8sAhiHJzZgR9`vaELQI78Zrebp!!PcV?C zrb|8MpvhEarBu9`9bsxS2cqFA85{>*=@rKF&dRs-qLL`_EO7Z=PlCZuJ7egAKM@6z zE73NR9+K%`d~%)I4ELJi-bXhs9f)b|$Qg{4LL6AsIa@iH6sK#ZyfZ6KhI_``%oV13 z1b3kcLl0|ze7L`A%$D5oJABl%sTVEud@t98K4ormnx#kDk<8Jx_J{y_GC~nD+eV1) zht8}$Hf9|XXDYHw2CixXN?u`k3^a$gH7e;OQ@Q>$Pax!eFCejq3D2K7d&963DrF&(g!go=F^`SIb10mW6Ym!+gNXQNRJwkL1z-%`h1D@`iK5 zyHf9(a|9%nQ078!Da~O-cOnEn2pY4yuMG4Uy34Bng&&%eKT4H4il*r;~ zshPFg6@5{BCByJ30IZH#!TiUSo?y<>yRmAO4J2amrVJnPgdoM5=#E7$LL5_8CzZ9k zBlV#U^+598Qo9e^o7ioQaU01KMVr3qfIQkCJFj=(pfcJB4((WAq$LA1yGULFLO9#Y z$d2iPGEkDS9fvfKwpV8&imaIuy|T)W9Wh8EZc>|HpneN=UgRbdY9hkOq_jD+7S!a8 z98$IMh>+>V&v?EIO1nkxf!z;R*mX_abqV~n`Q^B{b8bI ziv?{fH6j{Ut&`=YXZ4(u;~*T{(RWwz_#2xyfE2@fW$s|u$@4HW%&mo48NT(nof4x$ z2S+e-u|X?DR_Ck`B`NSzM|x<)Fgy_7gkQ2#>8--%$YzTV9}70F@gG7KC{L}`}c z3#<1j)`hzhhDX-}wjBklXht}Ygb^_tl;^DK5@2R<6h4h5~C?f=5xa#hJMj zN|4qkwf**8NJEA9Fv^(K*_k*2O!StCWL7W!P1eQ(v2&W4u3FJvwz+K-%bQg`g&b>( zqz@DqU?|r%4acF{bHr$0uXS|emXn*4O@>O_HO|IBAjM?CF5+VRQMv%eJAkoV&WJ5< zZ9;dpo0nKb^PVvUCGrO6E+-M?2UvGqY$jqLfU;B5b*5c>@CSIz!r|5RJ}^&od1wr$M4D*bo4@KWn4Rt}Pjx zXqWVJ?*Foj#R6q^=8jU{^`~`W=VdkXWad^fYUJBI4jK*z?@|nQrj6f~QP6Oi%#BNg zIn#Ipny<%Up^!Q-MtH`6&2?s~k;w=w0quYY6$*fxjUmAYLaGz%s5AY*wcjO(@(Rk1 z454gj{AR%*%Q-)B{zTO@K_w>Zq8PR=w~oP+rnv@2Bb?}Je(Ep*Pd%0aAc(qp4VkXU z5#Z9G@qW`F1|^JifK^M1kw2R87_qUSayusu-82Tg3{xPc4I~xK04b;zlCERS#OwHt zFq3b3^GxI^Jdqg1g;_PSm&mFMxbVGtE6#H8pn+DbiDBZ^+jhX z(caB+P|ToV;L8I>@fUzUG<2n>5pY6$RERi=sxhaF|B&W32ClH^qfU>=2V!H zu0b;igVdRecl%swyyFt7Y9i z1*2`%tnUMNeLb=GfZ>b`$N_hpv#%psvbSEzCS)VY zp)k(G*kRX0UgUyjDX7WqrVOw_~?w`QmXmN?6PZY@v}4v*TahZxPR!g{ zNi^mlm!3OUM8eJ%yXb>0P0%>k6hONjJfaq#YkvdQwXm}Nrb-bRd*nsQVi;0#V$P8Z zzsC#$#??FL?1MJ)odnM`6c>=sg9(mHycF|(6;l;;?i38TP8k!DGhY5Z8TF5Ifr-WC z&s_CEzmFzY1+rQAZNxk!EL5sBZ{lWXbe}nwe7y3>?|m8}oe2#gOrhuYZ%-^n*G=LZ ze;}H&*fF7F?=3qP@7B-&mdY?QrnK2(6f2Cy_teW63rm`4a)adkCyP}2O-dhhDV?CG z1l4Efnu+%uLR|`5gx#}RkQ(1gfL7RQre-Z0DIB{$kod<#vThQomm3rg`>}>k;#IP- z(NIS^tfdY)Cn+N0q@oRPawH?3DI?M4^y5V~K6gnwf$1{QVvcMCPI6=8i^r4mHc4%4 zLhA^jO%!C9a2nlFoA7(aha^+d2E%ceU9?n)-!hLqxOjq|6OCiwim*+?HEXma`Rn|y z5IL|rc#$%xubB(^d&l5u zI%B+OEV4_fh%tE0hzdy6kh?uw?A~cd?GRx;$u&&)0gQT>40;$<%V3>4$IQvF+z#r` z0^t-GMB>8ZkQQW@g?lLnovq#Jl=Bg{VP7~Z#SD^!dzXn%0}K{qY41<8^kyVN!D97w zMbf8Ac9M)Fq8lw9@t|lR(kWKIhhvt%iGLXy2gJg@)R>iuh3*N6yCucxiU~Ux>6Qz$ zutX`=b-2IFAoAIflae(|MDEWe+}M+=9M-l%`&==B+_O7K#tlqem;jj)bDeF~r_8o6 zFAW;5Gds0gX62M4UongdjGDXx2TX%Ug`u*S+En9ImtfFABC=-0qyq3vtaJ(!jCPaS zFS>WDOOml|_dRXX;B=C6c`%nWSs7qSGA9YGh`}2hg(?b19n)9sAU0*LDU69+w(`LAP;)VoHwQ*4nh}`z z*gEvIH*nb|!x33m0E~F}mpriOz=cLKBbpQwoJXR&;>Dmv06EZ75(ULES@sIzZ3%kH z^p}>o@W9w{u*|p8%hu%E$1tp}sYi(JoN&#s3AY5A7Nw{s4OpK$k-H!z%iu5wgUi4g zVaTbgp&Brq_-v5HWHU@N3Nm3*@p2txjq2bYlZ|HF=0pQ<8D!$!(1LWLc`Ya*oN%qc zI+Oc4=?}~B5RnD0b#Rah^I8@_#}H^Hw2-#;HDl8khG!HSI9DC*&*hW~+;mg|C6suB zhaaXn5jKOeh0C%7%XH;02VN?X z-GcO*HPPQbwfv?eEX4UYVqA=x>_R-qt0 zWTH|?Xc{eFl^}sPY?v=-B^RU5?JwUp(`Gdt(%hhGD|ls0qUCgj)1d{gHF8UG!6%RK zDLQEpD`Y+KGAPX$(TefT3fs?x6xz3E#7i9NA0Mys<$+2F$`}Z@A)9zcy|S*&5jFWE znDo$Y+Ns8gq@67}z@kXOu>~X}=y6O30Z@z9yf~9cz^n=8v=z9mS*iQxH)6|Bz&aQ)O(w3m7^VPjGbA#a zF1wbKM(pltI`u>)u+_$91A|+&O&TNEZ_1>YRw*-AFCJ?8Ef?>PMHD@WQ>Iole@Nl% zCKMTl)fo=`Xa~Eht=Q1;p%-?IS-$R~Oyzc?pU@RsaJ^1l@ST(5GmSI3?&sbbz4oYmx5g075~TpF^3riKWUWb zYoetk0iM-~YwtSFU4^tRaP$~LMe}h)0vQ)fL-9Cg7HR>489G~krVTg=^enQ_ynamSnpIVw$W9IOcxRWuB=GnL$HrA^fd?A;>L40G%O^`_y z?;7c6B2bW_j&Y$Y#thMRwc6IYNbb)uyP9VdZx6^Gs2e0~w&w)%H(ZxtvDk>f8Lg~~ zuXEZW_sa0{u%V6v*kKs=_nF*FIq}HJj9i3l*(w3Z5@}5mY@vqHH5j`k3nQO1ROjHp z;gbR!!Ww7V!TF(uwhq^a5t2q>5*lw_v05}zFJf+Rlx#$Z6?*7VGN2qfoX&*0FiDM= zCdTD<^h_E&VQn}vDiIF|O%s?p?u#xFO)#*avHbFkakv-g30&24k(s#Gk`%j0taClr?%%N=isDQShfv6oOX#&M2GDVdg$q#zjKvK* zLDSM%LkX~fddUDKBfCcpV;at&^hS)s8O6P79kc!zPzEGIm z{)=EkwT}09Pfl7p>iLge^XO=Acf0v~uch{yZ!mMx58JJy6ZPg* z>p&f1^KW+BE!940VujrU_2zi@WcT1DHHfLKk9S|bI`Li|?(MXWDMQs7^iCDkQSt}9%{C0XqTcMDygGb+Vg~OWzJNx4RDan$*r}=3E;ZEp;pn*4Zo>ee z?cIGCaSLAV9&GQu-hr{y)N^Rz;P6E4?ZV8U*vVnd!``H zpi!^6x2FzT+c4hd@sFzAI{tolo7UmDb=2HF##P!rJU+%&4i6ZN9yi#y+$cQuwAC_W zj01$A*7pb>uMhTcC5~JF`x@qoP@=L>g6%h79=B+r9hmUm?83ls_Y7bt28aIF z-}uZO?27HX2$X8?u#FJt?KDrCibf2d&s$jfxOD&vMQ5zJz5V(a&Ks7%8ZesnYdC?s z2fQ0NUpnHu$2*=rWCXV_n!9_ikMn?sJs-jnVv_`b&Q5TN_G-<;%~!iGpsVdyvTZ7J zlz&vOU@M-tpjdO~`&~MY(hm%BSJnh(M=i)YGW31j;M^jZ62m}XyWphaUS7Qn(lZ`0 zSa6U5WNUtJf_$*0t1r>ss;$a7p_-B?F=Td&PO3nzTf0&UKS>H+L-hmr0uQEv<=WBpq`MBQ)H*Ac?v$ z0~NhkIQFusvzZ*Cbekv|<$My^M7%n)s?jf{uF3g{*of88sM;4{pe0|m>y)AVwN2nI z$)Qufk5j`Do7zKN7$_?Cwjd)S$IPDdwWOJhm>$tzBF%K78fJqMQ%lr@qz5J1TStE* z_NUUdxgZD3A!Gi)QA|u7%NKO?oc_ebcBNFdNSg|9eTU0Q^>vIlXa3cc+=-;=vm^}q zs6p{fa3T?qH=apUB28tjY_F>CFgo2c=z*Guwfo*P?)OCUwQ94C%yvI9`NlJw9FDUI zm&I?WT%$OXO7_zXe<2P((`opcW@8GX1#3sa?nf(Gchl7(XVWNO06R~UyXpef3))GC zxN)ZJVLLf0E%Kw9T*DhglWb3oUoA$^;NY4f{Itl5-LCSK7cA~H!b@4gs~rT!#c>uN zu2mS!ChMqCsE=^r+E_McE$gN?EOF(WSY&oBnH>aRN6UvmeRnY)kDjcpU0q!@&Z9{q zPR`e~xyRZw7*G>U_t5Fa4Q+x!L>PCH{F_scQ_Opm^CfYFQKK+dh(AKh6_}fQQI1?b zRIIEAuCS%1v7An};^TTGV^7W~rE#T6kvA{~h8BJRc+Yj^5@xJ9fZq+0rta!$;|Pl z7Wgz9r)VQdc0t6Gl#aVn^F?N$OWU@6y zQ%mYKfO8$+phbhot8EqpozX8yR>`Id`CC97oNkS@UKjz1BY@WFs;u)pIVDwCuMLZG|WV0W)?NL-kV-Z72 z&Kzl6%d_|#U1?i{D={y?)ZN-{1s7xw&A^gr(mk{i3jAJ)wgyA$kjD*L50g6x1*rpm8xC4q$hF_wV?ZhQWDIf7sY)JYL%-!f`J?|H6H& z!{6hF59#ykjjuDG>+26UHrF5iZsXyDM~@zTy|J;m@w@enjR%{Xzf=EK3(1pNH=q9| zf4~o5Y?1*h2#p=1cr90UT6?XNR>f*Qr7#Qm8{P`yBQC_EM}rtS&`X$dCfm>@G~);f z?Z&F-ZLV)VSXb^>o?wY10 zyO!DeUaJ+NE-Q$hC<1TlZF6m7b8YkMJNDL%;}7VA<@9zOU}kDc4^8ioG^vl)>UBVJ zI-cIj+2kApb+77n(zyGJ19+YtH89OMOQ3CZ#D;VXw*awS0htLs1NLP^!uz|7dP7FN{>|F@<{d{3m(~^B z3~q;H=SV>tdy)+~KRPvIbTqg}SOfNDkgn|m4U0T#11?JXYf`WoAbn7^k!bdqD7;ut z=-Uez>{u#Kg}gZ3tx?C4wTV zq9;z&8<b)ruxJjks53t*T(0G-u~mAVXlv-sygxJ}L)FxE9Hf+eu8UJR2% z@}e<{d$z9^6mQW-E+*C-KAaWcA=S=uhPsRLz&9~tOqT!8)Uk(lP8GLnea->~R1GTxnA;{B! zsD9^E<(k{?@ zupBug_ESM|Enb{)sALe~H4QtOu$$V2>RtpCtI<@2(^h(Fqfuvcf$jpm&LkaR?l5eq z9S{5@yaSruu+X@E*F#$}&0|`i9?Hr|k+jBCJdgl1-89qdFzmsB9Q0soOVFNuI|KSD zknR&zsn?TWly0HDPesi@D&^(vph^$s?JI%aZ>76t;&URD6{# zaFhh&F~{rbqT4UIn;8^H1Pf zpkB!Urw($x@oi?1-v>Ro=+!iXPkJR4m+w3bc}l7rQ&4qnLKu8vVO;H0<4o}hiDf(J4i9QymhMvFH=xArp??cQ3mggbjdf^^QgM?%TP7yXf5bd-6h=Ru^N1D~GM+e3uR@6LkgPb{}O zqsJ*eZbZTO*{wWQ{ck|-BDSgv{-3b~Q)<*X+r9exBn((cWC)&MJQ-!!PHE#3XbaN~H8SJR-{s9hAK>n~uJ%vODO?e$s&5g}L0M74=4>;n;#IF1DtUPf+dl2TL>u(fRlyGms>X$Lc%$R|bHF zATYJ_Zat+;HjVDj&!%$$uZWoDqz~v#hq@aYl*nZaPjLYh9b6!8*WZU9P;T4)Ie}B^0g;=Ed7zWi;jl(he7>C^~bnJ(48iRq_?_##2Z~$e# z8xFf&z23u{4?qLcE%(e`Z|8Z|mkCo!=0m1KfB*pOS2kBOo&A}@$i9IsWaV}47QOmg z^!3B_XEV^;b4K!T*d&7ntmAp#M^jf)Cj&7QM3*bC4)HP>^ z&pO2I58-G8CdzbouyJX3(vm z*#oSoH64pf-Eo2&c7o*^j@!WrNT_li8Y#i^1a0b=zF&NN50dU+X9lIf2tU@4K3Sn@51E>IOgj#_t`A>g%UG=^8t2hh+3 zW=ALiN*{}y=@MF0y2fNq<9veG4E?>Pq%S7J0;N0|D_DMx{@@6Y+y>IgnI7q!4al~v zuWhcY9se@yp@#4O`+rJLR1e?Rfe4-{Ug2YZ)I8aKWvzkyK}LFfQHI;N3WZOZ3~$AR zTv~A8opx+9GxE!o`Dkz zEb~#6(YH=DE5rZ}h@|68(5APp^jx(U0?rM+w%@F6e!Jk>Iu)CK5+jq8!paO(DMlLc zOSjgW$t4;?=)aO$T*9rheUYHT#U})a5xl-0X5c3;!zr4Je2WGj_RHwRPuQ* zoji4Z*wZnLP+Vx$OlR@%43H@hw!9ZeFXMQYL_c;XV~c z_C_Q+0~T75L=(8dyNY1p==BNt0HZa!tk$Cv;rVy7ca)Z^z1w=(0=8(c)oiz%`j z-E;=7D{TPKl@F}!E?NKw!(avzxlIWV;VvGE97wO#gSE}a23 z#18BS`itSkqlZbP_mldDy?&-#wC!Ll8hqkTk_iP&6J~eu1zooby8f-YgxlJW;!C)*)OVcb zKrFZaWLMOg(Q`Dh$w>X&8Fdf^eM|FN|2A{2mh408dgN2QGr93q8vc9-8QD7Fy>E5J zg4v$cnE&PA@Xf*V*Du>zT1v3PxZ0ZW@vg(!IH5dRhv}6+=&A3<_$#I#S_+H~XlKD7 ziO=G3262|~-bAK7QH^eTsTyH7Rw$}%q?hNaaWfoz8EBhhZ@#I&2+ryoc5ikM+9&AU zo%_@5FrEtr8YpYmuhbx+jySxFCny-C0lDX4t%KH^c8QngEwwT`R8}hqdg#6ujqeIE z-#Cl@&9A!XU-P1WlQ|G2%E>p0PjcB#XZV3cNOZ%#YJT79wA*_#PLi$&6vWTg649yt z)86j$8PYvnAMI?)syn?ey2@YMRbKyfLHlv%MeBKIW4%*Ar&$u4879|ySJDS&>xhVm ztKM42Wvc#v_Wrants_|+hv%)%r|2P?5y*gq7CVum#28_liM9b0+p&Eyf+LABTR31z zN&NrV&+DhQ-p)B7De>etbFVxTo6}46R$X0PU5m7Kw{}S1&-8C$oq5l(@kiBYfvlv0 z0TV)sB^7DSJJ+U<*1YhuvuIoY)~@m(2z4s0|iQ)^rPbRdP=5ncu4pXrW9>#SM*AAJRA0Y zo{1eb#WcM2wRwP|fIfQ>MC9bUe#W?nS=rT>}&Gj!A)Hfy3mup%}EV?0lrV0u! z4}(SG#uH+#HCIm_D%#Pspo32?xIwX=%!D+jJ+VS*ZR6|TdmBh$xny86x8%Nn=jqmI zUqJlkPW6I1DM)e*XV@k1&g@XL4f~&h&@8B-xgm<0PMT#4bYWfA38lbvl9x|vx2m#X zhN!>h-H(Y^^D-6TsW`tl;cU>Si9EURDr5{9_`!?g>u>~__Jv>fGL?ZFp`ANvE<}pS zvv&o*Oc^ORC976BK01n3T%h&JRV8-PXtL;;L|3t^hU9M4>Cy7AgIa{PfVHujfHPXv zUF+R0joI0DcGKp+_1xTQ{iA%;+SqKlEalvN=v>#WuK9wyeBIYbiL^RDTNb;UWv=SF z^)%uZpG(U$0!eTk2D$)`SjyI{(&HDqw@i+#(@#)by2k80E`93QTVz7N$RLZonzH9t zjHO5N#@n8zwb}+YAwpcWKnp?MTBrDaHc?reae7CBFI2HZqmu;$KpTyjr*=B=L;^*c z4gKG%)ga4h5of*hZ$+F9LY(!IcLt;knJ0`k8wZ|j9v&DgxdqF)9~O8kvm(Fv^Id$~ z;I<&66@}B5FOi?C$&g-ruCltFuky_z`D=g@f{cjl)_%3p+So>j-T zAdl`tddfj;WE1?{iDtKLcJaSpa{#e!55{CL*Jl;sQ0)6L$^(b-3)>%mFGiMv|4zp# z|4aV3{$E7I|8H@PGT;Bp#wJjRnE#jc?I({P{J;Dee;hxVvixj7d{RHIRQJ(i>)+K0 zq@m|vC_xT{u|N<64KjJe=p{O`FK~iqvtFOo!pZi5^w3@$ovt19hO_G;x{<_KsT6k` z50$Ws&Lkx`0#Gm1CW?yMubw(AS69E?TiCDCzD%HpLIKpehVWyp=+ zY$yOTTF(n5KH>+InMl;JQGpC+I8x}kkklW<-=?jQH?A)Y-@pN)Y~+G~{jN%*)?Fk< zT*pc7gzSTe!CKEQO#$L*6W5l&Geg%s9BiR6>0P3vSAA8&*lVM! zVv#*azJC4MAjfzn(OfaI>qrMivQP8M#Q(b*u|pS%xQ<}#3}fh~F%0p|Xtsi`QbT5E za6fe!J!7X#n42pvyoUhfYUhg_=YC#JbazV()ga?6T1@98G~uYL96=N5{?T z4m-!y={nL!WH#{>F8h%m)_yiLT}Cj}ZN1;~55NH%9xr(&&8oFoG+AS>%(=YGf$MNr`$&{oDX!VY z$T}1NU3elcs0|Uk!c7*d^Ru^b=sAXgW3|650vp$ey!6A^UiS9UNxk~K_SylcvuT}( z;F2TOd9#ugQkk1OKM2Q8&e~be1h8m3r8s~yFVIQ3`BKNrW4c3aARt^>^op&+1)(lA ztlXHSX)?89ptLe_OM$fq65m!%Z6>1P|LK;}L zhm>}gDQ*?@f|{xAaaHMRScER>lbodXEkV=wb?;Et7Eu zE*uF!Bk^&Khg}qsD^$Hh^})%Ag1x*zcb8YRMQ^NUP@=r~^P3#0!T>q1{7= zDaSoU5Qs{4O$nWJO@v}MiLf2KwB!#sN!{(rhu0)tK{#vw>YkGq0n8* zw2Y>!wDL$U_-jDHDrxIbqmDn{{*9qrMM$IvAc|5wxDoE7M%BotyK%kDPL;n>x@Rl2 z3S>Brk~5%v=_9~??JQ%yLnh}Gg--7*OA%_0OA&Nk6_fuz^OsQXNl2m)?W>j~6x!vt z7HY%qJo75Td&pXtNzilMBO)AW6Bl$Af0Iw$$mj$H?Y{VqB9Cbi0cPR_d^bmgWX{QV zrC+At^%C$-;F|L!9DeEngUE4knc=;j^3l(60T?2y9+~r!^3R#bBTI`o-F9do2UM8y zBv9!h3U&~&Bav(CzEHrr31hUqvoPDKLo-UJ&-pAvH4~Z-I~94$Z6X}%hq)s06k-3) zFbcxWNWwCkFtQxSUT%DO2@Xy)V>q(Tzp@A(Sw1~VbRdSx&^Zc^#9oBaBWISPgrh5F z-Vq&OD5IWs)6BTj2JVS@YCL0&p8-KLmj>l+3~g!{RpFA%q?r3F^@2APwJf%RCR7wM z=#I!0Mn6QIyV2yLsLIcq)j9)@Ed0D?w1-Y4vXP6QL<{AitvB6SM0X73_Q-kEUz6tO zq|ryXbk6W`Qbu^-$Ylm_44QVCp3^xlFeJ{j!z;U&6FkA=19GU*eFxs|~pxecKA zN4;V~gYBqN8RX3(J&j5HSV18{Ti=m5pU<2qeluw&i_3L=|DZ+JeXx7d-U@g4)tD}< z8F4v24vnQgN*IdDo+uNS%853qm z$50-`PNI|;G1A}{O`%+d^wr|i=woQ_X0+)s*Q0V>pj!@j=Oh?dJ({`KVD-727qbYKF#4cmufurUo4GP42Ts!H_2^WVVye zUx}j^n{#_JC#i@zsI8RC*)%xKv4P6YsZ{nlUw@-2&kxEk8heG~4Rug^20!}aQPjKk zHWu|?w@2RgO`{kAqDv8lQ#+{T1 zo`frcyU*p~A;gX_i0QHUQz(2#iUjy7*wXCinz=kW+RpP!JB3UOsO@}f3s}h15Cv0P zgZbeiWqPXGEb?N78r035Q^hG_8!62nIIIW$SCY0$vGHTo1(m##-ZXHVx3$M5gJ8R; zPW5?am}GLd;~;R}MS4fTiKQux4kQ-f`8S)6)%hU(8V?e_cv5PHZ__AKnP>rRxYqZhl$b~xjh_t@s^+vA*mc&G5!Uo@Qhd%SRb4p1amPG)gFq70stsx zc3)h+YQYCb_F^$Lhu1)8fL}9`5+NW5k9aPbktb?z$98t(u|xczz~ym3GWEcunH~_5 zc(jPwnk|^l#~4t#EnZt(lV`)1I>J7pZX^Ie(J^Ub!kK@CE131ge>tLMr|4vVM{?fE zf&3nGj`=s0QiUJUJ%nBX&sk=*-l!cPy20+0DVgq<~+^Cu!xORPHu??qqsQdCW zLSc_}{-1xI)~ZdikcdnO162GcA*Qxk)!tGC*aZT+NPvP1Q?;3=#|&8St09X#wbCa7 z1R^sguRRiWYyKZH6y`uvMfC#N5e_=!h^f2b*^HzF(yNY4x6I<+(dnU??#gMsjzLJ_ zW`%sQxd=t7w9d6BSety=ntED0=A@B#V=ngw9Ai(v2jIO>x>@k9(PEcs)mz_p@)R5k7sQpRM~R0b|I^q@;o#-^!3ULrK<6gi%PbGX$05O>4y-!+#0<0l@WCo%&)e6t6%{%kqmUC#1E&OCEuQR4S}LDF8n}z`t&61^|$bb~)>& zTKMw1RH|>Q?4UO#6Nxp35ozozMwhv~7A>?RfWlFuCn23XBp*N!k5%@%BhqRHc8@Itu(#nbDTqf246uTKTvS#n{T$%Yh?K%B#pBHmGOx#`E4tGRv=Hk%}bzh_&21%Ni4^_bKc-P?O9(( z0q6MS04+jsyL;T)9&&J88zGjbD&mms5^mCrriYkt4yPZ7ker$@_RuPt9%-u!ceVAY zwL{C-bk4K8pWD%8o8yg(4I$zm0Bbv=nqVIQ^(ZKecbK{(U_5KStg6QG^X98^y{c*r zRI~oEwhtGfOt}HynY@W(t|LvWeZ#7c)c^F*1X)3>}p&YARuQhNUp4X3|0h~vu zag1Qde7ssI;36O-oM(SIpcsCiHmbHq`_=LRz-u4?w=l0}^}0h$d!+9z`n`v*?Y&MY zIvf&j9DloHMX(Es0x*tgPXK^(51|0P>>-PWBH*iD6pCH-V5HxS+sJn#$F55eDJT#v zzlcm<5;S2v=|PRFNpA{wS_y-0LLTT)uezrQ4tq;uMqFt;*A8TiN(uW2nV6@sF^6B~ zXm3JdT~%|@qp=)^2yaC#5A8{nrRRAbIC&%lNFR{3UqRh#j_5O)8Oc7qIx?B1E_Jj< zE1zdnriU;@DVt>1xLD?iK=!HINs45SdfsPR0)j(C52!|4QVvIa$Hez^nOP)RWJ=hX zV7xorFjIO>B@IPg8Sg7Re<*UoTW_AG76`PzR{wrLmf9(%yrO4?hc6JPSyT# ztqG)s1WI8CSZ`b>k?-qqVcC7U;35L;6yR=+Zy#I5O&l4LM16OqH`7RN!}Rdcn-<{~ z(VOmNmVec46+UMWB!)LZ6h5Q4wIPQZ(^{s^g__=xdq)3edbx{8j9m$bpNbgn1cx*D zgk!^I4u7OZ2A`mr&RC~bPAIiA#?(tVrA)@l!{dFov}%WXPTjbYA_CGA08^9ejklwi&<=`?Wfc0h4jI=*_)#(I1`d z$#2Tq!+C7n49-TlhbV+Fsd9+um&!0IIIqt|JP?dE0ogzRA_CjZSjpEl6sPi~Ei-$R zQS8Yxz~mM-vp3tDTwUic_9oZ)5&kuMbahR55=Q6>hxB)0PooK`&TRLn)okiLroGzrBnld1F}>raKgQrQ?@X*Mcj(> zig!)%8kY-dOsY$4cROHK&-4^1hIF>5OK#AEWLIrYx>6X4k8Yc4=pLCmTT`Ikq8{jW zAPCGGTfv%&W_uUI(FFCX3f2*u)OIy3L?q>)B8lCQM=l113-zLYe0qWcRkN#OC`%_7 zm4fmE1+;?1_!f)O%3~=gK0+3uF2#kWq!q_fP~3VYTsA}`UL1jo;VG2)ixxG2`Ix@9uV#Q--)&1ix$TDNH_-Rv6F{ z7uNqI3O92qjsDWA&8?)7+RW@a>_b;7Zr_oHmOl23Jo4Lo7dqCh2v2auF=iPSSsXusD6;KJ1eENwCDNFF)1qlyr3O zAXM{^1H1+bZeV_)Vv(yLi+Vo9P^_8drx^=Ya&aXAES12d^B(@Klc|TwppA5R2q-|a zvWw3*Vbtyflo*)q{~~09dhQJC7dyo^R~c-fm+9V+;=Cfwv1^o3-~F9;A>j{dZ9z|Q zLTYI0bNmBg0%FYv=blsOu9$0>UZNt^qB{rP4ldEj>X5G}=0f9yeDT>PX?{I`#)Aab zWYllJDKey7$qJh17~xk`No}aorYZr~MsI5qoHOdm$z+5PM%m#c%J3&sEi+Od3M)lJ zXrYcFwXkiFb1JS;s$GX5jzh`GMrLc7!UOOJGQo%x^vyN9j3$tiaY|A6=UKG3{5`gY zj!^=}$ye>()J7{4(}_?br?Q$7$oA=LtgV+8od>;a@?4i>v!tTmxevioR_F6f<_0vFp(??!ct*rfzGl+L<@0?-4@8z{$RRp~$t?jCxch%#wZjf+bgA!l0Lsx*C}a@XBi0h&EJV47{LPQ_fm# zeE0W~^w}gT>$c})cIY;H=%ifSqlJ<~X_KIYtr+uZ0f-QoW3^1p- z27SudPGvAT zL9D97MGBCf>qUiRN}l+JCYID8pf>jhhQlWy9+o}_GhgxpwNH*4wb#(ZO{A3ySg(=9 zvzg`WY|xHAszM`2GO0{nMOsybTZg6BMYLFp@L?|70gJ-8$=4~0!E9EXaW5foLJV9o z2xzD}HQZ|KeXzZBm-B;eaVaUmT9&#jX%mp#i?q@Pb97NglqJEF*q9Ok5V2rd{5_Ic zwskVHP2$`AGc#hioICbtFlPfVz2P5s%vqMSE{~=g(>8q|nbulXHejA=b zXv@+Xa1Ea<;XD-cCLfa(?hYM5I&b zO1uG(T?*dg9osa~0Y{zTCHEjS5bV-np$;`8m3A;1v6FLv-gaa9)#22& zK!o03xAz<7G^9vG zi);t%O#8Pyidv2u6&M(eURcAy*ol>3o+BrtF*C1PCMrzK6qid_;})Vqae28#nUjH+ zHyKclwA;iBHQw&g+DV}+^-DB*Fs+l=gJq>+i2(QSNeFEC_qza@?{oUHiEk0~1JIwZ z=umP6F7(nE>ZTYqOMXihWd~{x6Sx^Yk7L1ox-i;yU=;--8D^j=B^t=G7#_u^idKN7 zNBrPQ>WWx&)&oYTr*-kavKK6CV;eE6pGPX&K110wcJbDZi322t}s#NPFkSHv^av(O~}0_=`KUh zex>t_^>d_2W)$+Mj&s=_qeTb{Uk0C0KDIK|< z;I$-jS7aBIW~-MRhF{AS$O@7sYSj4!aGvh8lSa5)-%R4b_Y5|U{ZB}8fk6~JBvw?P<)(^BrA=z$rCFX*)lnun3Gwf=+TNWiCNH$($ zbvQEeBy9r}KE-Lb_sj~{i@fkOL1}sX4G(6EAjPN3=HZ?vA_}**Wli(9aK+=4?Fwv?Y z2o$Fsj!;u*ZY^VN7c-I*KLG)0potc>(GC%pkGO8VA%P_Hq#l&H-HvR0(^ z_(?NWO6IbSO5c$p9YeBP=Y?;>ZR1QFW~zWXsD=)95lX3P+%h{a*46B8Wy(%0G;Yen zAyy@K){GhQ#IF6jkm;iI98o@Kvw@=a3}^~M88Vla4dI!r6L3P2fW1MPPTEq?*RT)# zEvm#5@+HwTh@q#8E9ki?uN-_ee5GkE5My<6QAHEU@K6>0_=mjlVJt#?ay`7UzK$+r ztb=f1OyIs2viexhi6sWJ88iBW8#}V4qz}pNQ6pfQ&jxTQgY?;l(J7XwJxL1TQz@$`*aQsW$oCI{@?>^@pl44ST~CM7s&O?HKpDWB6>3#w`KQ zI|;2(J7a*D51c;jpng$3Lx$MaHG)q0gM^ko`6Or;9U?H2zzmYlVm1UO59XuE zut-{Zq(9PjUB6ffmSV^vc}RW!l& z3BE`69bIOcdU73td#Z~*o>8X4Hxb%q`exFFty~DuFoXiH(W1x(Wibi*E&bH%&e|OE zLKKtHCx}*LRslklL=BjS(M9S5K+Af2qZda$h}z-?miDV)J?U&~M`&!PFiVw-L@C{&sjQ38ZP!BsTweGFM`W7L6NL`vMS;DCXo z+2K0OMqO6z4~ES_$Eel)z1b;vkzyRe;wXY4FXlXJW^UYhAkFx|*1=D-yGLy2f+*eW ziV=Ui>sf3LnPvx6#CXt-`e8UWK(Nn=sFHbT5ke`H_12&|d`GHI)3O`Xvodq82O*mQb`b{PT9@XOP~ z@{uy$D&(Lc*GfH>-*tNzg7@4FJ|v+9z$SW9=ZoDyvkMHOORbQ9@-fZ{nkd!KxzPCt zR-4;StU=@epsDS%^U{%3&N@dcdPC|FhX(*qd?b)@nT#ajtrm$lF>>^KBZNyfx!^7d z7{xP4)^jD2E3#G`l*sGj59_o44n#jT_HS$VB61j!uOxDlXq|*u#}YyFax$7-TndUY zdH^pJxvrtnVbodQxCei0|sCSR+x;CS4lLji3FPQX#H#B(n_ z#okjlc=%TwJAxgP=$BBOOq^TmL2Z8n~NIu)O5y;sDum__-0Pn?pUH~TuIDBd( zZnB23coJ||6f(78B2Nj|-BCfhTML-~z>R+r%sC7>vIujM7?8k(87R7*AiP*20hWu5 z&7*NQX)zM%%DIkC=PI=GNar|Q(D7Q5AyI<{MY&}=Ej$d0X z%cIj?J8eaEIQdVyHtrY2rx|aj(5lAnmF3xC*=3u1>d0%(V3m%$y!PJCt<#t9|WKxDdxp zrZ{TE{=0t96geF(>Z6_e8yPQ;?4>S58FVCWobdt0>6R1>B+5)a5n_RQ#llxTRP4k# z>;rQ`1r*8UM)cW4!%#ogNWnH-)JY2?2=w%9nG=?xvHG(45r zQqB!X0G~k_7<=>=Bc5i+n~9jzie?IW;&6hd?T{C1<7fuGhKN&R5-%njn<;migd-EE?OT%@A0GGiVM0d%&D|U~ zCUgCm@QFoZcTA$S;j%>sK_Q<@tPe?N>N&dN~#aKT{boXI;x z6j+x7Bn`Pj1)Mkfr~$quWPYBG(--VuS)H)?@PTYRLSdkD+MjJiTt3;(p4<6g^J%ez z#?>1t89l!|^96}L83Z_lY?PCzAUt`_n($!=tXp`^u0XwfItS=ba`-V#LjWpk$7*f> z$@mDybJ3nUo(rH)feG+H+X}i8T`I@5fduf1H%@3rtd0uk#oO(PIq9VCg39a))$wg= z0*!bA1!7oeLkLJ<^^irw0X)2){BL^yX?L{0!{T7;PkaA)^5jXv|IbEgW8>ld=g)cn zG5+_+1p^98ftZ!ewI=;fVYOh&;75SESe?m8Ywzk{zQ%#3em5w3&UQ-Qe6x|qzc=ac zE&6+#{(ekh3iP#OoLW3bc28U_)`lI&frCB`ae!Dw-@bfJp_dmA~Q_0jtao>toL4Ekr$zGrrAG>A{^E`yzJ zAj=Lc5wK?{NX51HJ<4GJZ}TXFZ#Nv}6Y4LR%;fDB$Na`#py^_!*sp<~|!mQ!IK|hPvw; zrBbPY58rup+9>mo$_v=TdALJNVnpgEgB}J`{VK+6v-c(k$LXF**qs{Li1#l}j>Ow! zr_C{vfU{5ccjQ{!C=0O-f-9T8sw5GcX$Lp<)`vn54EH0w$rIwy1|rd3+_@6^XLb8V zHeKzBp#4C6n=kB1_QlCTj-PNYP!!CZCNq)bS?65*qoVw|-KV~gbYUpAPW(1zdZ6Px zvCkXfvg7?WrG@jNaflmqekc>$LcHVQs%8O*X4z3=iyTm+2!UpBXpPu%{0ipsdO#wbIYj`%!Ew9wWe7*~M~g;BH$pwdfT>cDs-bft_lCL}68 zx2*B_mAB0~w2VNAuZ}Kh0uyV|JSmyc7D7S~Gnhp`xwN~l@ZBE0onogY&Jf+-NwZFqdbWlGGSg~F=qoV@l=T9?vmUZ5}h+M;fP=5nuWM1!WQEyFpg)zSME~T z%V2!w8CPG)OD>?hd=AHZCqIH#Pv9z#9$$WFPx|Uv zI6>RldJiAvx{!C>58=B8ywm}jQK)A7razh>S5Y7JDHcuV#iWg1V2(!ZO8^Vq8erg% zE_I=+ewkek^CCYTN`O(4Mt=2`Dy02UUwwsn6*TeTha%(uN=e?_dZ@1xz!X4oF3`)zJVjilm{mBog{a zCl-z4Ez$%=9|2G?FIvDXI-_XdX59zKTC*$xPF*@3c;D+t2#JqU&75vmWXoz?tGp7;Rx zonJ9}*1$u3c-L7$4`>o4Q2SbAkL5Uv1=12CF(-OQ3kF*)*0RaI_15TpK6pzORUcUK zRvclyL(_LkDdjivn;-I=T^MRlSza!iU}1j?!_}NZxUHi-{*#wzNazzmp$)0tWq1Ksmg7)Ye6Szhp=lU&#r9ngs$OlJ z9yGIWA@4m#bI|Czr#l@hHyruJGW54Q#Tguc*-USB$@gYMCAN>dr{EHNPI)&axy|8j6+PIK#LNC zw`?v(I>SJKu%;sbBZEPsWKIE1)ZhLF*!4_q7N~0S5g1{p7a}X3Z2+q}!DwwYGFALY zVzPFW6H~>j5!5F@5jh?J9EW@7s4KSVaM@?d_qV?VfBV}CP;Oj}z%h72zCIr^#4Q%ml?pntpiv352l?1H}_wRL>jJUMN) z>c_{;z2%hVJS22W6G;tXYpNLo!5R+IJ|ZSFv9w&KrL%F79j_3$#wf8BMAQ&PcG`9T zBQ>Gen3ML+t_T>Nm`J{Rj)K<2m=@J@mV}|alMnG8hwvk^3_wK1H}2p=zo-)<{x{tT zywLoO`XF7_-ar9BF9ZEyKM*Bvia8-%+JM622R^Rm_^fyH7z=_}Y76qo2?H0s8kPP0&s zU3Wu~iXp^VW?XW45*m`1YwJ+E9WgLm3=VNA z(T{2^oOX2dhdc+-j4-H$4ucBCX2atK=Qw5YidzTz5-(lGv{=%hchN==72A-|2>wKs z{n7NSKSG%VDkb$t<1u;*iaL>i+~N*6fX^c1HcoC{9Hi6u2ULX%fYiP~2+w5z?epj= za-nDtgI+|+&SZ=*B!_RL3^cjG9yETeO9y71vv}31_GdQ}k+2KkVltYIRR$`YpQCkU zFktEImLAxz@+HRA)g|V>*9`^UDFO@)_|EP@?ZG(+S^X${o1OS&;Q1lzluK$ z(wi@nDqjIc{_nRmHGEUrKj?hClyW7Cg>oqpj zt&@3+_KXk!*xY&SMvA603?3R018AUFLS1y6$>8d-KV{%%j5Gcb{?q`?%83zrxzVb= zu2xQ)7?PrOl6{-elfEp_GVgQNHr+k1sHr_e0mUtf{zKRGZZsZ57b*#JzT+`MpW161 zF&8yAFNrexgioIta25Z=!QI85>JGaGTHMto)5q}@z0usak3!fB=1t#^e!vn%Sf-aJ z(n6uo)l2VpR9m|zcj{iEQ>xGrzp&)qRc&aGu-4(B^{(SOO_K~h!t6R`NEi`o_E8j0 zKciFv{&k$}2$eB>uu~&&+#|}{E%{BsuzjdZtqCbPs*<4dG);V7^2CtfSG5HQf+wWb zirsh&^vJPdEKYUah*|kjq{pETahK2>@%x4Z`;HtJZror`Y|gAptzIPc*}p}X&1}yl zX881yEg#T&;gk59ai>P6q!nGVzW{U@FzoX%&6~xbeSvBq&hQ*3?)pxV7sCvyuN#yQ z5~ML=jtwmW(kB5jMPHFjS|1X6is zl**trP{=iu2`#R@AXulDv>g*C6!Bg4@*#QmiKXqWEdMG=pI7X?Dprc`RY|~&O1*Z{ z^x$&REnvCOJgEESX4!*@2`)r*8TWW=D+Mr?Ovu$Vck0Q5j#`b|1y5LNp|H6>RE3D0 z{lV&6As<&%ZoR(mp(aMD9Dkf7^{R;q=24_!CrKB}cZ$ay#3g^zOX!<@eLG~P5?joOQY zS|jZ>BY`dPIw_(h;w___s1@}t`aODMH627EfJzr=W31U?Jo>O=$<^qZfMPX5W6L&E3C+%4-->I4WL#7dXk%?soyOUPs{+nO}2bb^8l_ z)cu0_TwMbg=jvto$7<{J2!_1hddasW2CIugQ>Y?x9w18ajTf1dJ++#3fj>guG_cV5 zw0O>M)29Gs0Qaka!g_~|UrsMJ_u}s?Fs*pGj*-t6T>l-QE2I|3^GYm=op@YvJ6}a_ zCnu2cwvBMhu0VTfHW*-ACbmQEgm>5?^Y#n&jwB%`^(y?Gx?TL;604E2Su}lp`nR2@ ze`Wegd&FU4A}t}pNhX2KcoMSEj-^*${grRfo%S>!&q9yC30CZ59LMcZvq#tFT`9;m zURHsjkZ_dfD~TL%QR=Q(ToLA2Ce^{F?^OZT{qZ-JdrR%0`vNwnMB1Yl;w=>cK0$MX zv3dc~Nsma={yaH8J=%W;WI<*+zG8Doct9llE~J_jS4iK9?(f=#bF!@!P0hVtmg_HC zsPFk^!GXfPv8RdS!eK{_Ghp>*!?CtvBpri@U2d328O8gJNB5RRZa5a$^e?Iy;-=NC z0vX`2ht)=K>&A&cL@WS?gGJ0wC*2C@G{1`w2R%AJZ%sv!SPb>l#_H-hQeR#UY8zS-E=+hVU7 z#`s7j(ot~G8_MLgdccICqx-jSvo5&5sg2UsldZ2eA8&l4_V(11jgt1zMn2lo%Wgfv zvZb6U`aQI|qY9<>?|0w6XWnxT#vGO_^<$I|omR7z0)6EbeWHMJ@gJg&g&)iH+lvAQ z5r17fKDxc|TZ?q+E$l~%aankFy#MBXF1YJyaDRMvreYqiv|M7>JX+xh(`XslNQhX> zO{~m;n07?Svb>4plOI5R?kLF|EpHQ)$HI8igK4D)VyWOUZB#}KM4CNahGcsRViVPNWBp6#QIXMsf2OWBz_U7Zh`$- zGBgaz3!FfaG~a!Ve6*yTiN|)hB?GI_ZNqIJ?(J;29)%%_>K()Ts2!0(Ke-TTPrA_> zHCV(3*RES=W?tM_KWtCFdCaE22@b|gmLM=5V$~y*=w%5MSt!Q2)3+E7s@se3gesU~ z?3Nh=5Nn^Gab$NKe_1ycM?n??~!L4k`1C@eV$-uNw|1!5! zowF7zRC&dvJo3j2;N=J~vDIa}E;==)f`ui*>#6t*C%AUG)B6%9Y}`_%GN-ulL%#SR zZBYuG(x_PVtk!Jg)#I%=?h;5~2BL7U-{dI!Q2Lgu{3we*u>BHg8QZng<#O$HA)4OwL+<=NdTB47{&C=* z5yyb?RQafUxPbA+_r9<*Lr+&bwCmcWM>rxyDl7ICWqNXNW?1*DwitDpz#Yaecx^fu zqX(YZBt#dA%+8B!d4QgTP;H*WIFL=nP^%wPRDp_)5+_aFsEb*fZ2VdFh5bBkRbN*Q zNXdp=TL2gjEGvp@MGWm3Out2`4}*_5&K2u_61Z-Be#wt;sHal9vtDou-7x~p$ zL)NH=Ksd?;IXDix5u3#6Fw)MX5^%iIKl4Ei+BanDK{h;kG~!yBoC}=MoX}WUfFH>c zQYPHDBDMj%Vzn0B3dV&DFACxxnqm~rLIl&*ZHqSe@P@rT0~oPvGV{geZ`_04u#FDW z#}f+FLK9#f=~%6m<0qi?L3@hz2}?}aLzs*6^Ke2Y=GGHGC(`|dJg!ja*{$g%sm+Uj zFQuJWo9UN_aI)01z=|mhfxk0S_*&YmJ{(tyfmuwdI4gKNH;;q}U#X@>rx;Z2t$-d+ z`t;6l6|%UOooWwo)+RgpdQeig;jsz|a?si;2Cf{;|rS?t6T zeo(@&>CVeLD!TSIF;$cqMM|#H@wdqwiZ$0|UsC`<>;aGvwjLn|5In+biZ&;&ww?3k zWk{AlNb66Y;M6hUT$Zw~l6x-JJskIWX-^k5GQV%uOBiwoZHCi=apQL zawMBEn`58m!aJLtGWgB;tipJDl#mWJj!)|qe2-gORaFX&tFjnkDTj!9)$UEjA9v(f z!!g4}cv@gA?-j!$AK|^OaWe#0W23P*2;0L*TcxtTxE@SMF|L@;xq$16@g>TyP9$ax z?(sNyzsEjPS}%)V9$Ui>J2mk2u|aC8aJ5GtXK28Up5}TiFlOae3^mV6$r-p#a_`u^ zYDj^>9Gm{iqen$~rG%ZNTCEQ11L1#x1AW;b&>h}uWw zq_VJtW5fc4(x|-lK{X8%}ce z03o@TP7xjS*)O#ld`^4CeYeNZM72_&N2A%4W5Z9?ceeDm z->y`Tp92%pK|`c#&+@i6z~Pe}QwEjHDr7H`A**1>gKH8@1l}+p_q0(zs6B)GmCd)A zI)@E+nTB2uJ`T=vzE-RKZ7y}^GxZw(_cCmlIFiMA8A&F;uSz zO(R94lF$%gm)XKd@%UY(N;6&D0l8(8>yJqEp4ud6b5*1hR~vT`@S^#;RMPTif#a${ z>j_$Pig z)WtL)W(#1q2S=zyv4IrL>0q=rs+w0}4W@kUHIi(SUwD*e&oAn$P5aH8C9xeq`NMAt z|B3aXYx-bn*|rTq+e<+9+o$yf5>+h9H8)P&978OR6vyZ@V1BidszLZCQE2YKd$MF~ z$WtfX;ly1M;Di$fTMna3*uCTcMH}G4G6I^NwtPib=4U*Q3&ZiV0B)S=}dsy}d zqos-BTZqgKuUibf#S*E2789{VhG!D$kCRE;$)qil6u5|qd5MJj<7CoyGHFXdp^N!` zvTr6i-b0(QJuf5PTh2-JIgzY;p3K;um!U`Tdh_d8Kd%!huhH9+O{9)^^ODjCC(VXN zsn^eFBV}!;)xR#4Ch-XxkJnzeQJ*V{O%OiAUy+%aQ(PxTmp~SE)=Cg~?~iuFpq{n! z>IjGG45f?mtTJNDWX+PwBO37LeGF_R(Ys-%!U-GoI>pN(fq0H@HhFTMqX}+Xq)sHh z7+RwP`zm9?-52@(aZ<0I)Q>Ckga^I~7~-MRjqm7|_4X^#=rZotxi@ADCwgOoU)eCk zK2=7jG265Fww0sWh^{Brj3?I1j4yhO5q}-b+mR`X)bP9qbL_7oEn;Gg4gE_jvUP6Z z`P%2@L$8lLiUUlG&!?p}cpToC*%A#2uEaKE?JhkOvRN}aI&2RmLbp|BaEzdpVl(JM z|MiqBWq9%JDWpv%v$Rzpt$#PJI3KZ3*pJWa;gpI0v|o z4%$VIzd8vd(e881j>fZk?czf~xT9y29x&wrkG+JpdlFylMg;#fA{dz&)L(dCFCYKpYRreLn}%IM;?lHo5~nokat+dQ0Kx;i6AB2hn zZk!D>U$_1fF5O^H+K3iEXvye(z-=tR969oR0d_$xGUbbM4bk`u~zsD&=ziBX;* z@iRfAX|~&a4BbkC3%>8#UF_P`Iy73SKD!%Rc1b`+$Ujd4Yq`0sij;~gK*r5Txftn+ z=`Cn!Q%$0D8WK*@1$^)k*Sqdcq!5hG4#SEU$n_TW`+IC!omrhrw7jYweRk^3rD-$> zj+f<_0keWPMPxbeqe(z~Br?$3i0)F1+Abiq9-U1rf~Ape!Mx$89mu}LCF6)st(*07 z+{RS@8E-3-n~ePaY_Nb%)tLfS9#Fx{ILy?2zic+xjc4$5y@hqXqdhUP{KUQkj<6Otox z9L_Geu}uy#il(VW+8D1}mFEZL7mYpm1@|Xrwc)q^w~DjFUvWx8DmD(%I~2k|%`EGm zs!($a8)a0|P+`d$c@aGWE(-nQa>x{#KOGpRaG*~f_DLpIttc=V5*rcgnZ--5YvM>}5cq#FhlMP)|{MQpgs8HOmO5KKk>pOx-?$Z}T;(Zo}L`Jg?I zWcUSWJ7XMy%r(S@&glqj>K8;qh};PWjM;k#M{emzPCk}(tJ!VB`_hitL)iAN_xY^Ir3{P-FaN`QQ0vq`NK&W z%p9xsr4-ywbWr>0h);;PT+@d4))9yKVeYYZ0%8K*n3#Y?&pZ0_zz2{spNN#oB-Wh+h8@%hkE|qu#Ig*(cTEk^uYVU@paGJ!0^ zAi8|o=|#oadA}HTXN(GjJ1UF(nnu)|>n0p=1F;2#&gEuauc(cEOYYMsN+)aXNk~X} zg~A=$?y7oG9l!ssYNY?czqB+;L92BC={0t3|cngSohI+cQJM zv7=?i*$tk5dHh5(eEmsr;Bkq7OPn~5gK$ACkmD+7`QT=F4M!uoK`*WKU~*$!z}ZqS znGh8N4{r#qy&k0EBKEfB6}tr&VLJ2ik=;slGHIux>;xoAw{#%Z1#)J0uP#6h(*-#@ z_-J6_1t>gu8hyO!hm+!<{i$2L1lH{a?HkZ|kdaXfjy3vg9Oth!d>MydzzNdAvX-Ab z_c5P@(VfmIa5Bev5*KFzW`jK4KXV#TWaP-635RSJ2RO)kP&Chfjb9AqJJ)L2h3Hv^qGtDlq8&Je2S}%DB~HUwx=*%i*rGc$R9V#vF8AcUw~t zVbeIKikz8DMF0m#Olipnd#Y+j(QLquru0@IOSB>07@f^cHai?f$Hjp({FmDEF<*mU zjPtVMx-)TXGb`qyT?WsQB`+x#!@L)8P6EyiM(PDjXc%5~drqQaT@V4gMhYxoxsX29l>S+U-jopHHGY}z=Y%Rzg=N>TPL zqkyIWIk4buLx7TY0BL-pBSpo1K(Djv^>poZ`^p|3I7IJ7XrJ$w%ksmRLBwx<)$tl5y?u4dP?_J}=nJ3}wWKgIeM15v zkz9#cG-Lv%o5JPvK1ysbB&R`~({zS)7Q$sPuPuMuj$xRV2Xgbs-?ByqnFG3^X5!w| zq04zy>x32F^gvG8j#QXKM=*idr9Yf$%fPiNuMz~nAV~~s0?+Td7Et&xI&3@f^t3dm zUDsKf5nA2d$52w25ssh2&lq&Ba5@BHrB97}`4@7$3sv5{cvU-!y?fZ*Sh=~l>aijf zUrE|zJSwq8D3A?VZn2>8oILqfUsquQV&2TSoiwk+<)h=HTBUr@dU@PvzR$5+g?aWA zp0I0qowQ>lm#ttE5Q!^T#?z`b51!Nmm7ABCUp=F@lA|OM zIz0lW_#UK36C6H-kpKMHpLH*Epg_mUc@mO6t+Caj_ztW#PlryCp^(a^@vqv=O91)K zXf{E&BxI=K78yPYa;V@d@d>XjT-gVD8-vqgNqVdx@7fb5yq9=t>YWeC!p3%rl9?Sy zB$KU-dF6aoeSVBsyS$E1tqIo_^UGPQs|7EnICo_6Ree#fp0p|_Cs|VPf2)mxaN3n3 zTWam4(0Kdw#g+D*!x>O6rMOt72o7TdmO#|p2Yi2-DObRK$w_g|;IbI3W&Y$jpX_iNi*Zf)Dzdh2d&Zf)bPZQFLYwr$(Cjr;ABC;9TdZ!(!=a%Qe% zl9}ZE&-FY115UF4#dd|jr;c9%&m)4|_na= zndlux*EjUXzKGh|KXjN?aBq5DH#yEP_r{(XKzjb$uOvYLwY9a4t*s!nb*1fxNvF!% z%GOK7+SfQ>mWUta^BORk)9|>wWH-3=T|1cEud3oc?{4g@(`7l=TMKk3nvANt>@Mx* zs|0p`POFV+ScmbHbsEH)JPs=)g%?fkVF`|<&0*~6@-K2Y8$|R?3l^;;7u+Il7t|+Z z(sNqCm2c zs~Z{&9*51?$~Yny;_AE~&xpsX$8%;}$%5sT-7g_r;3t{Z`1qP@G_uP_U2|#EO!VZ& zl{tytT5z-U4|w%j8jj9|z;XT^BcD<3^&s9U@;o6i$?0yrAqMxLOt`M1TCv@=wx~nN zDYuu3;EiZRc2mItt47`RY0#+a4vR8AZ2{eQgopoduX$g(_Lpi$9Ft}$EAf0%^Y9^8 zTaB{BSzn`^silO+=WKpQB3!?rBwIW|u9?#vw*i{|;n9;hQ?XEOWKQHM>5y)TSc2t5 zoWI#n)>igP_;L75*e0k)VMg6u*(Of6q$OmdAXJR*O8v_@Jo~vgUhO3^;ayHWsUU{?ex=gW2vO2cfw#OSPKp{h#4w6w6tAx9vq6(}<&} z)LRG(_LuW&bge+R;R&w=vgjGTIoTCG<2+gZL)!gpkSYhqIa;%%ri_SPIq5RZp|J>} zmn((ZcBkjNT&I=?a>CzXJFLr2&toK-r3Gk~L;*EgK*ScJ+Dv^l=#@O>dYN&4Y!quC3KR;>84SUUJq!sr*pKX@h9Mxgr%%#bKj3K=1W1=}-c|ggO31h$6J1_mq=;BaE?f$>CP9W0btXwGQT1~m)ML#CNBpTbFUk=<8A9`Ir z`IHf2T^@YhwHIs4rQ$u{x%E|O>#Km9bKP)p15#c0sfqJJ;`&b;d%U$09AAUno}NFZ zQiOe#X{YH^aQnaB?Z;Qa_xnq0CSuMY6c+hKSvk@df(P0&S$ zt~QsaQmuEQuaGESRKy>7490>+hXdt!<2TdB0vwx?hha zLo)QOZYm!gnMD%y;+RwA4)-nD1<)IEoVB;5R1|SeswIaid8ERT8}a!rX-X^fgHxOH zaHmv~Uf4xwy84B_3zajiXos)?Gc0BFs!%*U)kMk2PAg#oxZ0qf8p>G>Y8_KpBrhieQ{#5ImLI{$E`vX7}GAWCf&$Ej=p6+u!~r8ifHCFKGMdwLVX)C zi>SOGR+P5?0i&`**xDLgPv68F85O+9KBJ^LD$D|{%pZigQj@I`^Hd>`q}dp^&tV00 z^y6glm)wv6lSlXM!ReF}iYba?TY` zP_4a928IgT!4umO3mI8`!leilyQN?msJeZ_SFrhj(+f!gOKt;a&+IiM-Ryuyah0Lq z`QjM$OdU~06~&vojRqkvZCa{PLbeh!>4 zx1KyXD`L~OS{GvoxVkaZqzyHi4iL5;&xM6o?e190Tv z>gduz?-vaTN#k!B&CqeOWQ^VT7gu30-Tq1O!t#c^b6S_!RsDJ;SYPeTwAhm^76J6b z?W@mb;?wq7=mqMyoXE`#D3ZtPtmeOX4H8|}klAjdgLLy&!5;L#R4Xj>4K5VOP7 z0@RFzR4JDi%JjAdlTZIqJ>%;tpsd z}rIjYGa02Ni7K9i~RF@UNg`# zdKr%5@?}KW5qFp<6CvELxzFv?^jOtx`p)-BK*86zOVkka_~>u;%}m_9gZ#wI!0kQD z1d-0l>%5&@VxDck+qSPKook=o$3{r5G_QetkmR|4xYz6{amYON8{GaSdADOCX(SjK z?}x4&pbfA14R@6A)0Cc*E)Km`pjv3 zuDEuvbo(*gO?#+j#q4w^SyVc)X0bInK-H0`p{>KJfcA6BR9VN)Itfk~RmYb!SDj$i zgx+E zD;58`CN=YaSg7RI@x&g8Sl0`MZQc!9m!T!`{p^iKXw`d54xlUf@WSn>LiABU`}9u~ z<-(u_1?)7N=u|wK4I?IADY>u^NIU+ibY1gupU`{w&Y5oKewsgIC{IT1mwoQxC*Gbq zC8PDbi^A6UxZ$eMywof8>e#ke54Yo=n+} zeS2dk@9>fBc7}WtqqgZkig2J~dqpg>)t!+&#UwwEDFJ11OAQ3}sXcNp_5*Gs{BdVE zzdUeNXc=Q}@qmXls$zgBx)MpqjDyi?2BB$p$Q*i zgSbFqY)-06&-To5z*_yj8F0tzOUj(buRDEs7&_ipkodB6kbFn)#iC6i9SUiWmCz=& z5+HhpTsz?8?n5J(1Erw5Nw04IAV;2kF9Ad!2NoX( zr7XfPw5?G|ENyBMlUv0xDYFW!d^7FC30T z>bBmq-&$V5C)*TBWnHf`ry}5!A$&^V%|9pVax$Sgb=mf;oF$aAuF34va?A?K%4CV; z4^_Em%Wm$=w0kpE-rR6AAA?!MzaA5dYNH>LivE4)R|IJ)UkmP8w-ZM_A#z0AnBv6` zC3Y(WvQ|g{nd++u4fuDY8x_V@zQ;fGqHaq{tZ=(aBf0e6a zsZw`V!8YAw5>V9unX?fr!qa${nJLNxS!nOm%@hbxAfISxUlMoKc>V4{?SY+3bcgxlS$iyae?Hx(NgnLG~ zUQ^=7=k&wNzMEKW9tZky&s>h$?^>B6ho%){bSnkO4%c1)Z`_4=sWZi+!fn>Fzr-vC zWn-ruUhB%N(jRBd?DkDMPseiAg8CBsMU0Wi}9Fnh@=jf zKK(@*`253+@R}-7l-QD!pe)DW70J2Xb`aAS2jO7P_TDU#D}9}-?p|?6h8to5XXv% zb4{99p^~6!1gOarl5`^it0R+BTM0v;nrJ)K6Se<1v9tds60|K%a)o8UfTy7 z%mw_siR(XfI!vpdM$baDkbdtLkY006Y-j6t6@y*ADz*$WYbLJr2^vkvtuHi)H z_H6Qq-b~64e5jD#n}43aVb%zZnXMHXlBXc7#uKHDH)*p97|SNo&{ zti=qtFd+NLuYyDE{FW>Q*OJ{ewMbVl(Fh{{W02&?q-m@d!`w)3gc%2ohH zpRfj{#Lx$o>cQ3qz>JS`jaup+u5d7wdeHg{rJek96?jC+h>cN0>{Q`&7$2{|1+bV0 zI1q9bVML4TmZzjlk_}4^-QB5`+X<^trl{fs#u0f`>(}(j`mVb6!)!M ze}t%)UU$iCk^Uu&z{l9!?S>sk6qPN6pTgFpd(58#vTfn_Z5yxjhlEqfUWQgfpNoJ7 z455oizaBNN%aPyzrk!0|e;#ZG)^~hdZJxb1y51aLTVm6C^$F!D8*sHaQ*tqg4tCC~ zd0p@rLDO!=s>XJ!=4>C&4gLxKJ}mNCuS`+{tk&dOH{Mi(33 z9_u}tE!Q{#?n91C&1VzMD>!jDX@Fey`>xfj!S0012_TtB3E7gFsGpoMlMmyS>jWN& z`uU+W6ugvTxjY=K+4GXp_TP2|JYZSU-L~FRO*5@o|9-^uJ8l$h^X9MTh~+I4R0lB7 zsW;%fM1~)xJ-A-8+)|9XvpeJQo8gr5CQ3qm_gJ|xcUr~mwPql_Qx?*WMoUi(X1-S) z${j~exDU5j$I8vN?hmRHmZftOXLQiONj-Yux zT{+S1g*_$jF*NiCj!c;vRyCJP2wo{l{a&e`&%PChR8v%gk`r0cHIsR(bf5-~D?2rAzm>0V?ZCyvtc8!aDee|;#Tk)X>CYaL3dhiEpXRVZY8?yHOFIYyN{4Ffr-@lu1uy*=lpUmP^v5e*>ip~ za%|hL%f9UHDLn?Bko8c7)$$zI`aRRs5ZvI=J!5PWzRVNyoT3@t27}zl-|q(GZxs7c zs<$7?hHRgY3$=7vG~bg;eaok;PyLGvdW*Svj&;u(_kYvQNVh^pz2M zV?z~zSNu46(ja=u-dGQJc-?UcH;>%3$lbM+AG!bDtoN#%Mmw&K?YL0V94N&Q9T4uuMN1v-LD6sX{LUBbrOtDK9ia84bnfL zhoIOvVx}BX$(4!YIK-aUV97FXPBJw}at7|#5uN&JK{w;aL%7wUa51wrP(u5-s`EW8 zgydGf|4kdw!MN`0O;%IGiPH33Xdh%J7FuHv&U?BsA}a1;4%!3RbHB##5xkBOPw4P~ zqGVU)qN{j}QZnyUSkq=Kn-@7KM_a~Ac0n4CqvygB)8E$zks2I!%AF%( z3fx)Ur^MO#5^H>o1W4hAprkk0!r>Jf%Ls1cXXg_0Z&T&x*CL>`qaq8(jn(O2gKNu( zXSvkX=ZmKOn>wX}Lxh2V{(KJyH&i)0SQ}vc5 z^gPtB$k`#2V@WA7{J!Y4Ra9-~Qg)~bIBnbYpw&fC| zk2>K9EGJ;ku$3#1YTsF4I;%<5Z`TN4N|OQME9K|4z~4ZM46yLHA-l7~9T~De3^}{x zdZQnWwjp>BzN}s9n2(hb{8%y}<}Ko_o(K`5KskSOW)YwQ1x}u z1~_7aL8!EOe%rI;&b&`w!62Rrpa6M&$@=u#(Psz$PAM+v!D|)#-RGDYrd%X_2m|TH z#d{9&A=+{6ExIk;)~mgs9ENVT&9EJwABTN7ZR#@L#&kWwBCLk5!$V$fkIjS$DBN7C z6F)RzU!tds{p+*}9lv&E>KNw1h^(KH^n5*o*wWKv%P)!7h%Ir*n^ia)%kRyYnm05n zMF4Yp->%&Gnu{-DrtuS@8otytl$@oCF=H}8JpYYA^1AuOm$f5_)ROJl;J5248wfIw z3$&Zi$Ti#kywtG+syIjbO5O|;_@ za!5pohXQ{adM>dAwkuTg?+wMGjZ#%4`74+^7duy|#+wH+1y?QsRE!S*GuaD}Ao-3$ zGb8YV{cZ`;d%g!m<>35A?k`v^^NgyQ2lhzRnQ-G=2dj3zn5)0cuhS{JlFN2s>*Q;M z1Tft#NGb<|sCS`G+8N&d4)|qRq3a$O^nnVOn4^Tl`?xUIP^5zO`K?v_mv3&HSGERe zp}A$aM1uY2&gl57{0S<2OhJU6$3FW7npKcwQ2!LnCc$8@zCD}@YF1ZJr%#x zZZW8IE8`oJ!bHBF;}uAZxewegj9~lUF8Eu<9>;{?0ZkaODWtwkL$DFk`nZ|%Z^Ceq zo(QshF|9&tR=51HCH12UaR#7mH{^s!u}&+O1x-3nqR59hROS7tO|)ACb-LDIoFVIB zAj=Iqh`XvM{51F=XbmNEGFZNc&M(@lC`2Izv>uj*pAWSK5#ZeCUMkoLvx^V$#bLUe z>U1rZlgn8ttPs7zHO2fb0#CNNWmgFMi2YF66T!b+{K?UXlxln7y1GlR7uwd|qcuf7 zduW}myjI(LhJ|`Rn5389IEqvOPK_;dglcy~)TEh+_7uTWA44?T(u!jeQMkW5L}l~y zp>6aeG_58Af~M;f-}%V4;j9?Fpja=JtvA%R$3oUY6fM1~*cvj@%aBHoK?gewlQ0QP zeh?iO?-sgFlAP2i84?4M&|oz35w&JsVow6FcbOAx_=N-1SrzDKBQvmUgKd37cYTba z6ubFP#h6d<(f({h<1O~zDb}l+uM{6)g*KlzKi&NzhzgE6{flo|3%fjcW?=ZM?ttqC z-rcuzJXUjYS+>PvKf|QLL@Sis5x(I;5H1XN3d+nkzHC?y&Uy~V91O@a=)9p<^DuOc z@aOmRxFmZA$e@j-PvL?4`cXD&I(M}7zqAGM6 zeDFumPV)TsXw?YwwlCe?*MO@%Vq~pgDJ}<0Au$TjAl0*HQiO&OOpRuQkN`|I1eB{3 zzQdlx+9fC&$(^_#!^KlAf)O`@n`XgAOe5F41f2_tIh(BWz2nDIpqV;F!&L)xGjT5R zTp4&$To|&kkh9N$Pj0lZRgSCK8+bFzQe5@KgnNaC4$}tWoqBzYOj?ROncLen8kSRF zII-Q}oTiSk`^ZlBO}bxlUTKrUIN;A;sjTP=?g}|CdS$>~IB82g74|)!+Z@g&PHE)Z z93W8*5E~x6QypmL==gq{koq;f^mG*PbuIdF9P%;^th>!20uvI1@b!TK`9uMEBL;a8 z1vv=;nE^_CTer#X#tiv&kuNZ-5JcZ-bqgF28VZ#R`$oTK$+&?6LJ>bHhk~>5K3)as z5^FDLaLv66KBw$j(P*EEg|0+>H-PM*4nRAcjgZ)EWMY0I5f6dD2QQe@SCqMX;=*H5 z$?5+W_@WGYc(Cn`9bf7jlyT<3&4cH7VYiWI+$Czc`ZYLiTq!qoRGYbWye8T(2^^l~ zFoHwWBRMfeI1s&<3|YwlmKfRkl)Xd&t4qy=LV!BEbA)})pWSfFK_Ta&nbiP5CPU_N z2#5|cXd5Az6F2h7YPO71y4UkXUQn>sEGXHU4?_R-?+RvSdpPd9bA$1!y ze7MM|n-MAoepjy7bp!4>x@}*zi+&?o?I~tpRZ8msAmdALaZ40a8KAI7>`Y~CK$o@N zf4D)2X=WgaZ`^7d6`p{GHVp5cu)*UB;~#*M$;IW0=#L)ZS#X64L5cM&zDWxsM|Ty~ zW{HB&d4@O~*=mH6slI{NNCh(`x{v`}D&=&o1AY`3=-Y$=l|24+VMYM|H9j7U27Dgp z5CO?s?;QJk4sNf}K0EEV|1u%>>J$3+e&irQp)0esL=+2?#74}r!+gm;=((P569A1I z@1^*@mQ_!Qzm{{bfJTBB53@J{IHV4+qwq1B&-Th+HQl3t`fOlvBG8l+IBEKoQT4$Y zbHB|u3b=o?ZWpJ{Ik3d7;k1Q(qUDxifYRnj_OeZnQAoYm7P)r@cQh9iaTo<&7kt7D z5(8cHKON2Xx(TAp%7(%TrIGdLdE*>sc|&9Um$8|p)@Oz16vCfJkILkLMRtU9lTH+e((n{HCHT+L zMjRGx%>lh)>N4peFBL*dyR z5BFGde|>cG^w$pd3nU=8s9|zS1&V~7VZl%A{8dB-`u_Vo__Yv;zlVbh420Jhm-Rl>VO9tKqVWy0 z#kUGUYgk~O375F6s!{)bV7K85%&&`?_+tY{ z-{r(3+O`k^_Gz$|^Rn^1Q%?lyfRRdGy%4Ub13FK_k<_tohYr*UOUP8Zu*qe_qu{w% zaYe9%I??`Q+?6mHPamP3b}BQ_P$YDE07jCOtQu~q3ty+KH*yl%e38MgOt9d`ftY`Q zSXMLT*Ia=)Ve=roULJ!u90!L2WV)z>#qTLRMo%+-LRfATztt!bCsp&}$lsqQT)mH( zh<=e#48cs@I;)t97Uv*QTDF18L+G7hD6H!Qd@R)ro=i;@E(d0j2 zhR{=Dg-Nh-unfX@EB?shCo-#;)w_5(I__E~hv+c*zfUX=n_=Ar2o=IPRkOA7W?Fbt z-BXFkb_gU;l$(_WSyh!YubX(dlwweEBmCm+Azg?d5Y!y^g%5v+?5i&PJhtFL2L*CP zp-u?Uq6oyNldmr3l(62Kv*)XYO@^Y>_{el%$BGIPG^k(-F`!8X;}c`<*S(eXP<^Ag zKtws6A;E(~)aTn{#KQ!nBV8v8<^uxw{=w`k#<*<5P-+Ki52?9h%oWd8=Z8TRSQh0S zaX_#gR5C%jc!Xr)W~aCxaHISdNwyTgJAFjbmyzOcCv_dJW6L@2K z==LA-23x%U@Tx-gIG#r?O}AnR#pNhgepyJojBv1f)y@O*er#34`(pMGhDB)o#63W4 z3&KTz<4mvK#~-&3t7wYg82S5Hvllj?N(Ff!-t?2@j@CFflGlR^?=P>Zrp>-|G9lcs z_sUVZH;3Vc(uI%LOa#=W`EmRomlKFwKNrY~bwvnX2=5uRIAVtpqd&iX6p^;ywT9o9 z3hKMK1WdONfpgid6#B3c#I?&mS(Dweg^~#oI$(OBpSY0p-y820_a7jeMQUh@ zi*5Zzsone)M^0?V#^zSPJQ&bH4)df?pc5vx*lp^ojv+Lqn)g+o0xq!G zz}@}Bj0_qR>F2Csan1^ciw0I#OkUvI2}3qg?^LNgsbP*0=f$s_R2q+{o-sDr?-rmH zmG3F8U6K}Pf1~4?7M3H11~xhPJ8{#F;!x59WJZ#m)IDjq;Qdq|6&P9P2cYi0`fBqpr+R0^_ZlX8(v#2g3DXPJik2; zeZ%aKdrOd5{}d*4M)~~=%x-4)NAHe&iK5Fj|BcQpYpDT8QrF;ifn-J-RR7W*lvtOL zq8t)a^hf$5@ma1+HNs0!bdahS;2Jcax&M(6#U;@xO52Aoat_PrO= zeFB{#0<1#+bamg9BKqpgaZv@{%uk&Wd96Z&JbSDj`vK}CvKASiO6%W32%Q%!@=#is zEwTxS5@;UBcW7H%GcYhqLEN?J#P_20f;O5)O18H=bOGQ*s8>k>=jH7Riv4QS5t0LAU@Q{AWb&sMgo6I0vrFZW`>|Yes8QzpONdG{MB~) zvbC~ZzX#qLaRE7-iEITjfq=bN0GMT!uF`>E-jq~SH+1xlAF108%+)BW+lTMlu)QXGvDXFy96ir>zktB6ukKH~HNng$Em)gV6KyyzVf?eJH(hu0_;c@94P06VGt<`@iM0cK*h>;#|$;Gp(1;acLy$ zf8-?>2OkabqFjqnV9LS20c$j%eCOPPWXls8S~MM)@ALgfO!hQj;pY>w|BZSK+Udf5>z0mOVzUc z0fN~Q+y~U7mrc@*EJixlIX43i*=4-6?`N-%iSTC{O#K&5h^!yC4 zkc?LZ?@@35b|+XG0>xEppAPSPMmz8X-gBXlC|ASKcZ!4$A(|^+ii4S#yx`Yhw}bd+<@Eq@Tche3&!K3$m{(E29h*kgk^T9}gF=HwNO~|yEb0*H z)sw(uTfK{(CMaD0x)jAGc;5>gz*`3AtFvz#vhiP6zKhCz>WoT>@E7SH&E|+NT#%pm z^>?ci9_B`lmfsSnrkh%@qGxNOqthp+Qivcz?Qf2Au6ku3RIkm+mTvOhnFDzHg*>Ej z4@%ddvuEL+2A*#T!xx8uC|hb+($(KJ8NgNSTkDUh`dIS4b*3ZatW zsA<`P;QDylVhyNobGYe^gKAgOo5Zw~34b)!CM_WUt0)!W0t5S%Q<38kEnZpP6)g5Q zQNkGCAHg`7ITq1c31a_>eao~#ZI$ks7I2Aa_THyT07vS=cRA?X9_Te zBC8RAZRyqh(tWN~G>m);0A9QkRey`aH_zku?WO&>CsVqw>!GE9&+Qyz;3o?3nfN~{ zaXaLt`}=01J)pn<&^r|P{@*~yOSf5PUN%LfvxqBnqFe+4V6}#Vh4==}NcqV( zhoRv7I==Vfd9sWcYL(p&j8AZYU5@MGWQt^(joyH5&Ghh9MBIA4h*{I=_5d6pp%L7+ z=4@I&)8a=`aQZlRtY)^G?>~v1c+2Ix#q2WdO+jpg4%t~cSc(-)Nj$Tjy`$`eLet?n zXD*oA?liJy44my`+bKPar%S=^rAo9f$}E^5J&nJ=tN8mIatSzXM zNb=p>{G}OInx%vGK2&o!5AUAYEkcyoXI; zg$D%md)TXAVFQV|BZNks2G~uQhQE>zm&ZYS=)q~~V%^Kb=m)UY_Yqn6l*oTh5TXbG zBMn4J{353M1gI-`aCwnkaoVs&H)MH+DgsdozKF#?MI+xra2}DF&xi~c1P4liqReMe zAH8;XBC2V-b^;%)@XGk{SqWoLG6~l4`|59W_>*1AQ?H=}9^6G>@-9Ny^y<}w9+uR) z9-0`j!q*@KV%c>!$3;^;(4f-C&3-aEqS;VPGCsP}!5zp#(O>RTKR$lX>@Mqkl&!}; z`y;tue{Vvv_7(kr79_R9d$^x7)t171GanM3hRYNd+>D$t4de*O z#^nm|Nk{Nf!smn8`!qG#m~Rk9Mu}%`jOu_tq0T4W zittd*5RO6nUL^~GHSA^HB_*4hixRG+zAo*TS8Xir%Y0d{Ep{rUpb6w5Xn`o9&S{D9 zj3`upeonF4UEyqAWY`elM2{F3(|+V#ZE*>BsgHrJ~bsK znne&6qZ^<=@Ksh~Y|0~MOM->LA8Lp6$rg29f;uuU$O!J3!BOq;tWb;g#4uB!lZO}0 zjIv!DAg~(`01J;P6Q#q%E1Aw&)>Xsfosx&V#C#|HGXTu_q?PoBE*5$;XYA$4YPlf~os&B~ zx~pX>JdVEXfQa}zY(Y^{WiM1Dt=*dU2b&;1#ALN1f7aoweBeigT+{hKCI-E4RnL{H z4OA~)>rzsBwcvGonlSuw4`6)D`Xi@)Qz9J_?V1z)+t>2(P?%RSFW|ojkp}|Dm|1~_ zO*V(uVW9r0t9-)=d^C7iDD%74d4xloKEtF!;4irbGYOgjy!M!K8r;8A| z*xbBc4Ga7woWyGAOgUE;39|%}69RHP7Ge!Pg??I4?(ba^20;`iLCzL+O8Gb{{3;!2 zM%+R4{9e6i3=`G^*M9Kdl$INDPMAe%@~PKFa_P6(B*q@R6qs1-j!Y8dwVTF7mA&fr zxkrTN(@*iew)*p-)TYhek%RqBDm`tT@nhGJ_7qx=45f*??eL0jOu+rzQ2TPRmla*R z@1HlU`2Go#j2dWZN4tgyV8q>ZuzON>EdFPHfu7^vi0(-Y))$+E-mnYV3D>YKz2qD3 zlJ@3~4yoiS4Vqc+7{xJ}7vKJC_B0!cnl`2G^Tpzl@Qb@UC`}J~M%%-}KQtyjrYJGV z)|C$Fir}C4xuVD_rie1uhpi`On-GHZv&v}ZZTHIITCEw)vfgrg;1Yt@_NAVbO`YDR zqml^s{C^f^FFX_Y38n~rsulfoIH}qYwSUKrl8W5ubt?bdKRM%$%W({IH3s^*O$F3N zi=_FcDbEEhAWHLdwyS)u>WodC$CJa1k61}v|DALnZ?7}b`F9d8T;Ti?0z>?mn6rO0 zM-qcXUDW(VZq)~D^=7P5cZnPk@iG%-Fb`rJg#DLR=saFwl3Mq>Xvhso@n$Dd#}A)T zKt+mjqAk2S&q#Hc;`8ZLXTfBiI$LvO#(FNo79Ts4JwYS9zvybic~S{E8rk()59LL= zj8{BOxWY3HLXTFtJG}U?H`4)+IcS-DmY#SKWy4)U@ZhL<*utbkl$xmxeP8v#$>sO2 z(?1d+lduHYN;Yc(v@Sbui`3CBnS_V2)1*lxO0K$J$q|{Kmcn_+H)VQ6abYhmhv186 z!^C*b{dYC|#1D#KpeXjdo%HMliHRw-% zI6$Oy-j_|!ev06QXfiJQ=`%9coJCs_+M20loY7IcBFj*3Sm&42cKn7Tm^o;iG2fi} zFO9@IcNgV0pfJz<+5boB{u@WqgoDj;OJ_!}x~?j&0pNTiNk_jtg+rEALLiaVnMKh2 zr>@nP+v#%Z4KZB@A4C)=0iu7R!wH?q1uO*f;#n*Lnn4Fuwr5kZy4yTCaes*h3oU0n z$aGD0=a#Mp5gK>f@qko>(VKwb`FRh=3=u+X9cS{lsh63CUA_Gvr5s761+KeZFKyNI z{kZu=0!~mT9$&YbWNGmoa;ur@NOGqbd)rH$UC~Yc*}Q!bffh)T)Nc{!tNn(Pp5g8` zU8O)_CXE#3>;)w|i&6_O!3!f*r8-OR1*14aZa6jcSbikrKJn&1_OIF4ncfD*9xiM_ zvl8+r9aVb2cfC9Tl2f)jwYWTTf@ z1@lS@e41M&r;)yo zT(xvso*>rCcnW`8YA}oKYvuSMsb155w3w7O_(|EH;uVE3z}+73UW?Z~f*Cr@otneSq-n+R0_yqV zQ6`%XUEcqNBn>kt6m1F`SQYD;ZeGohrW9+Gr(R@Y_?@jxxXF=H4|Xo$pW!$$^iN6f z$R3dUq3s;RJ@_V6HT=*ch$@_{lU>^-@V^V#V)}$KaSbQMn7Q8_9i&=xQA!t1u3)#c{*mFQXT#8SwW|Hmr|oF4rTBCe30?VVeFSbhdwMsfo)M(FB< z(3GO@<4`c(>d+yWHTR44;ip0*mVZYuubEhK-J8qU12-6v%h&ZRWesV$KA+Jt;e7v0 zEw^~uSoVjgrFC!4#VK>$jf?9lI=EmUxA(wh7giq#QC=m*WAf5QrX?zy_`%&8=}K@G0*Bz zJtfnyy$9FrRQg4$63SE5Wl(VD+-H!9To!u4!!9SDL++w|C|$p zFDEwSyJD(R?dR$BjN&uBs(9rixye}98K*Q!$Bm>Q4q33PxPytmtY?(GibpulWjmfr zTaGdo-X>qTWrNk+J!*?ZWP3DY2mg5%UqHci%~YxF#y=E6>CYLgda^ejs3Vb+%Q?%2 zPvuZu^v~^v!zP~yQ|yPe#5{ghx!Fl>IeM@Tn>j5Zftp@{Z0}US^AnH;2)OLcIRGMi z^V( zk1wMfwL6N1V>$ZFw3ofBh0C2Vjo2@fws#kxghM;LQhS1)REy*XPm!gW+S}=4ig#)@ zWq^dP?uwfnt1H5CpcUjP&>m#4lEf$(toR|Ix97hHAgmX}cGVLHu{6Z92fzZfmAcmZ zBKrb3-rp|mLjb$KP=KfM;XsH9g97m@E8j#X>YneBwU`)QDoDz!cB3Z7T2as_8a7ntlIX2yWorXj zBUJ>hhK0xEDng}7kD!dq3nxOE{ukY9j!*Cv&Q@&t@FXYY;*gTLIjoMHv~MB<7Pt8l z@hv#CnTDSp&NP&dlrAJ!O!4S72rYXQ=6@iW*)>4{Zx@9i1kK4Sm?f?OhdbJz;)G`& zlcEBLUbwwTU?TD9qkefx^*(e3CVx89tYhw}Bq!;;Et>PGWAhgh@nyeI-&|&Rk&`Jb za?o9v(@p+n9v3KbG-u>7N#P`dh@zI>uhte|2h2E!#-z-z8pF^(nh6ns94i#Q_ZPIG z)jg0YsS#gCvPLcj#_Nh4GNrRH@KL^x$#qBR&iuwhZ3gi);1MB6qKdIw`}`Ydp5trX zvx)L8KEbnUdmyVW4fQsUoBBBTW6X)E={edSF7OCiNOGA-c93MBmm7;AxKfe z9`ov&rbWM)BiK3B1}bp#5M1~AK1(lz8s$OFx7mh$3x!?|!zw%M$6&g73DzZ zn#2g*mFWSQ7xWZVXTsp}oeQ26LmmaBK645;KMywiER@v$Y-41#yKgEH%hmswmCa9E zBqgUy`}ZM7=X*;WR-5;{!NR6BE^6GPS**cj-0F+7+>486X1G99^;H;=Z{a&jO; zC#sLebfLTO0>XtxC<~Z2{t%I?7G$09Ut@nUnts)Z>0$jqhwrTis(jEYhD4CUBI~ND zH!3+|W3Z{eP>yqiF`}tSPYZ83_+W=(i5KASYtxoEBf{(d19m`(zcI+Dx<2l!i;+UU z7oA|DN&tWjoLNJXI)p(_XG7XJ>=hKccB5Ftr!VWD^BKAE%a4 z2oVf)K-1mM2Rn+bXo40OO5HXh1)PD{!+KO+L!q<}B=wu6Qcx zes&3j7=}*=5Q9Rp(jO6$jn1MGQ5QaIcIYyWoG@&Vlk*u@zm!9Z>w64G#~g{=F2wQ}IZ zt##6tN>mhsAGTVZaeo%!e*sPukc>1&er_DuTU{~kx~?=X{qVFXdSG~$8E zHqj%F!BwReFl3CTKX5@!rw6) z{?$BQn;9v*v{67ez?7VFyGDqGk0i4;-|E+~ap@J}0`&}GKR_MFRGL+G zNtIo(3Rc%7sH*BNT+m{VaDs{MuEY-BNmR1QBNRD7WOoQ^8j=T42F6{?M{C{mtStT8Q2d zUGHm6{K%@}Pr~*TY056((h4!L6?{X$nL>{8yS;t}iK!y>p@EoDjSo{I~RCr7{-@uc6!rL#JjCJ9B1H`^+ zPliN>u_Yx<#ULUS&7*QL+H($%M$!yA1~vCdJfa+mp}(nXN61nbY!NA~PjfVDkM1FWWk^kIq-L!9-X z(vK)drL*+YFHP(-RS}RBLOkctXBb1?)&ce!zDY=>)0o+2TJ0SBf0YSja*r#v1gS?b z(=3$N%s8WQ{2=g;0g*f=jsf_QO8zzFj}c^^iluBWL56h>%4cXXkYsc_{Ul8mdK4FZ zOR^K-K0(Xo6SF(gvAYv8m_eXr<-=-j34bebTF%lZQ-seBcp%#WausgGDfkaEq_BL_K~jZZS`Q`CQatXVeesZhW+sr;!7ajpumvDhE1tKGebo>*J&Kv=m6pJ)1 zR?*cbAxVYsL_@BcB|-M0+dz*;+(h-B9a17(>2syIXIrj`G>l}p#wfvr{Y}WQEmrEXWDUI4|7F@rmN$4q`$2up` zsD6Sqi;Uy%x8XvJSAUXsCPu$WD|-PKhOOc@zmU)k5)#@&i!TVN&9GQTd4_M=$Y@Fw zcFSt|r>*Ve>CtJUy5Bk|KdT*9+KTp=e!dJTpEMVrgL#^!%>eSOQJ1V9<3 z%UL=P`6x`z4_R6x>2%;Dc)hD&bj(vOg6opt#c)zq>gc#$1s3}#Wvz5p%4!Wq{Dd)g zy-eNsrdJ=}EXROkE2#u;v$#2LgB~3p9i1K=q*FYY|IKuYC)KipTy zP8#`xe$S(RQZZ#F#+=Rotr>~2 z2drK@YCdPZ19}jr$1*MWM8N^lZoC!&{l-bN>S#DiScTqOc?vgZNNd|(^G z{y73TbIHXfUv7D>aoMgy^LEqjb{Ve5Q4$>(pk&jIHjFGlc7Sz~C*4W6a%>^|!lQm$Hw-(gc zO4a}>zP+HvcCyBHUOi4HK7wYcDEJ&MZ}afbu5?cx)=(#2jYI}#q+H_>x=olcJK|Lo zMy4&Chr{3T6CKryyp3L(hdxeE=kE7X`hIt+3YMiK-=dA5fRRoGO8)tjR^3BF7p!37 z;>sIyDhpCBuDm&?vf$_9%3E_P3#u-zygjG#e5`dbGZl4lv)_S)vhgrcPo>JF7>CDC zq99UKji`4!fNlHtK7?)6-$(Wqp3HIJiw@|8)jdpg!Oq20xAMlE%5yQ*t-Lv>@?1=H zD{sxIJQq{l%G+})&&O035tCd^gv|6XoXg;C&%>`q^{81ps?O)|w$qVI*Gs`E-Iv?A z9H;3N%-NpD>6n&r7E(r3J|M{t|9kxWzHD2pdO8aW^NXS?-Z%6yI@kQ{!Z9bI-;>Xa z0dR=c`K-@^9TG0i@JZt8as!`tfj@3uZKC*ehV((Q+l zu?V2?(IY8E4hDV=rS3n^Abr{kO)>qrIF~akSAL*7c#_?qoWwMb+ntYLH#bM3^Wkzd zU7;R*=#2W^bj079PgpC*2m9%`u{D>XVx1Ih!1ixLc4;oL)LZlKFw|OV-(Ma#@7r~# zlG1aS!`nK}ZQZBe*p#5W@Yr zBeLHdq9r*A3p*WF510%iSueE2L58XDs`KbkfsH*Vv^GD$bn!%dOR8eg5X?*!`T3+;S~6@epf67P_6}}6p(}_=6UV)VRgr7 z^Ev9W?b&pM(P3Dx2+8l+?Be1k2Gk0(=Z^L0^sx1;)_h*89_(l7#fD+vPaJJxvy)9) zZXp1F+j-#J$xEp@8}eHWqM0jkjCcRD%`{IB)(&$C2K^`6f3k)B7dMTZZ~s|Z-`HM{ z*?*QEmmd7T{7LqotASco`!~b(01k{YE@?Gde_vxw0PzRyH37mOGuc$D_jCWk1OLOOo9z1qLH#c4 z%@m{J)fD^9{2k0U*&~cvMWaVLq9p({n)via#mn#fq<-%#o`yGEP2yv2EPVugTjtFy5aS%lh6-`7t>2jq1rG- z=#vD$QR{isRkUAsgU<-J_eww$9 zfV%^Olt+(}Afz2!ueZJTxm{}iGyZiQ%cl9WiDo+IOpcl}JK@BcpS(tp0WYmLw1ETC zpI~Vp8X%P^&IE-1U2UMn5~04p8PB3iuR8Aw(u&KO<%CJ4c@FGy4KMcg+!dufE(g7W zA6zK+sAP6ZYe=neJESnk*$kC+BPUT1v6d9lfMHiO#(jEN_6=S{;Sxhclh2#zjZr3>hSyGBF@ zkoE{3!DKTj`p$zJBMJV-(t8!_y-zkd0a6d=6+6< zq2Q4sL#uYVUqGr1k;3mdp>n{cH1(+T-cUeGE|OC-9*t8-^KInVn|c}0_ii8jvAtJ2 zTva97AHuyc*#YN7dh}>Fb*-~bnVkBY*O&Jx4Wah$!iEZkISu(OJyPC21fIT>OSG@> z$oQ;Ht)tpbHERBLfaT<01PN7GEw!q4~ z%@BM)HKn6mh&DS;PO=GFacLpe#(Uj{N7v(p@}`u`h|E5%k$Aai`(N__oy7R%)_V2*wYCnKJvSjO=%OigcIrI&AB0!x#c19zB7 zdInsjQZpL8>q5l;Wf&hhENeFVNohnOatid|uReFGR}8Y@TCt;K}p>ODlV1N!Z+n}I+8Y5 z+?8Hpo;YTguPwUt9RxVB8Vf}=v9foUm`KG{b=xIAR&epvJ61S$8I9$}uZr=?u?ya= zma5LXeeKE(OD(uz?ds>owN=4Ed|iFui2jfBf8wpX28QmyyPSt1} zIE4UVhf&lA{x|metuqGQt@I4}_Y>vfDx!}83`e59ejJ@1KC9N%w`%=*ef^vDC+q8_ z14oB*zuIVh41rtiz>c0_48Jh)5@KaLtJSv<(v~A> zD|weXLOE$(f0a=2(tK^e*M|Apgs)BWbpT&m!DrQImYY>aSK+kz67DuuM?j*fpb+ud z@i9i3Rilrn-JtY+h-H?{9K#%qy8M`qv0-|hJCy78F33}FtRQs^l7JrXrq;9_!spNK z4W}6eK`K5(zlv|a=Ep5Hoc0Hab~F%im($&4PcUbr5e5^?t7iSQilY4)Me76Fb$z2y zVUzU9Nqy3G?h*(O+6?cK93PgNY#}-?P!i|iIMX<7bwq&9MDO>O3KR{sfTRl52U5iz`tk0-rP=zq{q z3i{J(5p8O*W0@=#7g^qqnj-CzO;(B=Wd3A`Pa>p_?c&x5~D2)t_G zGl6VD)jo0JvG|-Y0D=@m4Uf!V_X%LZCNGD|8I+y*6yq*Ibp+ENy#kmDEaB|pF zZ-{5J^97gyrOCHa3#y=Hc;wZk2VFN|+@7N7&`8eYyTuZ;IOnDt6_K22bnp@5gk^oe zk-MzUz!Rzc0s0V67M@}<_Cn-Yx*I6aLL_IELSSvRMxjQ0SD{e!3H3(xH3$j$RPrI1 zb7_Yb`LJ@82SwF_Fj{BFbBUtqs_D7JSFqX*vr#sm4!)F@6Kab%3pfK-imT_q)so|3 z?xm>TNnT7T&>wmt(;Imr*BN;t&mC8qBBH0XV-yQ;eC=-6C2TI$a#Z6SMLZc9xLudrGH>#9KFxD7lWYBgolEq^jD8++cHL{r89VDT_#ZSD2z z*E{OSy3&TuvSb8r`eeh1q7+rA+(o^_tgowO!jm^0j15X?eG)TiJx8mAl874dJY=C} z4%tze7Nay`wLBa$zoXROq8<7_X%Ntm_x5nS-)AyAG;^{@)P`o+s1-Lub8d+Y;;txF zI;~`0_tf+9L8I!Zu6SBXxaL^@P6x47_2X|G|4IG$^&35WPbtd9^Muxnxkaga;h&k>7<0ul zrKbpMlX9uX3ai#ce62#gcQ%-$p2CfbdIdEnH)!0u(jMNBAC}cM^=D1$Ez_2PE@l3o zO`BBb&6bY7cjQk!&h-BjE|aAGx8Kyl0*%x~bLZAyGd+{Ec3%eL{~Hnh|Iyrf+am4Y zxyz>bcbz*9m&R(YDgBc>+pXL7ZkHZ@{rA&mlb**_iGrr60JCJq2|2CVV9DoeRA)3} z9pXg(&!e#)vO1QpjM`D4%6L3;TybePa2_7Qo$<(tx|K z(GNbdR47Y3YoGOR^iD@VQvJ~d#>=qGT2XPWSK&&(Z*;6Piaf)kkWP4Hpb&#FirT=3 zlHWqEMgA~m7}%=!3qRzYw|o8BBrF=*LHiW&#F(VWwoK^lXEH|no67&yny}z^;X7R1 zn9iz;4}0obbeMtX9Cr3H%rOGuck*0GB)W`aUU5#_dzUelTp1w{AIcFRhGJ3oFnkB0 z#hxb{pq(LGf_hKzat;BLuuT}XDMX8w4Ezmr7H_W{@{To zkbuHMWzdz6?E_9JPegY%#)*K0Jt}8fWcsb=N^j}R4itvH?9HrFg#UXnNrp==<@QG@ zsSV(O^9bFUHU8FXX+OL*%IsjjArJeI_j;As)pzTkt}G96J0Ea?CA|1L>NE7MlIVc>>|{NHGB`8&176uJvwgIp1;Xf>varnlesf$-V=Xr z!Jhcqq#zE%by0^?2q)a8?u-)gM$^#Ye%SDNA(4|4Len{FQ_?&H8jXhJ%B-zcSN2$Ko zKXz1xi4-K^-~6383cmNgxR8+j@AVH(C2y`u@l0hkjS)dDn{`D)*{$|85y8JsK<@N! z#jmfO6UT^pWwF=k8iw;9g`EMA+Qa?rhBt>(O%ZK+MxU~$#GWcy+A*)vhEaMk(h5T{Scwx% zE0kTXgsA3vX&e6AVB(Dfa5uP@baw_jT`qjf2)*LB4l!1m$N0rY=Rr?Oqm;eR&%GMR zUBJH#$Za6`xZ+*%^Y)E`QN|Os{`cMYSDDdGdp*M;?wVr6|E9l@0b~FSGi8cnM^;^y z8CmF6m#5CfZl2zOtmVxA3x!_)CG&lYw2VaENM%}D8zlawleBeqce3e33f(gLC26;P zZWOgeoCa0W;Fm!eH4_AdmYFd)$e_kMo&tsxP5ft=Xu$;J6RI-qGnYR|a!KHfH?0MK zw0TE`CJEQ*(by{z72KWQJ}>^9w*47m8v{&BwoJM=d&0OQ|wW|KZW zd!PiJjBPM?I#O4#)rwTJ5r#WjzZHuYFWcAG#fV=^B>n2@s(3M+q21J)HdtCi5Nk0@ ztWFN&ls;AkwE;7fk9Rh&x|Hx#+8|4m!&*~i;fy#$11B`udDhs^6{6`)KZGHW0Sxyv zZt+zrVN9BNrY=;)z{Ep{EV!`BKZ;@(mI`&7EOBBMIG;8>#oort<9hR?T&ts<0l5@` zf5_%QtzVzx9&i)C`%ZnG^TJ#H^R!%VR-07YuVyR!U6Ls3x+Iq#n`BJ+?z@exT-uTH zWwdGGl+o7VMuE~u&k5zV2t5sHP3T;}!zk+SsK0gd{9lCsX+bA%3p9sFK26U(Fi6I! z*49`@QorO;-1HuLe(q7sGWO#g^&{UMOW5xFIqo!e zM+0`Yl*z=iqRA(dr7S?Gfuv6W3jJd+Ij3Eyoh-&6W5q`2=P~#?MOKQ%up_XN_kA^-a)`qcy_lZ5zYgRhWmhuhp{d52X_p1SXS`Sp4y@v1hjdKrYlow+ImxR&kCQl>|7U;GJ-w)Ca*3=Q@AalsYhYMY+IbB9Vw*Csv5gSRr_Jo zne@oE)G*o=3Q0IMWfgE5^sWa3fUW|ezZi1d07#ql`vo+Tg?)?qr{zYaR^!Emq8SIq zqCeU7>#cBmYpb)>-QI-%k#lxi^=s3-I+Q^*G3qREH5k4gYOimw`L$E4#Htm|_5_wo z9id=G{{c*#krf{7#B(6wt4_5I9xIxzM6q77m8dDW#gnBsr&I82I0dI+WXfhYH*#iT zui+$QW8QW@XUeMV^lHR@_B%6jvyZJswqx0?^_(-Fnqv*^!do=7%?*I^bxu(NY&kF)h*O&KBc0HU(X{{mQs~GN`9SQ z*Xq~8ixtYN#O$y^om+4{uRI&#>7?BwZ8mJ!FNpthjEw~+g<{a&a*DfGz`$!EM5U=n z5yPCcnA+XDxuv zccQ%FE0iP~0g+tn@KiA5AAayy+!xbSAs1AhBi&M|PpF>*W6ndj#y#ZJT(-(2M zMt4@iMYVG&C1Z!ZK5H@j6Okymka%o`m5n(KX^zQnB_HZD%fnMD&X*|$n&h;P@gOJBbyigDh%4!Z>+jLvBga{)5FQzhF0 zhni|BnDJ;aF}l(Ui?TSYb2-T_cpqAM_iiO;AtHtTE7Wxf@I8R7xv)M59@qp_Bhs4- zan~=+FBxK(pCgE>pd68&(_a>zNJsn!5j&zgH2m3}QST`Q$79P`OZRyXZg|U#T|D2e z!;MqhxErH(XT*G~dc0*`R+Jziq)K-DjCC$(QuI**Zw&I!zp^R251^2(@JJ!9`dhKL{b19w{mdlN*_1~PgItSvJehY(kO~Lw;bD6SWPYL<>PL%M<`^TK z1d`;O)2pQM&*>$PngydMp5*y&uXFFwxRt;BaOPgL78bwvAQoS`{^%gcChD$3pu+ba z0M+{PJ)d)RTu}JlJ*Qf8dmg)~KThxYyX*6F{Lk5`T4H_I&Tq_vyk2^D{q=?e`J7mZ z-w81BXVINDy*MrPT?^Cf-nFnpn9P>GwbD^@PGOfMd$)6`NEdU>r6XVG)%LFG9=Rr_ zEl*TU0!c)Gw*IcI#@8PD{p7su8(h}0}|j(PdO^ylfXMLoK2Q|9=* zM^lNL|9vv=*A%k^x!;$0zorrrhx=sCZ7S`rTe_svtYpUWF&;y+2OO6x(0u!NbNqQ_1sO1 z*0ZjeC$=+rivSB6(3W@$EG4tKsOgEmUKm0k))^O?BCgAqjJ3> zQ(|6yiI4-)Z5om9j08t`*1qc8}Cg5;<(|8QE>(ZKaRwEz#eH+=BRm z{wQkXF{jkotle^}IpwtPXGrrdINs6Kqe}hFNi#R6{YOu}R1d`BHG1@Q?*6?fZGG`> zlpZha$Nw#icU_7Gb3KWog!PMf6QxZM-#S;jK~m1oPZw`DO7D}o!>OMu+m?In7ag=O zdL42N$!y*F_0}`wL${vb-`kt`_eP0Q=-#ryDO>dSHZlv2erhl8EBfoHVeB1WA>ob< zE+^t2g_{1rU_MdbtJ0R*Awa8iLW$}jCcs&@l?$vvL21hgW4ebXNZ;aRf=rD#PUO|w z-upzeIn_KqJvph?O%Ew5xf?L}TL7H|LmI)qifU&%rHb#;@l|4jF5IFDW4OYac-s>a z^@`s@B9hIg5UStRfvoPqEp*D^mracla7lnZ+s3DeJv{8VWWVqR;nDC^AMS6pD$UpU z?{1K=Ch?JM4l-CLpjU4jdyd&JH6B;Px4+}v_QLmAU()3vBIBQ|nG^JK9q5l~#MeCem-Y6s7 zbqyTF-uCzVEO!vlKN8L!Z?)R}@n!ogoU+eixDRh`Z9jhU^*8Oa4xsSGW$#}f`-9R(O!9;ju5;J(+UfZp z673uj=ENw)Dji4sm{-b~lfyNHHKFG98N#6DID)wVj%#CkySR?Pv{4z(PHQ;Mnpsk7 zDqAlf?Y9ogud%J-dX7nW-0pT^bKaC@ZO-3Ba){C@r-(%4UQ?-q&*k1bQ}tE{Xx}4I zh~yC3Wc3NJ=bGYY>p(6Nh=TTXi((X%9tUy%{K4<`%+I$8hN9c|)>j;_m-4a52u`F9 zZOMmKte+{z!NT09d#|F29FkTs%^-GdRYFCPHq7gEG+E}3Yn`@&+gZjFjHoe9IsMwNFI1`qlo`OT`fD$u7tky= zoI~3j>VbOnC>(YzBkbBUiDNXFc7T~DkOll{h<(C)-*BYFnHr3Q&=QTfj2X$>zeVrG zXP=Flk>WA$b8;|1e02Y@2iR}=*9q*78R#w!Nd@*W&<~_N=s3ok64|d5_u%Qr3;2zC zHT1<(h)d^I!&#$N_Ez*H(r4cPgg)T6KkK>`_-$Ijj@c6-TLMCCCmP7N_OM3O(J;U$ z!)L(e1cUzthxa6Gq)5f?Q;^J94efy5t+n)DluL421% zkoqC#=NW}bOg<)ijU|>bZ7Bh8eDQomF6ssW+9Q23EDfJ11Whfkm)I(2N1gWA@CWXz z?&lz0DMd4jC;DDU;vmW=d=p4T6oH+FEY57Y_~I=}>eyq`|2gpgWkt2b>-%){G4!6? z@33t5*>dr1_n$VapWW+UoS?}--6>DmqVt!5ce{91y8PW% z)7<;wwaw-5HVAMxjMrs9#q(o_{l%Pj0OnmoFF!FF~HiQ?|nxPsL~gd)6H}SgEmjh^Rcq#!LeqWX%o%cazN` zn*-IL_*=N@lu(Z5ehPrQHO&lWH)e<^KkZf|ct zDU~)#e_1b;wzfC_qW-HUQU+uG{V(|=+5!~$sO*C_0cF3^wJcW~oF!vd=~aE`SvyXs~%gL4CEyM?8Cq=m2s+}{9|45*hqeAz%JJE*0KTI-QkSw$CQEaC0P zU6Em*FeSPqJ%vEx*38qO*i|8%M9{{ka6*=j8@devm{%imgqCejvF8)T_KZ2`?v3iV zr?zTw&hXtC>kSF^E#G=!%rcDLf3Yvl5vG@K!+4hgj6-E^~y`AQhruDs5RffAk_0(^QhWrsOQIZ zRaPhEdb3tJJt)`J$!Y!MxKS;lxhJ_{LI4Y<_?%V=rm-8svD=UIz~8{aiYF7YPo9LG zu=fe^1di76&0Q9cjYC&ynCw(VCUO@~xZw!c z?z|Fsd7&%JZY;Ps#>uW#@=`F*nzf%vQ+Ag_(vo4JiOsuf(&j{}-3@d+;oCyJ#!B8A zv2{1lL6z?r?Q_?}JoqCKI8&OxQ_Q!N*8gY##gwjm`S5PZ;BF}+xkKm(H*mzg!bZfJ zTj)zahD-N!JD)P2sSfn#wz9zW{4P4wSEkNfr}}eY&vh-I((Ai8kDpWRHuvACtD!Yz zG$90H`M{n3`TRfIofJEN9{*ngc7Hw2|HID*{{PS6|5IHHZ=>SLH{X1tewYm}`n`*` zYK9+&z35|Gz5M@OL?1`}_K=v_`sfC@uNn~Z-W1tyV9lCg=W;mek1lTDgqV&xA1_Bp zd>dD&Hs*FJ+vAqZdGvNeyJ4(m@>Xw^FHX2omXDIg@0_Q)Qbl6jzn4+QYL!c$Z zY=3j0yd4)XP7_C()HagJ0Pd)Nli;OdJf9Ioqe{_XUqi`;Ddsrz#C|D29 zs~z39QZd#&x=2XBNF$mYrcRKZWv;q?Hu@A2*Gl6J*l`W;pFPwRB*qjaPYA{~O+)ni z1&wz4?H*jR%tUP@I|Ge6Gow2L=BOCbBZ;Nolk zKyL;kfW*@TwSnEB+XiW^)0F5tr@+#8r)V5@5X&&2J)++P@oUJK7Det*nlEb&)i{3M zgbP?z!S9p$@sG8AU|pWQflNp`YBX!j(`FT}Y5S^jeAKMho}D(2>kakcL%9J}R#q^J zb`MtbIXK;~9lZdK1g?HZ$4zxmJFGRKSo1iK zEh3;~O?CV{apS`d-FD@pZo$a*YmLf5xpr9Hhf84X2pU$^AFD@A)p%JxIEalDV0i<5 zR)tQMpB)f1Y6%9qU#nLuO&pQ^Re_m<{v7~OIjL4^_@nx|3WF)v-{b{sqx#QNC+ptEJDy-(A8d_-f0X*#aI zLAW>{vSYzu>o}`4Yh|2^2FzZiiO`&q&??Ml(;2Kfs=hdYTNrBXLhdmFdR1#w zbFgT&1{SCtiG1J_&K?~Kdro! z*)P%!*t6?^fjqChz-zF*^p1w-y$ibJ5=ZD{MbmD-cjn)JS);{E%Los1nL%S1a;M!# zzssfoNuWf&a2D=3#wLe=q{kKV745(qgoAE)HoHKG(kY{MO?tA_9&59Z0 zAEAb$=*j740+DQHHHV!i7<=oxNey9gaGVn-xO+dp?LB%VkH4MOy^Zb1 zT45`z3+vW9kFd0q?P;}<-&JY+cK!XHU{bd8_x0=b_45vSo+HE3uixuprFgOR&2v+1 z!xY;{6eECC?6E1enNkYiQK|L!&Je!yhCmfp_Er)F9+hm74X4QX(cYGMFCX(Ftg^eW z$U#KyZ$B5uM{ysWc$TxMney_MqHO-NhmrW>TL0*x7e}!z`FSrp2Z3nU?cp;XG(Z|u zSZ|jGC>V52A=siUuBdT{oxMg65XOyQ2OoHM%}eU9#&a_DVRNoN380pCMiFbPw4kj= zUSnxHCkYwAjLC|bwG*8VYK(O|Zu_zE-ie54da~qpLb|aO>%r&w{n)%~KcF;bhM*%+r zg-^%c&v?wKb^k=|jYw#mX})?stG(#|QhQM!cQ)(evq87ietk6h>D51@+KcT^-O961 zXM^kQ+KYd{f0yIV&9j@IUOoTiY-0=Z|51YcUf6iH-Ub+%AX9sJL?F&yJin>Ee0JH{ zgzt^5i=T%7_;l8I_Nn{gvft@FyF458r*B?e|8h`ywh2}L)vi24(3iCr*QL(pKQGQU z-dq4UEM9w20+7&~m-W$`*Z;hDGyHh*rt$3Rr`P}Z<)_y_^*e*-vo{;3ROP1^KSu3W z-4XO^eAdHWonE}z_-599(Vro>S3iENy?8$R39|?F{!fGF>rnji&EOiE>GsbCKi<4~ zU8f!+xb_B2z{Yj|C&+`I_QMxP{hwadf5EN*xStx&erdn><_22Z`03SU|LoO|rYCP+ zZNq#WU3LcBmuHn{S7$GNgvt2v=BLKiUWNpC0qXOi9SU4GFFNL6g^y33J(3);=tIN_ zC1O^ZHQ}>J5pxJ=*Zum$`dVtwi5G?ieDXRCqiHFxv>KP_YGfpKyw&bvqmp&U!tFs; z_rFX2clqbZ|JFCROB)IK-;=Ee`QQIb`Cpy_jM3ju{#+p-W}S>CEOda-#~os;e_&l77GJYWJRE2LG*Eci_MFwK~E7 zO-5I67JtzP;KlqO{CfN(#{X?>tUtW}{+arp&v@Bki$v4*uoKQv{wzIy(EEJQ`+U&* z{5^V~c!9i}Fcm#CGUdD)tVBQFLOup%GlWVkuFq$oVt|2P09(Qrgj_ zpMr>T6Vpqb_F|CPpG_<+jH|C|SKfZ=AO!4)wSaey^H`cbtWbc7qD|%ty4lO|?3yfL zbV93@NO}bv;_<6S4i-TNo36b$Dj&2ez~de@TfiMQ0nrc5i=QmvoKo^;r`^YpEf&x< zwzoZLzN}Zv`z><$Q9G(Nts~cTaJby({Sj<$=y`9@o_yq&37ys-Ng4{K1JTEQR)_Ia z>#e2{8nTGH>sWCrHRW%l2X82V$fO^62}qDB0?QsT;tKK4RN1AIK9OAX-baQBuu z!B#I&*>FlfZ1iW-H`Es*#129?qvpVZ_ zqtvRX+wE4RZ?7sXIfY9_6;V%uP3<59o|ZZrPLs(PoH?0#4p`xf#xa=JWslL?Po=-e z%s2^Wf57u!HAIR*H)@>}mZ#okGQA zJyawH)J-q1QYs(?zccjndz2lHS}f4(LPjy-88`PhQfTIXduhq&SS zN+$>O98#9-2p_nuOJF+tA$J;*Qu{1L5d(1eL`6`F4Jk3svoWj+A1 z{z*Q09dbMzCg~fcTEBY2^58Wfmsjq&fCUTR;g!=I4=yq0>@i05QVzMqgls00fYWJr zE-6Z^!ExmW6W)<)i9ZfH`qhH7Un%z<+bY*yi`#2yNmzi^cotn|NxLJv znxlVLbGbO9;J5+#$|!!#hqRgkz^;ja;k&RoYV<+#EWGFqhxpP*f)|o1E0ij4<npvHc2LCF51cT*T|AiJeo|D`>#)O5x%evA8v^qS9NZL+etM-F;h}@L5V_Uc z0#c1f#E9`j8~c~n14iW*F2(0B`%g1V7)mAubk6DSamN|hi2)Zy3x&YacM5#laJvumEZjjw5WoP|B(A*=sJh#eSKxmea_o9VHbI z&J8>GPJmcfJC>td1hD|Pl9_m#bBD1>|d>afa)590jgm1;SkXkVQb(%DNe7a^b%84HPn3|SU@e- zE~kS&RvzjH1zqthR3yr!D*#IuY>TsDM^rGJIkr@ZH|vFo*M&WR&6u;>2g?bMj@uB4 z6tPw!R3ML3NhV${mguSmB~itzt1I61Ypa4V-g0LrA$z|{Qo7vU9=RuS*LR-SBE|Ql zvobK9S7xeYmRQpVHIC%A#M1`TJW!Y6B=n|D@Qvl>nwH?C++X#S?icr-oJWMyu@ak z<#KV)ybHF^EOqnTWeX*J`F>6duzt%ueGYLv4`G6V^nFB+?NR$Y^jJf^d#s^K zz}*k~qzyK`3XwkIao_H+rdwfOp{tX%LZOR=_TVFJQ&T1q{gM;^M01Y)FdQQTphy1Y zIfg~-0(VWgg}@7h>ThZ@2G{^8!(|Ji%tZ`xPc z)b?_I>Vg-AHw;vVj#Y!?Tzj%k{EBi)(m_p3jSw|u!%QV81T0oAd+;HI%bavLFuGXJ z)8x1eMiD&?;NArZ1r^rBbdZ_*o$#Zjp!Nt;UR>jy9sy^W7*3Y+bWw8Y2H8Ac5I-nIB*13n_%-7)}h&+WRmrI2{S{eQ1Iy9a3XsCWm z%j}5QliSvz{@zQdLve1Ntzv)+-EY4-cHD2%QR3G{=~~82MUht9@IR0EJLQtwG(>Nj zZcDdL*jw^l*y%+fNjGWYqIE_}+T*wr_mIyCNwUO@45_(vtZtexGLUr{U!X3xB%qFb z5_Lt_svl!~Inwk8_6iuKvjA1U5)SK^jH6D18uJsj5^%<{lCwvJ@3em8LHlTF-o1>n z1jjK(QFqlmdRzSlt<2!7DOB@y6GSzk>Zl@kucH)zJ+ac`a8rHK@EPG-VwPe{D$@gC*v~|e(h0LJ$ke8=c*)4rYoy3h*G!3xboS$L+cw<>Gd~Q2})^#-e-+w*1OeG${f!1eG%s>I|`)M z2@o-4zzv@myHtKsr*?+>2gkdwepZI4RjtFrgTt!%1e~vM)t)V{o+=b6Zm37kyK-PR zH(w|=p0wp*Oz++u9`C^VKCL&HpCrbz^zQKB_+a~BkE{&Lz|rF4Xt(vcRZ0`*7%2tO z(5Z4JBzvC@2Y<^ldwj6PKtp37y%XkPL>7lj%$50@VLT~67Q|pYFg(oBWzm?qlIque zCoo!t z9h*y!{L_Z!fdz6jEV&f8z?&5=Y}5yGuGM7^9x&V)Vnv!0@kHz-GD%NvbJHb)znsZ| zTeWi@D>RATfKyLmOX-?j)bH-K&^>*-y|=p$zkI*+{%IupKSy+AUdV0GRh%mq+f?g~ z?{d^UcF_~U;#gs%5_N?%3K>$4P~td(;}-NTNbnw$M)aj;CRZyTaqFjEwDSOI~m)Re_W%F%>S+8Kn^MnG>4h6eI< zh#;dOVStLHeXKu5cv6Qq#|djW;p+_x)s zrUjij{ygrp=;cq;aQwK!qACQGo-YKqxKBnCRhk*$ca*d>u~??ZQ%|&MUpAa}M`1s{ z42zpa8VRUndIr@|C-sdIoFs7%coL%1ygJy8RvNQ1P?sXhdtNe|kCe=>;V5p$7xcWz z0En(cz9ur9<2ZQu5=SIw;Uwr>2;L_wb2s#<5r`_lA&fydcRCU=x`vzXGr@#jGwnQ# z>Y-aoWP`SpxzzqXLA|-t8y3u4-td%+k4cLTxmA0qx$1|2os2%RgUvj2W_6_~U8_O6 zdXkW=Swi<3S+(cZDoUA99_}Q7kcKTnf-NK&Fb&)#9OW4j8B~0YfVm~-@d#z<-et{u z@xoX#=Wl9J11vjj*TaM~soN;XzjuCA_@t=-_td2k*q({-a(UN}wLM}ZVKkN9yA!*$k+ zeg(#_O6boU8Rf5f%9MY{Hf$H2?aZ0uK=gM{}!8O3j7J)wawe?yNtke!-MIYWq$TV zfcA(U6s-^!OL#o*WqcOEO=<3525$b9Ho0ia*7TOi*Q)om=6yZ?TAQ0fVDzZ;ffyrx zq7Z&62?yOoO%k{4o;1FJak|b|NUa7ims>;~9Ol4=51E1a#u>F0{7gJMnKN50O9{ z6pqIc0uVe>44+Do;u02?nQ%#Wr%q56Fh8n`2c|G;ELK&Iz12WV)=DN3W2@LiRvoE& z&E-#vB93U`Mt%{qm0Zke)B`|Vx|0Hc&WUtM4+k6S{Xjo>bLZq0RmmaLYJo54E2i5>>}Gav=E zm)RN2AvTzP$cxd>JfMtWsOAA=Dp&}|PMjrG0LCapofF39*qwYZy!-SiDA!!`r;_dh zX9U8XJyavepT?^Bv-2`0F zzY8cW|2A;U>I?1zDlzp&$N&w;g_`pM$hl9lz@%q&r;9<&b2AL{ZieAqZw6<^#dm{K z=$~*q2nc=sD}tVRrrs0ztMeH*1vOOrm%c9wVSf&ksiFL?IP=}%!B0Qmbj@jun6*H|yhKiT2TA6t^kZ*aYt~ZS>LMIr)DuptFUU(U>VKD`PhtiH3 z8jIvzLk8`A0W-8mA-oWG9QO)T@D(gMvZKmAPdU0@`bkxW1?4%#c~f$9-wIUUay8!| ze`kit^Nwgxivy;4G-DWfq|}L6nMld=n60No37yi7_E7eLELRTW^6sNCBrG_W6HCK) zrae~APyouPkvrCF|Mclif3KWl@~&XWM7w0+3O$GX;~)AtB&Sq`URY%KB#^Ixmr^1i4?y%J=eY!O zVGdo^iF+WSGIo#N?QOX_dQ=JE4lu|{MmeuHakcYm&k}`d+YA21?sr96dgl4gm%Ozz zV5u+T_ZiEREDUC}QVIc6w&gMn)#)RNW5#l6tq+P|RW5DIAta@s4SfPLv&L=Crb=j7 zT6BW}(Nd3(U3up-8p84KWHE^h*xA$~EV8VC<^-U5)Ga?sDy3>38i5jnxC*C(ik9g! zwL1lSkwPguDQ*0nnaXbeHX4iwU~mDBQsk_n zBa0|}^LbqumUc9=us_B#hQ{|<(4#O`%^bsQA#)0+v5*T2*xBDF(bzwh3rtm!29icL z`6CgwzHYTlpo-KbRcj}IiqhPiDsx|`XQC;^Ts@O}-I0Q;&AZsx#D{)s2!5Hq?N~o! z!$h4*UvQs)z42uhvOfLiU1yc_8fo6jMTluGD$AM7;|_5lZK*Vj6RhYzgn7>3xLhR`WBR8+ic=qAg|j#U0%eXj{D$e;J%xJ5}a3DqA~fofo{ zYrXI+8ZVR5<3ge0ol)np0>Dg}esI0H*+91(uKrJRVTLxJ4E1X@il>xa+7&m-Wl(PU zvavC>Ou8fUCg$&5_7yB!3B`ehm9#(9oNA-6TU>2aFhmyk6jU>!*=)6GgB%tPayV^} z!@@xtX?|WcompJdnd4@@#Ebm%h^?g41Rp*)TFJMnm)!!TM-crc!yCDuE=b$=%4~I6t#t;!iUTTdvhA`9GX`e&Gr$ z$VZvbB=L;0u(_Edok?Vm!hqHvh$pggi311_RyIl{w;H=MOWSR_KE>$K_@ye9w=1O$d zC%Ce4T9zucOk$Lm@&nEVER&m2s+K54d-%-0aMP2i=vpk~DrVRXE)rSD^t|h1cZWV1 z^3&v$6aKt#E#_E<&smAN=Ks5`K-#C*yl~< zs#@22P5jmH#?tV{((uO8@W#^c#?tV{((uO8NG}J*S=~S0YW{ATURpbgJeVH8dg*t6 z*xK7Y)YvjRyX8hOl zZx;WxzSdZ)r{ljip54cPy^sHTAOH0}{_B5C{8t^tT*3r;Va!dM6Wo-~(h3wx{HUjr zaT3Rf<0<$lKFDG7=}?4fNq#mL!fT9DVdQj9c(9$^=eAtY-p>3 z@#Y1wDkz#4tP0~Xi73?pV*vR7bN}bx;!m3XBZ0$m=c|)O#q?ieb^ZBjivDXneY$o} z|9wOHkL+9a;C<-tqro&S^CRKKZG>$qL2s?y$D`lt01{zHZ~w>HSLG}~^UOrl;F<0+K4Ddss+ zZ(qftn;br28C@8^M?d?uYKM!=4_x*d4b7s7OWs;J6=o!FH8imQ;l1+q@{t z@*u#YM6KQ+8YIpzt17#Ju95}D(7?vE?fWSr0k!G4yw(o-c*I$k*w6qej$4qCzKlH& zmGIXm&j+UNnpVq9#oIb)iS>MV$@tT>Mh$q&Vgq)$E8?sIy|1foaO12qAA;<(w%e_r z-t8W?j(Bb|xf!E1dSlc@8T-q`(s1XdUtkD2Iaps8K5p_nN94S>c(0+7C62+|qPt$paWI?A50Y1De8VGrNJx2Xk)1%8JBy#q!Fa z2aFX?M*Y@!pV3&%o{na&qvwv2VyU_>RWQ=yt=AjwrVMcX(oIzfy#Y~h#;=oAf=bFH775J~YSXUqx&)Xbm zQ6q$LXd`h<1=?beH3((FJVDQM{@wZ5Q^+H-7W_Yl!8z-rIF|T{x`+UU0;PBX#LL;u zGDa&RViE{GtVPOWa8Yw`F5-3&=;IOb2{EuKL{kH?5i6wD4-Uw3f7Ce#s^^I+6!UMlch7QK=%u;H%TEIw zok<&xN9i%fX-{6G<8tM|{~^N4hFS z2uNs9f!5URYY7W?NZVxWMt=0k)$Jfm64MFKcFL_NhHlqJ*>D!vV^Nn3vfr6&Fm#l1 z0hKdGRuaO?zs{^D+^lXOuQ~A0u;w%m;IIhuTp?7CktaO?#>`#YFQIYFDl2akTVvtS zXjh?Y;r)P>)jo58b35U}0V5DRdmMWeHAKjx298vT-uZ+>u+oUTb7C7>Aez5!x3I7-7|ILHld z2BQY{XZN(W9}mLXTZ|fjcH_U)8&BcCRg6h69;FNx42vP7chzATYTY^xjjpTaUV`}x zGCJ*i_q0w+GIR3NC-@dcK~dPP9RV{New#_&ra}+m&b%KalOd|XV;tZNe7voK0lTMk-!kUiBwBllXC*&Zo)~ z((vUGmwEUVH+UcOzjEpbJ=ws0oM*P3av@#R`brX&kNU|oe06yyWdDFdxn1~Amj9oB zL-~Jw_4(>rR{sC&UjF~B<^NjZpDW8>tHEFE_v#<_0{we|{uii!u$y^%Ie0t0nqj zR8O?$HY2mvvTntCCnD``n#4j$a#PDI)t$t+R-NQ?WOB^~=5uxJ+47O5FxpOy`8aJm zziIMVTzRW}Az*Y@)r-viPYN_&R{>!9{SVjwv*+pi|M~OA{r&$f{y2|;yz?_25%DS- zoXznfnSHqIklTovuZ@7D;r^cU1=74SYSeRZ@TXnGJz9XiM9deOWHh}L^2XvPb>luD z5kC#1bTr+l#ENAriSwq&i7)^^Z2;`DpTcYBJ|00@nBd)?PV7uZA-_`UmqVIZ{?nn% zxzfzoy}NZE#6-wIBV-7cJPOA( zDZ_YunS{nVYn!q*&?#)P`BPJa&gQF8R8{px4TgwB^;6YY-FVvASbeHqzdgpv|3jdH z@$LRc{ZE@+i3KRcA~#xb`pw1IhW!r_8@$W>fJ`GO=WjJXD_f9gYLB`0dAR`4{KsZI zT>ir=r}JuM)A^ib(`9*lM@@XPvW599<)rg@(nkOEmLS7~^T@*#c})pZN=B&X9~C|$ zv}Ckcnb$<)?iN?rd#kP#y*&$j?QmHKz)o(6$H58VHq+V%NbWO!#9dW-TT>l6`#1f8 z-8`A|hKXFtNu}+|Ci8A((|KdE>4-72skqeHRNlmNdL>UTrk_)lUI2>0faZ?*NKLGG zj8g(DZ^BHLB{|@`sZ~!H;@zwztX|1DI$|q7BVy78I>Q^U06`Gv=goj4q0Tvl;yLh9 z%bx`270iM%r%ppk%$Nu6`WNp6Hc~JN$|{%x=1rXf7nm^vhV!|%qIed9-ty-mnFTZ9 z+^KWXMP|%KaH&5XAz~!Yb+2bpuOV+NzB;61$POFnLE=b{s?wRb~uVAD=spR}=4Z3>eWt(ekG8*sReq%963pIaKB;V4!jy z-TrgVZT=Aag<9E*pQlUYk_;u?Nt)0d~aX z_X6$XlU`6I=OicU(a**wlX~=PscJf?`rJIkErXYR#iRg@e z=ri`H*VAtDTuRs@Cp~J$vMMkA<=9Znqg5HG9da&Pg;Jry3VPo$R(ur?cF60U%AhY1 z%UJA1L15)2BItGv-wkK>G8{zVpcATIbV3K0jUG|{BzwZ(6Zg7B^dm~#Q}m;H!v5yD z0&wm_@AOe)nZpb1@N5v~xQ=G_WV1O@Z!?sahj2qv>H>6ns6C(c;`}U$32Qlxd0|%4 zp)ai{z^;=A55jyZQX}UEbzdFW$5b!oBNz+$GiNs{LrGB^yo_n-M7j-4dS}TSX~bt_ za>v1}h&K)*Icy6nD;&y=XoICn4sF2GerUYOc~=2lkuR*Hxio!GSaW9UUSyAyV8vI3 zO-o&JNDOMRNG6hX)N@CHrSg>X#Tj8rS6_d^mb;(B*o}MSiJumXTc5P5mmtUzP#8>N z*pO{Ba;>q$Sfy0xd{n8cb9@pn-2}L`%{w5 zhP&dqqa$fSz!POdkG^i16nlu_pIn{r^kGPap)2IIMTeZDVdfV^(H`^P;trzC`IN9$h3Q(tOwzT~$PDxhPP2Byc)om&U=B}k4cDI4>vm7+B%Vx88y{EepR&oTezKuku|^g6iURkc zj?Yq`_^sr(wK`{8eJ_llMr9BEKk5;XJ@i*9gQ7!v07R4B0$PB*8RfTUY& zwNiXu@W|sC(fd1*qjHzMU77E&-p+BL@ZyF+ufu6l21GqcraUxQ$e!LHQxnkSvx@8Y zGcBUz+i>1S`7JTksGd7!dH#`822t(p)MUPMJ$597+K zoo18dN{$omymLNMWsW$txV-3S#Zw7aN|O=RYCF@?vc9q%&yWRWq17~9lX3lQbae9{ zQLT0^y7w?aO2jIHX~-q-X&GBc>+IsTVPx&d(eMtwQ7GYS_GMp+y68_CURb zliRyNT|ZPvH1V_F?&1oZh9k{)kAl&SdUO2Y!-u2sh$E~51zZ8P@ZHacyRY9IQRN~eiIR*bK{rY5(4N96#F$n1X8Xrw ztpJNMNm8an^^`=Sm5^$c)@@WDE`Wyz0D23Vs2~J?ZP5Qw@`%EX!&lpl#_C#yONZeF ztRU8?L5*6vJeL0MX}zMGmS$}s>VjKVxbJ}0=(3se9q(W)gMBQ&Rknz{%yPr(Vg>K52P>!-3#Wq?rBSc_ zaWbfVzozPqjn(fro_E!_Grk2xaoA&F7KyXoTG$pnd2-KZD(Wt?Yz?-$ga)?Xb(n;%l*?12y6}^awUk|?u4c7)K6k9Y$aQ6ST44!r7#K)p#LWb zXCAS=q_i~1#KIa;;}3tTi7zV0}Jvp}&a^^nYlqvd4S} z*?Xc2QR|I9k)3T-ty!zxC^hjq&HLVQCFXeb~m5ub~CTS zR88qjjTs6Gg}qGEW6rHGU2QnG$~?Ncj_KeO<=5O&Sq;(LVmX?bx#cn%kxi|)sAlLb zI#!y~^$s)rPEmi$l+9Pq%0T7}EfUX~Eq+2~&ETPWsWm-^7^w7FUFSV9DxhSL z=h_g_+ta4;jGR&Z%vI{eN@?36>*>lV;(0#u$6Zy%I56YgSGGddFh%PfxyC3ASe?np zb;ye^`6+NQ)_xt5zFFT`j#L7&jE^)b<-;&$H$BIecBYi!n-!)_3Vq9ngk3^76Dra= zboF@^Q+S&u)>snuPRm-EQ(j`v#elEwCwJXsS~jH@&RI5{F&u^Y85oYLs@#3gYBRa)nbSbE04&Vwh=$G-yGey~84dGx#-3wcegRR+ zyhKxZ6Qevt*(}|ROBE0MQkotK6mu60*2_s3qi!504$R3xAQY6?nT+g45}djqUCB5a zx9%fs>TG$ZOG4OYe4@iYQ^2qd2d$8fm2xO7l!66XRJc z2cz-rXpAPt@xVoJ8kXcsK+WoYr&XA;+D^i7Ah!Q#1+qsZk^SVbZgdmpfT)o1SYH$H zLh{SaMsK3SjM6=;+P6of*N-wC8H=eoQ#HXLgv7I^e9XghU}?1Ivb#GKstcX6RMX0iM8OW zZ+{B{j!Y14mZ2>qSK${iQbf8=JHNB&G6(cibg~wqx9h)<8fy@uQ8mvprQq{^WfS%%NHB`f^DYvOg zUVo|9rcA2UpUzQr*yA<@{Adp18Seh)W_H7E3CrZVmo4 zph048BzJV2R!%W8{Mk9@yV}uP^K^v%V10pg&MUtyQAx5vxSd)LcCol3j1VJ}E%aiz z@^i(cG{RTAdnlki9XbZ71Ec#SvCZBbyrBh=&)uD$XhL)u`VN-J9Rc3@XhbIqj|D8P zf<~Ypq3|cGl5Iu4jtFg9go9Ju>eF}_4m|NUJVav-^fJ;%?f-;=L|kF` z7L^PGAek04;R1xp7#}d$S2bFnji5Bf!Bk0bd3mEwCW8*emW(Wz0+me>yiXik9&UzvRNP>Ghv_`xl*fP>+QRLOl4LoBg$8KlnnAv2gbArRj z*U-fshkz_95NZhNB#Kv^2$#S_VQ;qvx zf^#`iDk>OO{Hc)Vg-x~EbcF(HiA<_YtRyj(N`}2?TweSK?gK62W9=S+*dJ|$1f$ML zY<%*B2vSgQ7OsL6OB-Q(@u<+jFr0#_(jBFbk~0eomeZ)Ou77grH+o`dxGC9~Bv{EK z`ux}!n2m1*UAXQCUO5^fip$+0rtLv3{YE&8FNZSzwoz8#@K;s-ge$&C#Jh<-VF+J3 z9{$LTljbAqZhmBoQjo1FW1=Z?v~h<{DiEv8-TAFAJy8sQZH^)WrK{H4hb}w?V^Axn zogQ#lc>GL^M}6hOgxuE{Ro*&0JUDb+I$(naZDW(hRyp;|R1l$Y zI02kp`UBOFozQ7=jkt|3lM8&fI_TPR?lb@Xz}C`@^@9P2W<~>e?=G`9mx&a>fuOp} zIPAQ}w#YJ$$3-@bOivoixCsR|)2$6rnm?lU@*1ms?jNTyadY7dF* zu8e?6%P_VvfWRmUs5dwvxU#ZZ8@fzmxngz92WV+nj!!O=iq2nk^8@V#+PFpILThdz ziRrbhbgsKenyv{s)Eq{xfx=|Xhy)6S>+b4`SLY#Fdk~#+6^@9M>8kF8OnC_C^mt%` z(D$+@e9@TLxy|yNzVwGiCXp(VE9iJZf)0z;r(m~~?8GX7=|0mJgt^ij;;DrG4gR4I zb3V)Ew_Hiv9WjJ+n+T`Me_s+l#*ipJK28fW#RgVe`qHvRr`8aaDf6mlr)lwYR#n5A z0iSlQdF3ezAPGq_dOTN)bdW8Hr@1~A({IOc(%tpvNVOFBT9p$}?+ znp#6w+mAUk8T!n^Sp%`{15pN9x_2k^Z=n2LFv6H51N9nyoCC$Id`Td$Y1hZWj{AUY zP}YoA%EBGhQjD8KV|K4I@@8hQ!9<5I(_X()+0=+rLMy>=XST!(C9UOm$h;iMZGb|? zPM_%BYqp=N(*K&IG_N;x74I!4{jyTw)FgY)5ld zuG(k8j9U9$pEH{}PKc=wX#LD+?ibE;h8jpwh3tcU+R`CU~0DPWBg8_>rVePQs;vW_j1@6u-^2>m+M{vQ> zxhP6ofKpBsjLs(1w*0ZKxfjTf)$|u(%5r4bNzZ?6+#0|!>q7Hk*G!_LgUN$OmCv~+@R9*W4W)CW0IsgGq0^tllSF zm|aFgYohh$N$#DaK=!5a(z`Uyu|+0*r8za=ybH%>`poQJbGk9%EG8>2Z;S6r+QXBH?5m>~}rup6A6 zaNs&NUgioUzv`hgHP7Gn5v?S)fYNZM+C!~>k&1?LYo(rSO?7GnpRCD^dJ360)s-c_ zB?z;t=vC2-hK6R8SdWw z-Tl`vf{Fjoq#u~@u}JSC&kSz-VK2A=uCO=M@0;OuG%mM(+C6T++S=WFf7q&6m#Ok# zq7BG?eE-TkR^~|7Z8ic!R_&r!dx7}xS{o|mXe3AzJn)PZo&?c@3Ea6;RTMPt_GQq5 zFKJ4!EqI|51&6LPC*)=MG#pjM_olA&w@EU#`XQb33A*$gDt|ffiyaqQRaz* zlqA%2EeQhyj#KI-b%aZVtgF@@G_y*Pr-8!w*pRWMn{LGf!J`Z6C=qi%01pqG6 zC*fBdV1qS*!;gczr$F=C+81FsG%HhO7hYEp`9vPYS496_1vd{D(you`Ot311XlSsa zPq8vbVPU)%F!Syz9egX_NugtN(^WCe_&&}MBjV@YHv!@IJ&oYVrijp+>rwv8z29pW z^ag@F7xw z*iFRGC!2B!vrfu?Ss0S32wgzgrT;2rG^oA&Uw%oI(7GXE(g}vFBso=KLrUWUzrm>n1M>mXt@?W|(#A>JM@^KxyZ&BEw+d_|jKzbw1-E?4s1SzptfrY0)$46bQ z2`X3eCek7jm4zt7UN{B(x%l_!t8VaU({{6 z)|Zz;$iVgd8o6{~hxG^KUBuudmiuv-1D-XZP~|e|`D?`km$fcM|{K zOaJes|Np_#f7ZO%e)ZbXxsb2y%K(Y~e950G68%w>OIuzO*eZv@R_=>Cb&g`j`*-pG zweSCcMU$_r0WjnKfBNj{diwr<*0|UI`j+?qo8#kmDwrU}JdQd{1t2KkXV6RTiGX_| z;GPKhT0{WR04oc#TyJK*W#+x^f0i~TV|k=1v`Xb+Ye)N^JlcNKdfQSe>70lC&<&W2 zPg_V|ctLc7B)N)5T{jJ7Nqu%fsr^f1`>4^msZvfBxnrb4TuW}1iUW+LaZT$geGH8IQ)Lb`;yy`L*G6SN;$qdJjyDkgpxbiXe z^;oC3VBk^ZHlpV>y%7Vz`Hj#TOmBg~U0J6WR5{6?hM~RnZn&-_*?M23x6Xd$0hv7Q zLP?40?l}Y11s&rlTMQkAq>I^K+RlpS*vy$$&caqrcuIk#!f83smUl#^PfHh^F)drn z{+d0l^j7OR@i8czkUk};b3JP+RBFaNq>TKNGlR7Ii`huijomj%*zR4n?yBp2jR>Tj z_dbK*fkt7ky71$dI{VRumiQr(m&H*M&~KwsO%Hx z=eLPsZBqP!e12*DEhjkni1tl7^Mi*{j_0)^=a}I;Y+xT@yqdxm7?CJge{|)c| zWAc5WhH>2c$_8Kecm4fce}C6cHTB93ctnW!vuwNWV#(#nT=8bTYV%;qoKk7JBH|D2 zW9wJO{i8z>WitA~bzxp-GAhg)$K#-fIUf!V|K#N?X?Nn;9E2r5DuH%T--|mJxjCfD z+Re>M&L`t;d^Pah%$vR_A#pSNa6qrIi0(~iU}SEp3cJ-Nqn^TCIKREzOsRIuble9m z@xDUUaa#T=EuyS<)l7$`UU7Hr+F5W?kHq#&>?Cb7lPeluA|k8WaLi`%e0sWVXtzof zE!-|+I=F_(sVrg2)DHYWOe{awfW#TH3W{WK*M6QrozYI0K_a{<5UAej_3Q7 zXJTmyfKd5Ded(A$jWSrrP}xcv)@+_JUg|h5;~BzG<+%JQ?&N&2fQ2QOBY#*B0p zWGF`e7QIMy&Q&=ajRvt7CM1B{skOWR=dHaB^_#W?BY%VFcW^XlB8j)eku`L1>Nc0*;m+#Lkn@b75lz#eef z;TzgY(Q*(eXnVa=ms_v5cK0`?b~y?YAcZ>UU$CIZyLGvL@V50fZ(*-HA#lrGSx422 z(AO_VAwWNOH_15cn@;EK5^mOD(i?BkN2bg7gNp$k<&gIDWD@ndZ2oH~Yhd;y zV#LMgZO*Hp_aKmSqhpG5A9T!Bx&%D!g@ivaR{~;f{HS0xI$$D#cVi6{;3-5+KAy@P z7g@SjTgO{)%t};`uFsP1>r@+}`6!$X!X7_X<%d2Rt@!a6vbg0cC_sFZ;1prK&dCWAQ^u3+i7ZYkrcQ1?J4qsD2fSzX@vRKS)68|Ot9yjE+b zCg<tR>p)-+CSI1s=I03^y(LZPzvr#c__@1^nTo{N}=Z7}^4dj}B+8zK;zv z)?{{kCMKCTFlYQq*2KxzN&$BAVgWAIn8jp!$IpkXIpFG+dGNvzkccxo!JrfN%7)N$ zEN!)Xfca)NoBiphpU^u2Ig)0lHn_LZKm~~6U|tJik}l?TCt)X;z`Dvg!@}q+VnHms zgU$s?9ML`xTII1AR!4l^aFk`s={NQA(nE_rx}q~dlvOjs|NY>ze}8~w=O?yq`FuFJ zCUbk8&~8)Gf=e%5M7>^yEv%}e-PiAr4jV|L{=o#}G{DL$n_(uYFh2ei*cN)*^S3w} zxObWf=nGtNa;`75rD1S`t`t-99pwple&0*YKl3c&Fxb@4{@W zhgFAmC+l=9hT~C|Nf{F3SuVMCE&Vr6mdBTHg0S`RP<}soR`>GY!ka z`Q}3t)QV3B=3rn#s)T+WjR(fS+yOs1c>Dr$EZ+FspiK^ulQQSmq@70ziO|C%jqHcZ z5EpSuc03g~uD}^PCm^?C3IFC$0{nc&p7OGnt052U4P=lV+&L>ND)&lp7{_LwjN3k~ zWLwZDD%D2%O~irGv=pZ~S6Kq**+p%Wj@GTL8oDr{H6!&GfaEke<*U0B4O38?h{LJX zRgM`@erN{f{-&|5&@%|G3xx zxYz&qGF{IPX;se;zNTlcK1h!8MoJSDi2=g*+7rLH*>NPH%}nl+2z8t`FqH|7TcUWH zc{-;bMCJ5@C?rt4!8_?BII#shAuf{}Q-!!dCV6!;!i-egmYeoznF4OwiDi%>26d1E zuf*ImQB-p8);AH`f2GKhMN}X{@i_`~Uxz z_y5s29tCHNnF%Bm0>V^P&}a9gz&$B&PYQevDS%h$o2@^$+S>>FuXf4dk81XJMzbr+$1X`z03^DslX#URruLP zh%=daO;JlW*(8xX{SUZ9Ui&njqE@6%PHQS}tnD}K^^Yf_R+h3Orhr32?d)tFZ;9gT zDbNRFtDlNbBP3*{7YmaaTmmHHGf2}-?ZsC>NO(!-fK=0IVJ{epN@@q`B-H*)#()`{ z?6=iPjEB}^wu}``UK9AMEmd-JVlr=?4DdCK@Cb#C>V|o#lfgKf9A5-C+0;`}zcs0N z0Qs+zn{k-1_A0I>X|E#amRUf7X*0Ys7}e7polO)fE<0+QX8qF{G@ZN}I3fL_=Omw+ zm%dba-b>C9FR!A(!aJI+A={eGpr!HqNUL(%ZwqtO83BioeO)QY_|vA9qkZ$o*tMmc6#7bM9FT;3@OmE zQ7fN4_HO7lOd2DQ=8qRp4Gou%&a5^On$m4zn%gEp9JHy=QrcNTs!4>~bd#9oHc7Az zP3l9N+az%?h%(ZkB|<~YlAzm(7L7`c%8W+iVNsj$Ft5pYIK4$VV%cq%3>}}f?4QUV zO#W|N8Xq*7u<~r#^!))Tbr46;pU%s`NZnHH8Mf zs%0u$aqwSW3mJIK>D~ZWwt5<#Qs7HS#|z8rf=Sj*MP|ELPdM9eKRgTWHu;ruqrSSn zTwmgUDtWV!YcAa;A$$b!Vd4@tc=q|qkNS?X2O@@=i+Sj_942Jwag!i{Ty7t2x3~BH z)IQ$+Qzd)LZkpjk!zE~%%FaQ^ho~2gZ}L%>OJJ0p!?n3tue_{pl-;xy_v48@ z2bBuGsaG-sv&5rPIfEO8$uI`?hMwGWpr-7=I}XPn9Wy}BZo;KE+^TBDMH-c6-cZKC z3MD}YS)}#|Ehq{{WBN9uk>#IfJWLj>`1@8cqVrKaIXg$^H$~^k>A0w0m)==Xem!6U zXCDFp(9UEu3J0B=&l(5DAfiohR+x{-ie?Y^lh}@FyJuFb(0xp<{O{Yo|E)iJo|XTt zt=`N3{^} z#{S_vfIg@|m$b4%sive9$XvJ$QKK?}MwQP<%j2tCD^m>U+}XvfNJ$m*yqQ{7LZu3M zRj<+=B|`;u=aTsp)SW8LDeMn`CRb2XP=N$2xl)*d3M4+s%2-y3c1Jikvv6R9xP_c) zGp9_N3(G5$$F1d+%QB;Rr7}EcUZE^2mshHQS;{L~#Jc2_ox)q>7SAL6^9tsZ=1pHB zQYcd?F6TjEVYw9W6_!iEod1;1mqgA}{#Wt;1Y-!l?fd`Q)B3ZgS^EFp|Kqo$|98-2 zyc6^~7{?e6U1B+bA|~MZ=P>~)x4p*q-+u?SFg$7%1~Z7l9#B}};3OQKRq>e#n5y#2zndpd^{d*tgLj%eID0eskqejJj{r?=SJ?i zkuTv!un}TNK93v0>S>0gs-8W6s@?`kqP8w!Gq;2O$tdccg_`|X`@X7K52JPPmDCP$ z*pdzs-31{GRG#92^3@npbtmJf=ckaJVW{~Y^)JY*n3c=tN~Zb%n-bc=Rr%Ds;@hpC zkPv9K_geev*}Bc(r{L>~l7DT6SPny$`L(bRV)SMJp-G=#5U9Te2=T&$@od+ZQXKOg(FKYRZlL7zJqrAx(br%ltpMws~bw9que|EwSb#K&6 z#=k~`)0ld42czR{5ZiHj3ZTI({bOk8CHSPuI zP#b6&paFtW*VNiEwNfKa(dbZ zz8J5#bWhtmrc$;iT`AquTj^UTQz_e(u9WWSXX)u_9#s51xrnn<`gzAx$@arl(!IPn(y*G-%bVaTh@wn4Z+1+b zY&TLT0}WeK`q3M^)eDjfdn{yZxmCDmtzd-va%P|9!QOtX-@Se-?e6S-z@pFdKxcP= zfE|b%HR5mf5H->f*7FjaQkw?lX`J$QTBWy9w+rkgIUZL#eJT=ExN2W%$GpXVC(c(?0HCCr!LLMIy!AFPc zFEMO>!(w^rvX+Z=7|Tx*T%Rb&p41PFy=%G1CtW#nmbQ81xj1P19Bw^ejbQ@ru%GM7 zf0PZ)MJs;{hR$H!`rnyllW9Mjc7aTpc}r&gY}#EiW%92LK<4!SdIDT!-tfOSnBgy6 zJ@>%xhga$^VbDVpXH%Z1JF|QS1^s15SIo}St(cx5prlq|k3}d67fw@f+I^oG0kzu{ zvmV_)FgZw{RVNNnrCCsi$XB;kVaf5Y1;vmegkIWh*wArIVq2FqW&X}_5zIV-4KO5u z*^#@mv4kWM80@oVDowlg)kJ3>MI8O6&%6TNiR{&(R}Ov$r$8rryzAb<_SPO3merMI z!*S+DqvHuwSWUU5)s#b79{ee4K)f)6_^K(a5wrAGZCQ8WhmWI?rX9oLN@NnTFG$o} zo6GN2Qf_Fcl=1>jVUs%E)bx_);rSj7U^TR|G=YlvDk<7LXH7QMS)Z14 zRDKMtpqmg@{(?P4cbJZsolG67A%&d1*B#Nh^i<@WVY+}#n>*iVrww+Fp-vlUzVprZuJQXR{WlDGE z1}2ovN+%=S<|OloQpu7a#s)U9mp@`RCLj%(UdC`E?5NekZ?3Sy@olGL+asTL%NvGj|?VAv~bv?7m*h?kjuO%74Eif2E zYtB}4*KVg($}K%gs_Ic!Jxb{B?gsr|k%)l3ouCBA8v>?$s(J^7()*Ck$t-{IGvh&C z9h^>1@_9VTOYTR5oYW-jKw?%OlP)jEKbP!Pcs-0p{5opEKx?{=!o*sV*sH=d)WN$A zu!2(pV{dson74ZtqCDp{3xd{s%&QRZs0{j1)D`+hzo2B@Hf2dOk_8oIMQB2RwN9l< zIH)Q{ybk1Ju^$kqUedS#;Kc`5>JW|NHq#D8XJ3xb!_;J*<8!CW4T`b!xV*PbGR&$f zZL>Qd7{{rz3ON7{z#RZ^zfzBm6_9q`YUM+UY-s<6I;GZ~U5Ba~eR8>Q7z2N!;l(72 zsLt$#ZR|1Cs8qb-?1s^aLnp+t@9DLm!WHfOvWz{d7ixF^xDC@oRrsMsQO4n~?ngJC?^W5< zQ)mH%?KZvo8dioW7pbydG%@Q$>Yx2&yW;UL3v=*B#xG*jOo`RyW9jNV7`x#=PVtq^ zgkj)K#b~cD)LKP+0tUEpkM*-e{S%flM4!pFd8hHH9APxm=!fUDmv$t=hErTeGYbC})~ zrYM|UVRv*9Tw0A)-kPtyGit`xz*QN+Jqg=`5(0y#LXH085#-@jOF@8jDi8-Xl4bp? zZ)r-jK>O+GJUJWdKQ+xdnRZ*pzot%^X6nbkR#wbU+_XEKzS;|l4EU7}AnYG>d+eWiz$10WmX=A?*G* zVIdcJHY{^Hu2CiBTaJ@C^Bq7jla3GT3xHFg$}0 z9rq=UN23*|IMDijas6PLUmQ6GuQ(9Js!BCl^)`>}T zi*rIz@vA9=!OJRDeEciGqFbCuxL;A;DoDmFPU=u-?d~!)N*mL2s`fNMk_JVRJAJl| zoNtM#uWWiW5LpE8dQ(4G3*u43*m*J_wFUIFz?utP1UquqZS)tWV~&-j1rj)_x4}iI zlF0~{h*f(6835|xP&D;rLgBm^r{#xb$;No&0-&x1SGmq?xIY>0Q#xhkA8dN0u7ZRW zj^L2>!X!bj4oGeQHtVZibV6vBt9=y&!A<4ia6L&U%DO(`W!n57)H8z)85!F3RE%dH zYq^X@u!tIl=RpQFFlI2g74|t$h;IQZ`nb50AuqVn0CF-p{kXRJX_EyMI^-Nvc_t<4 z1cTEu^97|xYmJXvwZ8TD)Xe5(Y+>!a>(@&0QuR+6+mLAKO`$*Dy5&to7CIhWQKN^)bn=fMSgX z@HaAknO(shAZGocyZCy(-`Vw^27Vs9i2nOAG6VYWtI(C)lL0=4sZ~{@ZjXu%#^ZpE zH%pjj87cvaVtNCLtY=DKcR+ft)$5roz7Bqn+Ub@t^<%B^37cJfvPf?H-K5&0zh1Or zr+B#wC4+Bwfnp||@GcNO0~!fsMMPo`QOy&BhoR2qf_L)>e?#aQ0S!uvnmK0EmPjH-%&{%v4{j~d&!rT1`jk$*7J&mq)w-{Ru zGFdJ}g979Vm>i9VV-(F+{VCBghg)zEQn)m@oJL3(qOma$$>&(<3~mu3x}n%rFc|x@ z(xcZqvAGFb^Rhum~-(y;O!JJ{E9YKATsKk}zV)|uV@PPUqOClU|~xy7n) zkTkZt_A~r>`*vq%zHQQkne38vjPDY8W!W^?HY_AKiiZF_)-fzq!|zX%lTx#AwH&l< zC?ALPnXxvs-gxp}=r9KG@x$6`s+bIC(?xUBm*v*^oubH4iS%=(gY`0y;E$6t(xWUI zBlbr%UH}F4yq=yiWz{wz&)?Kr54M)vI!l`RVhJJ~I(c643yD^D&>2r)>8ZfUWbBvG zrwYn;W5(oYl98mEN@9hWjQc}ag7S^)>%3Y1Kr>0t(piM(^@@)LcxX?uOW?@3vV~Xc z#p~sPICkworq^5n6+Z=L-1?RlSnw~yP37FnZum2#YAw6YGe9!b=cgnwRvMJF)ggD7_<{v3p7aG3*(2o)-3kzwl|3duCq z2QB-?Cl7<&us068XPfbA)3@XHbPni(M_I9_~MTdio8201pW_(G_nF%;sK zeo*5|{+j8hS^(wKUVLTvPI6;t4!f&VLh?_vU#c&#Z}ey&PB0zGCsEL7?}BzMRltk2 zx521}HkYcgzOmNW0922<74Acjh^cKQF@|M^e(lWYI|t>eF}KhN5KKfAa8{?_*2Z{U(6`hl(H=vkwBDQM&G`c^ zaVP4sNRU`r(z^?&ECGtdaUDyjR$6x==U90+9Pt5QnIN7zqIhNX-fSJcSr7+HEoD3` zh2mjJC#4meMg3lL@HvXYO|4_6X6S9%f-_7Q^jl$pa%WR(>Js%dj-j5kBkeC8J7tPA zg>y<|^nFuh(&~7r>^x0M$6E|T)ihr*>H8nUkbYbLFZK23_4WJv|DSvR|5*oa#{HiV zew!Kx?%8Mgeeth)eYYp~?jG;2_Ww|KkH3%a6^Yz3BfyI|Uvbh1xqB(+L2^FZ5s7xj zq7}u%q!SFaRUAI8Icym`WhNq&u7HJBjgikpN~Jje}!bpr{;oK8f>a-RCYvD zCQ`GI0{Ha7+I;j(UulZ09jl~lg`gU=B3;qbL5|XgQFKB5Pt1S(nDk7dPuSezFTX4r zRY7?sP--Dl%jptpZt@THL^VD&O=V*Zg_%$Z%b}J#mO#6yL1%b_F~~_#h4f0Eu<4e` zgt=4|m5@2W?}`*M+Sv;Wd*8ftb+c=ysE_6B znpS_HkjTm-tkPP$sPrJwd^rKeJn4<^w&P`~r1#w4amXP+!mfD7JLe;Ab@9IzQSwK+ z@;E7xk!y&6+e^N%Zl%J3UARk3`B-P=g5OBrz)dMH%5xE<5vWjDVSFtTjZ$acTDgkG zM@nS)0|D-K(f_WbzE=!9ntsrt%{*brac~EAn;B{)rxC6zsxz=;lM|sSVGdPQuc~Wv z))0!&i6Xk!NXiUTLPLA@WLOr++i-AM*4e2es^Ki(a={FSjSyM9JyIv}xPzB7Vs}QG zOihU3_tu8Nb`BLIo>3DR-8UsL|aSHw4^{~OPrKg-5{zK{R-pGE)QlmGYR z|NmO@pCo>*KX2_h591cKNnp%is6S|@VzSDFK{e07IM;I_*a2A$zBnW;D z!jK0e{t4JE9N~Q^l@?${+r9WK8rbo_KipIA9T^FE_y=Zn)rvvJ{o%*P>UW>mMUE73 zr)4iXDoH|%a;O+dw%4#xpdpV0&>RdU(w{e$D(S3j4jQS@+|-|8c@Op)Lk zR*hB|Qe!ahd5Dpid=Zhu%oW0wS)DNjZ{dH_Sd9!?<<>|#EHKw1%r5S(~l=f zX(OjtrRlG?fF88`{-|}RsCjbypd}(y7Wn+NwT3I7a5u&ErlRyDv}+2S0{f(JCc-W$ z=AI@#i(bW}t~*Vly_~Dk&ekbiJll6$fP(F8t!%(K1bhI1YlFYO|GwfnvLUdCjxNms zwBR094M=*jJNrG<1?1q7LD-FC3_5V7TlT;I`T5LRKfGnIlq8IF1FnYg;A(g zx89`Dh~+UGaA5*$H~jtNiS>f?kdm`KQEQIr|1-}loF+wrT+wK!;!q^7FF8K84rRm9 zTdcFF5lwg`*XS8aA(X~dp%k^mU5Q~D%a)&3^3Ik6bAm$7V{{fNu;-)^40f0G{{c*B zAoWjG`nMtfuFAh_pJ=0`0i^$MI+V5kN&WBxn&dp;CZ1|hy>n(%8nQZ9-84E?2EZ7& zioj<3!w$o>Jr3h@eH5fu3riW84w6n3`9SSsTfevCpWn6ARw>iCQ%9mrx}BUvgJ5)X z$6j{t+RNW3(Rlto{`>vz@f~_l)CB@g;k}2M`W*l-f~Gc%!GNAn?4w$Gzn(On(^X3CVlm(@#^uH3 z#mv^ivcrfNaT9ZBJz8oDYq^RsSKq~)#fBU}zqB@RE^z0;hE9;EfAs5wSU8|zw!aq_ zvIci@Lp}6j1{ZY=$}STW(qIus!hEZ2_?~=3Q%1S6OB*`Lz+?Yrc`}FqsPjp?6vQ7N z2!(#!|*ln59-XoRu_&^T?dhppqoJ00yA zLt@Bgnq{JK;*N)~1o#JfW6JdY7k4h8Ct~%=JI+|(hNNJB?szZ}LHRve4+Bce%iw)V z5zKFnkzxiq8%5{*?w3o-cgDv4x^A6YG}}{p+W7F~PusYuK^LU*GMM$6gROp~Q6cHn;Y1!K5PAbX z9P(bu$v-%~%h`iv(Fc!KU4V)Ym>I2jVoDtlyZkn~yT=qpE>D{Wb9u{6Y0}_~Q?j>v zbgXh zn$w{bE6u4lo&zg)gBA~7%$@^ZdJ-o9^2TN(F5yC&YiJg9z5}$ncsp((lRUYYOKp>}rVbkG1S$DzZKT-DK9#3dE zRRU5f8pNShibz@xfWSEwkDiz2Dx~JQ8b6cMECc2!MQuixrH-5~==S`j-gpZCtr|Bg zh4>d25?jEln-Hv{Ka(edn1WDcuVw9@vib2X&o&%%%QF6McrroV;)h5jXBTnud*S04FDr|!;TSw}(kRujT9! zAE3mwaHsA$F$ebAGQ$Ss92(jKJd<8Ar%~F>9QkeU$b0^FLfEm)sa94f@bQ{&4CNVx z``M^rH30tFLm)<9#`nRaj4v45M*S1p0os%`Rt!VuB3ZO_O?V4y3`7$q;~y>q9xT#L3C)FIuvXYGYr2QnPRHh{r_v9GUYqkDPyU z@@2*L6p>d`ePKhJ{GUhp)EP_fNlv&((TeZO8pS8qgx$ zy-aDVCT$Rp=~aj#A%}?iCquM!oy3y_4Z7)BB>~J#6&nq8bd!w3KG{%D5`6Dc38$Qg zy&;Tu*yBDLt7<12g&2SPMoM$~ntFxE!cAINZ?JMdOp@SCdU~q%x8AmN;}m%i(^u<8 z=8YKUhGchx@QRejxJ1L0==9 zjt2ay1Y_e$&(yXw+x07R_H)%jJ8;Z@7bFQf6L?FpgU=h)^VRD4TJ?OrI&4&js}-uS zR#)#)@2wY~oza_L75nRiVVAO>*3}_XDrnM<3m3>pVKb}byPy}2b>ZhIkUf5bD_2q- zSRlz+TWfGHTjuj6Le&BNxxZqx2vZ~}BIufTfY@NrDz;3DJ} zpEjIgQbL;95UccXG>SD`bO0<+2b-#{W~+LQ1GxdmXD|+~xeeMrI)#$~oRs)%0LZAz zB^zEz>Ma<-=4p4G!RTy)M>gT&g$J6m*VK>bISofQ=%DvU-Lq6*FRD&3KyS~cd#V9Y zyC07&&~jo9{GgzVfCE;XJM%UocbTT{!4NP6p#xa7i$Q!PRaOgj*8zd2PuHgQ{I%k3 z|Et@76L~(gP;sT{74aWL{k+sWrk|PjHt3hgdFAyBcnSu7)>P?gY9Ki;Vt$FdSBj>N z_on8NpZleA9vS=&y{B16xmGsv--TXC-~X^mfR?_l3h?y%|M^E7-D(IO?&x!FE= z_w(-l>*c-OA7LiDOzkY_2h#Zno~nBKy*dt&*;ns+cm!+eXoA((*6P$)irQ%)wey^P z-H_AQ{|~VRQLy8%*GtqEMgmX=N3T{I%vi(uW!fjuxPv$lV&4Hej5ajkn4M@06>y!m zc7IZ9%d6z|&lR; zjTW{K^@o`=d7n%|6pV~Xw%&~-?r##IlqHGDeS5bfLQFcYqwsHGXRQ9JyI>)9Wl<)l zWOkGapL%Ngn@4E}n^7yr(V;9S8~|>fAXnC7bV~wbnA}x}!C&C~aV(e=m{r+r`iMkz zI9~Q<+`A!3W7N}?diunVQT1q9@rrOCiFY$l^UnFI(s>Vh+58UbDj$C1kYPfI!Wuzx5qsBJMVKNLm5lxMqj`DV%llOEf zSb?4o0~!=LkB1|U4N@>2jW#szMtD5IAk*rv3|1I&q*lY@T!Y)IhM_(dY3y-7VjrpT z2>}Di#^}KDFcK2Lkt-NMX=92VNfj!ZsL&48I|_`tJU5>+sdq zcB}p8*5T3a!M<8eK{+6iZG2O(VE-DE0PZ2te!SSkn)dMEq~t;%qX7h7)rMth7xuil zSvV>O*jszMJ9u7qS~(CehIY2df;o^V(N4spFF^Sz-dJ=9HMHvUf=eyF?%OnAnBn2p z;m;QK+U4EDD}q>Ww*jiUH5A|BLSaErpk_}HS+@WJRW$eUUa4am?PE(3B< zYcM3c1?VH*h!9 zaf|Ytj}+{YhbeI?1;?9jyvU85j&gAQ97IxM^#RYb#X)$Os&pFKfI2#(Sb{nD+ov4# z58DSYN7k9nETA3em@R1x{I$#dUq=u25@f|3-pvN%|R{tLM#MIElQiKs&klaYfac(#QWZ%0HQ9Y4XqpI9N z5#0dsRbp}k_G!5R1&(y|x1qBalt7#1JTqX$t;7x={Wk-l4n06C{fQ1n5%SXk5wcr{ zum6nv01|&po!~Aqk^|-d$W6YUZ1)n6!;M#lOHLQegf3950V~&&up1ixCUj|`JG_DT zx&wsW1)BL=hmyhy4$Faw;w{+*p^W zCh~o~z}~5Es0JPw5oGR{wUSGO?Qah`0Ldq6Q5RcFlui_EC83B@z zF_ZF`fd&tV?TIz{a9q0By^MtU0epC&L_L_QOv`Q-$8UkPG=9Bd@bnZ6)MgS_8KnM7 z6NM#M#G;3-(J`2jskxR@LAHb2HizxP4KqFwL{019l|QH*_8zf z`*)@KNGNHvbROWfj4Q~Sgm~&S7|GVdCO7JJgEo168jJ>*05%C7e@$ONaz5@3|I(%@rrE| z_)>U37$lu98ZKS7=RjvLl=FMO&^8NVeCEFYYg{co3Rpok3s!J#F~Z1MUs``$*|bgp zFR%t;chjK(=2e+ZrKTyesK;c{V7bU5-0oKcBM#K+0ul$y9X94~s>PR!Jn)?`=>Xjq z(s3l|0C39$(fWcSY;YPQ7!;xF#MyO&HM$Y&E)Z9DdV^<^$Om(y0L2!dOEJ11{`>vz zVT*4Eq;!j}f2^CP0FZQHBD1RAwGQ9DKW_1jil~W4=C{vq$FfkfBg6sVp_O@)LLETP zQ17VKE#Vu^VpC^TkXH=Dfp@=9@Gc@7G0=vy@kl)oB>=d=*6xWu;Ek3JCix`M0)>vt zr;6ynF|YmCCyO{M=PJ>Vi4DlDKnl=?D6vIkWA&=ag(4dVaP=Y7q$ck?Fi#$(8BlOD zJl3@9LU@w&P=pwo+_Y=RbferrfQXlUL?nfTXg<*qE#N?qyaK6?DvKuxiVX@DcgZYA zA)(wDH!&tsydWQrky4&pG9LN&S?>v zs3KS(K-U*}`Y2d=wg`pnApcr}jsZn?m{7$ScBYRSU5GfkQFsQlJw_RHz??}}xi7xBaUMovz9sV zytSakh*|h?$apg!v80nEi&sd+MPp|{$D??H0~Qk5y#R?^&>j#CNc4j<3>t*O204F> z({&spI8(2;w{rwFR!$;PgZ@pMsN@Iixl%$ZeewAay2pvEXI9Zki(&8QViKso$^ImhBDm&4FJXl!JQztEU z)B_)h8Boe&yC|KLiu5^r{pPyW97`qF+6YroyhtrRFly7{YQVOLKec(lZ7TE)v393& zlfhnAwZnUi%!Sl+*y-V-umZkB(`1!ud4h54vX~>jurDE8I~u#fMHWEHv%-EnmY1@( zF;J0lF93=O!xKIG?m``|{rNdbHiZX(PDmO=RL{5zZ7rY6b&q#LfV6HeybN@Zv#vCa zIdnLfi?O0IRi6IvLADa62rmMT`mEF85!J?{z`TLTbQxuzOrqYn1}8)>ok3!eF#UK5 zAxqY!fWxtkCB||r^JclczWj7q)oNF?Bj@}1` z@l*w0Myy}H-mrwp5e3nmmJ+PEWG}9TejFi^h3{RBYFx5}a!|;}SPdD~i)c6`+2&vA z3T#7hx)MCjJ0+EHIdBTruKtRQS$nOo+KYx(yHuCv>H)6H<2wlVMMeF2x@#~?X} z9jp@(MNA&us5xRcSrJkk?geKF<5v!~3u!b#Uw|M|1Kh3?elCmP62phsyzO8Rjx-BH zEbwy21t$g`!z1&YU}M@eo~E}PsmyjixNejA{**G5?-qzh(HT01ZNq>&O&@JCJTJLL zF8Ok{!R-r0m?wJGhm)~+LrPKhD4_;suxn(J;NOO>l^;%_Ff}?u7i$+7V$$t7Jr(aSOHhH?h=ZAKJVMc_cPA8~xyN!<_ z?PPL-P+V2nNrrUgQHnl?H5u=TF}YH#cH5nP@PT;A1+`bCVqa)6jZ3_qYhe82v} zSMvk?$4wQBtaf|cACi?^{^|M%J%4Iu>P{^_y}4CrZtlibxiJ`HGd+P@rq%FW?IAy# z(%m^_?VOi5QvnZd>zZ9zAWMZ2Zh{VO1^VR{BMrmW3WXZFnF!Jb|9y1Pan(V=6{hG= zAY`tXJPz1gHQqg=1)`cYVm{LA*y*dvOh~1g)1l!e%_9$?0PKP;_c0Tl&WMOv)b|}R zXQ?ZXp4q*N49_JHJTc0GyN36tClbx9>T#gC7~LkJQMYnC*EguS4R4r_h%fcSBE6qy zXeD|q7ab7?u>nsmTP@`1QkFU<1Zc}K8nXvxX^HWIwr@O%$Kx3NyZ9F|XZE9Rmpnaq zm$8y)w|MS&tE`KNF;WJMGc8!26M7uc8+v#~h{C)L0$6BHn1gjf4O48H2ToKdT{(G8 z!C?40V1>OQsvk+kU84LhO>BF&ZGC+?wJ0(t0GWikm-kWOT6llqgt3Pj0tvEv6M^ojDX%MR+;*e+eUk5x*uEr7GhvpQuK~HMcgUbP$LKdGjosn`_Zd z{PKg}V2EM^jMpao8g}5y*Bw<0FNNxYz6Xld5lbjBDVDjYT4CuX4y1V4(g2kz8WPT% zhYiJU&E=#c^a`&`yRR_DUiHcOdm9+wlO(Gy% z7P_MJ?Vz`Yo<+57E@3=_Jsv3TX_LK;J-E#t7kmn|i#^XiyC8I@O_p)H`|MBUTWz&0 zd$z2TG3Q3w8ngG!0qPl>rhD-B?N;va_d^Qqif>J$Zem!vq!-I&>=HZpE*y6{lcClP zQyx))eU#-@yXI09>^jDNJ7k3j(#!*+2pC9_rN?I6sV6OBGf^-fbi+GRSgxoi`=CvX zVv0wssL=w%clX5Exgey%3 zBgcpw?)%Fqo+PN>#Kii7z9n-XZi##7561?vb6ZQlzOTt z883o6Xu;k`W=&q8MN2IG*yTQ;nVUB;!zSOtdgFB5rP`u@pPKeI({C)AEP3+8*?ldM zHXdR#9Xy%Vf%CXCU-RkZ^I~mHYnpC{R3UjyYGw%Nyq<)hlTpHV$G53>F?k38<|fo|vA9v{ z*;}@_S1knB?N)5JW1F=-(?=((ZRwW> zIi!9eg|GB-vFkFT_?et9>anJr3EW!Z=}t_Fe=Zk_>(`qOb+3K@+S7f@FA_({VP-UN z%lxVb4V|H)bwaPi6;{d4dn`9P4hQd!`6<$9+}P%=e(#ugYr0?n2eJhTiCmG5gjV5p zDAh{%%vh?`N?IXD>j7I80IO+*tfn0j6N6UpMCKa-%J;3hq+HO1gh^VH)h(g%yQt!^buffOBtEX`dt8cR;8jMh>{Czd5^=|;Vw@H>&o!j>jT z=8T$L<&cOS%TFPB-Y zYMv6QRiZZ2nfl|OjJi>$qm(pJ+@wy%=r?cu%QK%xR5u(`OdbN|?%; z(0173Fk$Vnj6xeCrj+^-6ucC5$-Q`RRznWMsJ_C%Jc|Z;@G$xa$R%`Gi^^2BMU5+> zk!Y&)gBz5X1}7)TkObmwhOB8tXUt@Y;v>8BCS|RW+(L9$K~v)n+i{UbkY+&*Dq$3N z!}x>Ir!ii@#bq!{+zWtwt`)8<543;*dccN~eDFDoIlxP`UA1UL`& zU*oA_%zjD!3<(SY$xn=?<)UJ?G7w!_1`JIpITt~|JIZfl-a=qUyZbxNjqhB2G79&> z#oJ3qjeeKajs~!B{G?B^mYn^!77$cfyASBc$(XMadXXgi28~{D80~}oy`Mc`SY*}A zs}L=-68IFw#R#4HbtfHK-%R(8e!C-P5g}2&kflnk;3xlr<>4P~obFcXB_=fU1D8j;FFV2c&f zqcLf+6Wv2tS4t=3A5q`+eATA(i4f~>TL!Nt=Ln{bE>Vi+)Y$iCX+&dmy2y~r z2r}tQFpVgsc6>cQ5{MXGf&GJhIMBNX`|Wr9-m4b}1q|$h7-7T9X&BLiQA&7VB^DY$ ze#qk>9X$s6Ns`n835VV#?5nX@sfd2+R~mZ7;bZxgPfParlwj2*H<2r)-YK`pU?-eq zu4Br-MgzH5yN5@|Z63aQtoF9-*GLSH`Bo#Hb(|yMV~r(&&zI+wpmU*-CB26tdrc$= zIW-^<)nQ6pefOl|9zdMBEA4zC(oQ(q`9e@z&6Alr^-{7_M|x^dh!NNsiJkMLw@c0; zX#C`Mz){m6vvr}(ED=u0&SOGV8kH4$`;lB+X$nLCoY&f__~-s83HzPV(@=5`h2 z;ntjGEeUlFos5=?pf2-+qL-Klx6To8%^N(CKT+7sd%?&6)uEPyXXpU5&;y=-G-d;J zF|QL!5^_nRWA;FdVR)LpwT)*FVo+Yir^9bTz0v=N?b9QIuP_WK1dh+Cxy9Vhc_#pFVw!#;0)_iVN zu!<|e9im;zB*>g{=LOI^(x@pzWY7~p?n0yMw=DgHlqN$kyn|1x?u23>VMR1~1J(mV zbKmn2PKPFM(9@dj_^z$zY1Mc3H|NPjs6`g>D1UUKL+{9p(5I8JxEBKZinOIq@I-POR{?ny!1n?ga_!U` zlAiOy!0{-8!lkN_k1eK_NtI3~C&8#h3T1NEvnva$GAZGN?QB_AJMaZPdajyhHcLhH z4c#hmA5dG`_c<;&uKPeQ{ui(5PN?J5vcQ`$lPrBxE?NcR- z)EqrL!s`8#=q#NGW7Lh*8g7PgCNw)k%aZ<&jGGkU#17v~1{ccwMwVoAv8m*n)P#s- z#tlE$dNr!)(n@$=;7#d34QtW}mUe`NuuJG~z&U4>9C~_>9Nrc+9E=3Rof)e#4QnrO zjPT>h6F;BEOcq)co&?DnDO@$Puj&b+;-REf2&c=lGX-oi;e8{F4ph#m0>~7=FI7-K zDod}GihgQ^wjYo-lPf%(41@}J@W8+ZfY5^n&NllS`{03w6}(LzNL-xJ&FM6?S!{KK7RF~OAnM1f4ep0Cwg_oC)3q*b z?SNC*aA_12)xbn+nsy}MeUOHN1u{}efkLf@z<_cyTqK^Y<7Y`j2CjsL3q4EL^)h3W z$>2bqNb3OfpE0CIojVUHvo?j}1h{)J8M@|eQO#1Y z>F_*Ot7aMtuP8=vj_lR_o9*SR?Dny0Un^mm9?CO4CYzEjON-<34KxXS}^+#-B?BRV|I40t|^ zkn9vutfBO(OjS59fxemzzvybgwaX4*MWJ#<%Vse#um8w#S*o6%Tky>Qg+O}0%#6{a z-c!=bhn5U2knS3aHJ2PULfwjUbLU@l-cc%G;1+UlW6=ef<6cQnq&*qtT=Lf-AyXvosoznwGI%yuaJ@n>NT?m9282UdpI^yPYufWgUEkE z5T#fv7$>6_8lQcB=m^fzReodI+W}FBqE0EdRvZdNdypfSR8eTz`e1By+N?T`r8$bA zDeCpYvp`E-(Fww%jz{A;*uA5H#-&>e8y+wMxkJOZ^aRNeh9XB7zTD88CtBVu-~zLnl`ZPXs*ytV0;2Jw{xx*h@o2ys=}eG#yCggo4D__({Do(D4+ zq`Z~(f&D?w0Wut*2k*|<)1;1>2%<#z&N+x3?G(?IxOUuS6A}3b6xeg1%SdBKxJnFu zjA3K+I86b%&d&n!#)!|;yw&a-Det!rY*S>t1iq3h!9U!W%__wvpl6*$?O}q(G$scW z@u`t|=yxs_;MkkY%5u1uJ4kYb7tF|V9^74wqoxXS9()ZMj*wEHBgILPMRQ1U5FT>` zH^O90liDcd%Se=(BDqn@liiqj?uN*pCc3eMnJu@u)2ME<)Y~0oHV=Gp4IRsTQOz_= zHcMaw7vNNx%~Yw)JbY6MC8x+hGpmfC#=T$)g*CYn8iT&SNIawF5zss+kj=Q)q9>gZ z#QMOBV6u#M{-*u1kh5*GMH%T$Oo=X}%Q-miv~0rMNkziZTnPowJ6Ak0?V<1Umd%;} zXGkg39FmH=t=t?kiR`M*bHa*c6Vs&=h4Kkr=UKvu2PwIP8FQ{|BFj7qd21o-!y;)C z?#ZLP>z-b?Lh@W^g#x!eao+fp&o)u!sz)6CW~kHxnmFim!r|B_)U<+q@5Z4xiz#Hi zj(H^VgA`WG74oNaHy@-Pp-rkou+5y;6k7iaX7gp#{)0P{`cs#$h~7`3AA>tIPWe2F ze{R|6JhXqB%jM1W`P>J^ME?Vq;D^Y&TZHs9RN+VdyiX3$2#^F z5;Niua|hG$G?DutGBOD}6K0FZ?|Z_QAtA-@Fu^a-Hiorrqj4%~jH5N*$Gvx^J#C3o z4x~ETAyhXyi^grE=2UMw&SM%W9rOYFtZvIqW-7^#m-@#Bxv95|ZXR5ef|Jfhccb1| zU0Z+p?D==!mps=$B!R0T-6Fh%cHRoh3Y2;IC&7UlRh6hlLasN+L=K%)S$iy8Bx`Af7>W*I zYPYhzP$|=gfH|Q!Bhb(bDl-dsX6ZVC=`&USB)|MgQTa}OdGQ#_Hbj4Ad3aUOQf@mh zxgC=#Ug7=5U%u49W(?_4F2(DQV)gQ+T@ObRoysccH|nwkNI*MRZM9$q3+15u3U$~GO-RsFj}D!%{o?czT-zG?vI>G7W%jrv+W z6aV>H{XYKlKP&$8wD8Z)TQt21rr)L|oRk=GNt9?Er?4Op^LO7>zx%%WeZBg9qx$`7 z_4~Ez_v_W~pH;tqUgglsYDTbH6UT(Y-{!>_)d5ED!!+NAX}%BB?1yR2kApll403Ta zz<+XxWIsZ(A0PQXJo0^bZXhpBQg1r7V40dsTk1cFO~vz!|N{+F_|E2Q_TO{emRmDncnXvotiq4sun(>I3A5u zoF!rWQ0#Jn?ApV$?NQphP{!N`8!V$PAvRSpPh0#j>NRF)0W!+h1$;{+KBs`@686O6 z=W{R*a_HhnvociX|JJ>4@ZR4|@|btk{maV;^R0Yb(;)H5>hFiUavwjbP5a#RTPf&v zOR$7+g5dwRRZ1FS^s5plnbdBGftk}~0b!rSNtiC&L8Y}!D&8rn2I{tmmY3&f{D<{}`U0j=~%DYSQZizO1Pq{st-kmt{iB@#ySD zRfQ<7SjN(xeAbmP23F>Agup0$Q+X{QxT|Sth&m#WLBYFO$h)15=hbD~sic-$5E%w0TIQVpAf8wF^nES5eA(7ZEGA^t1tm zg24rx4Rthz;?Tsa=oFfN)r;d%H7#YWqm;ElLRP3=t1UQUk+h&y6-ruHmb{`)1S)Rh z-SL~l*4B>S$Z&j)nnIaYOyQ*!<*|f7`3zYGrIYj>aQ;F$sgrTk^UDF}bLFRqJoqGz zdtopjMw6nKCBtaY?#AdJv%G!S`k=5X$6_RQ=i0;@JO8+j;ZuG?XW@&#`~rXd1O8iC zycGwD<^Ihwwgx-Dx%p~q@2FMz&CxnyoudWusUT|i*cme3?QuK~dS&Wcy-*DlOJ4)E z_4H{|p$5LtZl|ZcNpdasGUKDr(`Es?qyv#LLxErjaNAQ>zfkpr@Aj?Ly~He#>`2U*LylW>GCt%xdu-kF}pEg~4|p#Gx(ke(9Hi2SGV9cp7@ zqZ6Oeh{D;1!3gbkscaJSL&7*ZjYNv>IECv)r=dKF@ufp!F=}EHc8CPm0gPe@p)RGWk}Px$QP7lTL9wjY2bVMKTH3ge>?iW@%;Jo4E?`;um5pR|KHR9_w@gN z6#Xx1Rr@=8twSW+<)PE0_>?)F$$XNV=|q>ThRdAOa!JRgT5#9_=?%qvS^S@ze^uen zO#HvPzP`4e!v76Sy2tEW7yu#*)687{s3P-fSJcX&)O220lDTzlKfwiF(6Pm^dk-J)yW= z=xvE?qln?BkVJ$;;ATVF5VqFlZjN^U(!x-OkP;)K@AQvcJBuNfR4?wJM`0cKC80Zd z2<$ql$ozP4u-Dq!*AXoMDlR6&GB!dGsH4WhYCw~^5-*CjYi^H19D=Qcm#{AC`e&eE z3j=71%*?QkZk_`)nmVX8vbNf$#W@{Zw&C~5Uo>)l$WMWY!mV8n53rOa|F zGi|e@I5>2gfDK?G9pz2(R~>iCdgrPf=N&U^FQ^Lq*)-6?>C(N{2H`|j5K%f&M>)3* z{Xnf~NsycIgTyDfHI1BsT6R?7!LN1-%v^mVZ@G+sk*fiGhGQ3|69FGu zC2A$T3#$cN@Y&0qTJO(TZbx=1OB!_Xc7Y`nb%9|Jjr83>U`~BGOzA|NHjgRr8Oz*$ zHPNfaLKU%h_M1V_k2)l@`Q~V8=Ck>)8?W)NxxL^!SThW18FPkJbiq51$n|i%)w~Oreswq zjxXyK=?rhYBHsRR23dG>FV4C8c>SsApEO9JxU=0XQf2pi&UWi_rGt+JytlXjJS`Js zb4k;(e45GYT{1+)eirM)ide`8`jBAg%tu1@Vx0~vGdGakNZ~GK)`B-z{Bg+Frn7Go25yyu_%UJ-2NBm^6igs0To|No3GG+} zbrrBrnS_Z4Q(=kIM_jJhx2)PgazGxzY27^}902Zbo(nytt5#V@qw$bwP&S zfy}msXVDAP?#@$}kOp-p@=0?Vtme=_j41?s7cx6NDnS22q4!-nLYBL4E*t?CyPc^n zJV0|h@>|ziZ8zD0gLK!3&@^?=y+{PcBp+y%r@ozqKyFc#qzy)ELspWe$q@9f=_!u< zLZ(iD;9_YB>w9qQ`XEhFU>Nkz$1_+FThM-BfuQnlFG{SC9K>nL;!Sxu$JcRt1n}E= zCXYv-i(WOPd(@0jBnHn`o)|4~oXW@OlbKD$UZCcD$Q3F@tM>kMOW+M^N=RD{V$Tf0 zYEWyZwYT1rz2a>$@AkC)2y3bRue#gn0z=_?Ym%Lp+#GWn{Pm|S(hz65jw$mh4YMlp z8R1Y3&*U7X1&L6n8GQ#@sGcK|5NQO|T3WT-nk&?~P6-#xXw|0EOZtS`QrUwFh*J;R zn|f~R_A1jwXm_Q4F7YUr4fK;D>o9@1HXpfQgP(lb&&j~T{b4R?=w4I`@mDjeWG2A+ zD!%H4qm})**IW5>Omi^L6`?u_k|;5*)o6l2?<^hx8_*|gKMpQ1J~Z+yC@<`WXwA)R zV1Uu;FQf2^>?kDsyNF{ZVOZt!@p!ngvT}8G zwT$o)j5_Db!Faq3wN@|y@5;sSa-~A=6L5PEWLnef{lBy1l9L&!BNMi<)}X#QCwIutHhY}W(o0S1&wTn zVT{K6xOZK<)LP!ezE{nwP&~STQX@92MgvcD96%gi>unJAv;#bP;EH9;RgOu|;kCth z`mcZW_kNKgM!eepvk@;6e8@L)sr0fVGHdp_dKyp!XFOSGNN9tY_u?xO8bi|&J)fa{ z|1!Z8wwMecOkwU}T6D9-D>jvW>w~tX6B=JC`41PcQ#qlT% zH`KIE8i$?p6*SFXIUQWCko0)@eBAH3Pj=cgUWbY2r>Sm?qtVN>x3#}>u&=h?A07jy z1PXm;_h@@>YxnJu+JY~6r`v5E(es@;Y`xw(+)>8|>iEs>kvckfbqqyX^v1WlzrFW< zXLtWK)!cpiZg01>e1qb^_t^a-xZ9%Tu*?PP68b`sE^yh~+TgOKS z(BmOY?&$sAF;3vs;lW$AcW{Jb#+Ke6wW?6#cnfR4J3N3PA621h>-Y`SgK+~twzZ8B zDRGj}@9`mgR@Hv%_1^C5*8X-&hIBv`jt>r@?E53BQ&n4syGPhBK952J2h=7sv)|%I zY3-pZ4n$gd*E)pxzuls?U-{c1o4bx=uqLk}=?*O+9c*H4gKFQ*bK&{z}g zvN)~<90N!=g#%AIp6M3wQi5ilV7E=>{(%-w!W(pIE%AD7Gp_0?oXJ`v;G;)A5#r7` z9BYW@I!41(Zc^y*2WVX1pEy7DKR6Tp=2U^H>6?ghpFl4D_~C~}1*38D?{(+*bLaPW z&hORrihqSsgFey4g2{*jWS*1k|5PI6Xz~4u(YApJH*oiM_jixeuF_W<&z?2bo~=G> zAcdX3`BR_k{9V=~GEb&UgwcrEHB=AsBNm>pfZ;^3#i}=8Bdu4D?4y`N*XBxWQFx9t zJgy5ppN9$g2pwb}I7pagy?PAd@p9h7=)&|j(b-~t9E#=8^bA;cn>o~fE%`33VXg>3 z^v!SC_f6ec*1PYZZ^$XHejhc|vk?K&*WWVYAIV_($m+VyM=vJ{S-6w)WEtykr8huP zj7n9D14=uK@%h7t4@$R&&2Nw|#96K@o&uJ}5lYkkB!%H(tsqDr57{@Po? zfj`$DVUb~EqtVdmZkZ$Cg|>s?q8VQ4XE-J9;E#Y`O3vde0HG5qgwyH8RfR`I%CXH8;W@?> zfG~dGdp@#qDf@t2RR%9a93;&BZhWd3k(bDZQ_^aSR{zG`{SCTnkUAs$_9VaFh_XVH z3T8lsJn5ux!uIX2s^z;Wi}rHqQR5j5^M!hpkOjV#+(Jv6n{;=)Ea5+;4PU%@s|5;< zESBrr*KQ+?q$DzmsiT(6t#LT?ztjE$mBzlM{%?J)k*EKAZ~y%-sQ){^>Bqg=@4edZ zf4CLL(HqZ%gFf>WdQXjez;e5dC;`k1hO)(0s^D3!L!c46@tB6ShOS*wV{h+3PbyuqB**!g& zY1%3IWoPO)G>tZannRnQX&1WSNwlCu!9!Pi(6cor(lutjRyP+!A6uy@uVYQuz6g)P zy$_*(Px@~>9)4T_D;ST`8yhz-^h?Js+~Kf0vlub!`EF+#&a z-XJ=0d=aHh$nq@EvVMSivG^OZPKYoH+f36lSb8{>ei|!`C*gD>HBEKD-TLX(?p{mP zuSra$R#w!rr%%_OE%-4kctvcT_J<#LkB`U_39C2`jmLz$u0oDB$|1PMxhuDz-Kq59 z5MH;@ii>`!O{HBey?uY&`iWj`cDMF`%syh3M}t$u74!^s6%D%aRn>D|4A*&;>cEdZe3NuDyUCa{;m00P-3!iDaHPhQ!658m z#DX#UoI%x&4mxG$bQ9nJE5K>Gz7fwk%lgSxzBlLwq1&agTqn5KFGvXDNt@eiV+1}R zTgzBmEp2NG^gPzX#CALr7&W4I)`58xp{E*Z<>TtpXP?YV(>AKcbVfHArH}1M(35L0 z88azMqi;(Dz%II%!YuRtlMF-{Xavnc6$I+1ZY`sMQLiZf$e6Z?35-+PSW% znkrxOOp0&TH8_Lw%Z zxVpN^OCDa|WRfY8ExIXJr7ils0T^=09D1iHoY5G~sM1X=$#Ha&5INw``~d?Q*c%4p z^N)D{Z66%`X}8rz+0T;K98&@5GEcsXwrUrW%ygiXeU-V<+gGhlJv-!mfC|6I%jl<8 z*xNcf<_e@hqYioP6|O7lOR}P$z7NM^GTbG-836y8H;!C5{(Ymj4UP)jC@U*;tq>ab z?=`}RFZnoa&_7s48kvlGJSA9j)B`NPuT)JUuA7&j@8b6rxnj~tSP#(~TPd%BimO0g zPW8CC`5ie`w-eDG9SKuqO0Tc4Xo#01} zzNU?HMkAdbMsKh?DIAYJ=&+8GQq4aw4kD5%;<;T0bnogD>0}hdW8UWG&hG2h(XqY6 z^>|g;T)lE_m~qQ@MV~CMAdRdWoxu@v#*R5vqBjXO@X$Kvy)*Z7ghr!!ax4;VoB8SE ztSw9QZEGWUXXmzmy!SRcv+}I@m}v~gy?*W_Dt_;u-vg?#ccypY!!6B_aCG6eQtsRv z3m3mPO!&V0#=bi|_~~c6l|z4LhhMU@`HMSk)H4>B##%|)LF0XSfT4R5?dkLl94^Im zafwkCTnwC1X+G-OaEKn(T((G36O`~T_8wl3M*-55(C|jdj9%w3HSOAc0Pl~YJ?Q`N z)%NPM#xvDeUtV3S+A$LQO4^W%qztJfj)Y~A^qMC?BhYeVCkS2&FRRowg3Qu)b-Lfo z&KI|ERL}xkgsy&~@O^so47nxK*Mt`0YFrrROf6$M7j=+-8b71!>HVf*rtk5z`QTkq zPt02Ck_O;&^33Ixlcxu)a`Ie+zqv`b*h|4W8>LcZS`EP$whkPof;w`^O)a` zqK~3}iTbrA;iIUe%aS=KNSG1Wq~}0*0l>agrIOkZhQ)7*w_5WjdA&fx6B2b4Wb*0E z$+OqDo7q_Xj-?txXIh;y?O3C4%zlMqFft3~7&7^K^eJZDOo|JWy0E6eFr=lSz07Ge zN5Qt3Zp$ohttCmRbAct)&B+-|=iIp+Ih*i-!5+!U z6*l`>?J!ICW$p0ER$n|G=2X8%JIEq`c{|%q;8rcf_?-RHFmGy-h;)lZq{UzeHTyS; z@yq9QtMQLJ=552exIH^ZR9Ci)jj23~2D3+_szIF(-1Pe;Ri@xZky5F<6vHLc%PG;I672G0H$0h~eZp5& z`h{=Dp~srztU1f_;|?EQL8{G-J7CqBS&i9>=53^jc!J+Z_edv!y_J|Ef%FbL0V(f(~Ory!*VX25aFl_tE3azmnZ0f0iratR2;0JU?;yMK& z!18>~5I9LnTH;Tl;HoO4ntLUC0*xrmNR@ujf}{n zBR*5_jRGsKdNi0&c+g^@n(~2cj)?ZC=PXuW-l#@bx`Hlsa5*-cj1EmGCReMdKysm4_e3Yk06)#ugsDA8s)B~a<4FImti8UEsVz|tt-6n;K2idJ6v}&;#+3`nQrG&5+*^Zc`oWff6g;w^i;EO63^JaQsW^AQ6Pjt6Yl4in? zP=$Ac9!Ea7q2O#bR`Yhj>&nnYZcl0Pq=gwR$s9-h5N#ee?ZD66*4k2lT6NajZ>1kx zi__nNR-l02!tHFZ+&kFb@>X3ZOkZ+V@4+X6hPIYtFl>cT0_G#@9bxeqPdG|0U0BeQ_oa3mZDXLnc>Wmm;HRM?2-&mte%%Rd+|Pe_|V>ZfBXjB-2&9xYayL6 z9V&sjY$N*!*HeVy5ONNMnlcKKyXKE0n>BqT{9HL}EO~#XjPLkxYyap~>o7}bWOAmD z4*1$Z0$kQ-k{Yd_-t7WUV4zi>qyzJLK(A&&J-0MB;B)cmu&>Jy_iqKb5Nr8Ye-^^;vV0`Pt(h~vXoYA5zGhcC%RBhcp~IWJc>{3 z7Lkckz+=ZF5otp^?KT>9x7+w@Z+9PlIVPgS`WZ0N{&T!LHp`>jk~?MQb?No6%R{_n z#WV7b%p4xQ#b}(?qs1$`%?ap~r`Zk zt?57hq2*AFoNdT32{5Q} zJn6a1{us8XN*sfp688v0YXLrcEt(7nC6MHFGksB`!6lG@U0F!tOXQf?CcK5MHw%oN zHPCp*&Nwep7n7i!Rt95bFP^}}mB9dv>R=UhC*Up*RVNC_p4^N9)1?y4de$9S$FulR zJTfeK`bA5_@hELDsozMG@k7@@Av-%42o7Rz%w+mqDKGRC=*e-ix1?+(}Gz}KfY+; zI!b1G5&7h9s?7D|5%5w9m(s4}T`!cT1}G6Et`+QwU0&|?2Y&g9Yoh2~8{L z(2CFq)pHxdbsvR&jttU{25sFk|69|*pvxx1pc7&_n2p4hhC;Mke!+1}i$c^!ruiTI zc3$R{+3?EP#z#3KWZ2@5G=@)A-LWM@9mpOzV?;>^l2zWiDh*)PUwzK**fWDyLAG7) z@5QDUWXVQKB4-r@tV69QK#`hkDGC^dCDVbHL^BfU(xF)Y+duYha~_qQp=!+IML*KC zyjqg@)P61f@4y0^!3z&*u_^|s$rfnM!}NW8_j8&$rbTGZDV@b)4gu}b&$&48)_ec( zt~U>@<;r*otG)iq?mN9(DL+HTanh5uRT(&qwW_+VM;yAEJRQP0yWVNN+Cz>uzxSHy z{!V=h6-pWI6^9%L-D2{YX=i) zF8l$v5Ym2aLwjM+$7cJQ_Jx8r&Np)mn7#ZfopetAOWP2tltm5*bF<=M@b^iWn-yFJ zQ4jWuqJ-0&Q&}vM=4CKh7_x*ap}^rsfP_=ERDtS#0j%m4=%P~?=AR&0U}Sd?jaSQ$ zv6fza!}m}@9P+`R^eOS`>S})h_I!W$=uO2siZWG?jt^T~Z`-Z?or)7bg?F*PJdVc! z%`sOGO}c3fy4+KmpQnAy^$Jx`)2~MuA+Mm}^T*9xPj9#X$&mnZ{l9)||No8EjQ`hX z_x@kMrT^EX-PY?Cu@74N1D&%@_56yl0Mc$>i=4jRyL`QO`Fij2)lyQ&$M4+O0sN`G zxYFITeX##(_caz$j*C{*pSP}DQF!eYCc*VAm$BL#tW5)=(@$Y70zZv3Bz;G)quw2S zx4JP6|y^ zoNH?Nu5t?JNO%u3ec#cws^jHfP4}H?JpB{+5$F=!-TTu2PoV!IU=Y5o|Nr&p>-Dt^ z{rB|gJ^lAB=|3X8!og)UiU)lT4jPT4pcnnh)>>0Z!Ke2@0PZQmdy4Qb6yb_e4vj=u z*C)!dF#&QYu#78y4&UddgqK08%rHz7Zu2_lKkW?0y-b7v5|a6;8gOS2f|)$D<(caF z-|6@!Ss~gio1Bb;)M`4>wd}&+D}NDnY-mK(KRNmfg$iH|5ZtOZQ{rWgV8tR+rm8~o zzTJ&Rz5{VlJ(9p&I7TJULYi>gub7ZcISd0o?gBhN<`>a86;kb497LqvymL7fs z4~U93d0GGce)qVdt!A8Ouk?Y*SX^$Ohn))?#ub`W!djz)ypV0eYlkXJW7zTed6LM2Fhc;pI7&dMDI(5DC%_x7B4ZijX~pTOO%^t0)mSRM?YP zpJSc>mvb5&2O?#OPTs#+#z!2qHg?|c(aS%+_39%fotHQ&13kQEoB~Ko)~J5eF%AL3 z8O|CC>t-jBf6%SUAslvT%{%T^^@`5D`))jA6x;i+NNq4j&5=*9u_RRXt;fKPcGp#u z*@=7c$j#LF0rFr_;b>s$rYq7hE@(Bmbf3TdOtfvCjC%Q*VbTePVg7i?kZ)AbY7%x5 zuSK7A@#qj2a~db{=0Ve8!yJ<~(}N!0c8b;VwM77Yp~2qfMFUj}t1 zUb0SJ*mWw_B?E~duPd|y#6-3LB$pORp`)fM45Wn%@viR+_?imB5#D*{rg)I5Acy}$bF_Z9<6~(qlEXeCuPRY9fCa@^46AjPN+n&vnfw<6aw-%U>n{vgR zCNgjGi%6m=G>H4b&~4|s!x|e6gEWY$t9TV^FCt(Gue}wJ3{u{7rlR#kSq0pG!$ZpD<6gkTFf}hfhx??xSZB@ydO=Bo8 zqHYDRx@uc^txh3B;ffU=Z4jd4Srm}6XGZ2tfy1b%CD9B&6_)=l^-P)mh`O9K;G?b9lts_d|TBLkhYiv>yc$frClM+8ka8T zj?C0GV+)4EUc?4%E7!HFtE(DX!q+C)8>;DcON9fmURi$7hTb{bk?}I()DqESHj3OE%gFshly2c9PQqC&z}%&zLf0kZ(IjN|${VV58uYX`KHVx&%NxaRmu;&; zSI^NVk>_)@X$bi_S|yHPu2v22Fh{G}8O_GbR*i4SmyQEQY}I$?s2hHB{C1BWb>uIv z)39a&py812{%(ne+l>)3tH^vwdj)iR#npiuk~m&eT|Ko_eYw9x5fr5fkr;s1vW8-q*03!9i8yd zFo%`Ycp*C+vzye7DSIUi<&JY^8$3+qExnli2`95LrC%xHZyZ`eDmg(LQ&Aa~WbaWH zN95xNcKc*>WH*W%wGPERq}2;NBgm7La;5g1GcClhnDlJE=>0)zJe+ z7m3`BSy&key-jj{|Brt-gzu<_MAs@V+aMm$=1Q{L3$)LVn$vqp)9kcZT3CZFoJqQ}QBcv8oCb`YxZlU9$Z*jH^NjP~;OLgSf`Kvq9G+^CtL4 zP>$HxGeWm}ev^>+!wuA8NDNc`WSt3y+_B$?-3N~(%*)zazEa{$1>ne|8HexS37 zl-0Gicy>*x)3(tjIoFUHN?(tiWc{Api-%SaydcJN)_{$lwkz898ge+r#{xpM28(J}Mp8!c04wbl0LoPgn=9 z$m`ycL|3A_4p4%1d7=Ge>w@umf@2Cp3o5>fUnpimE%0zPURzbB+s{ow;2w>+ej?eTpZYC?m;62n*CnFzD8T zsJpC=;y%CmUd5xX)`mcNUl0w{;vW_f%sb}_ReZ+ukdMUG1=*6J5?tcFwmUDh^eham z<75NgiW8KKOAH~dLyuoodU~eNL(~KH8YHB-M19cvJ)Bgo1LLRH9;ey>PfRREZrGI* zVS>-S2)^{vjz>|y3^|T!#b|(!$dFc5B^nmoE-8mDh%DTPbQ^|8H|1VuxGB*m1Q?Fd z;oM}{qhzCZ511~xYK(_jpKQ961GL(QzXja|*AIq4#rBM_6k{ltEdKvW4N?p|TJ-bMaddb*PquxKTfBtN?tahH!nU?bd z+C>bEuNP%KNqnLxW!>QWPX%!|kL#LjjE@aYt2c}C-y6bXOhEUiiEXU_| zNzms^+*b8xPYbeOy~si<;!r_KKz)q3!1V#9{;QPf9J)dM!3kP_zNu;rRd+OgTQoLl zO1GrP>o!DbxxUc)!MJm7$0SncQc7{_q3g3scS^)P`g67Zbsf32?-9XBmNKOb1~elx zjx4gnBk^^5aHg0Zn6Mji2K>DE^t9v;m__2=K(gc2g&Z}tnS&*{_!q1s%hji^qb_r& zRb=Mt3r427x2Z!jh3+)ALCkzzdUOocfI0-LF+>BGxaN|iDIEeG@L;K;sVBdHd94$# za;P1i=0l&Lujyt%4U zneAhQl(!%q)o!Jh(^4w*H{47K>Je^~Px_IL=<_Em&T}Ea-b@EW|Pkvvriqy!A@#!*m85}*+e#yZ2MR*3$ zB4y?nm~zhS$>fW!Tvkz;K@muqyDZrmOX_FxIi$dqI=x0a3o@-6^PE#_3ZnX!Q*yo` zPP=alE?c>2=W9PjPV&1ii{6-!zY})G>$FC?WJP1v`jeSaiwfGjJ*6}a-0rk23jJn{ z!X!zvoE*5w=j+kOSIHWeu$N!AfNsnw{}d*%Vd0Rdl}!me~E_X zp;Bp8rzVSTQ?AI8$&kWAVz78tjz*fG@M3Xy$Et5;_9qp3E_L<%0cP0n_sl!sE(s|@ zTKCN5)0)ws#^CvzQYqRx8e}{{^1Im(9O<|$z!-LpSNca(c z`6H$LQP@q&9PN~w&tDMsBry|=$76i;xDzEwMk!N?29;BM?XK*v(H5KQPI2_asz6Qq z_}huDJQat#<@m_Xi6ynR;ao#C>WEeKT}s?y0$NWOxY%NM9i^xVy5mfl>$qBhRhCD4 zU^ZtjhymsXs;L%34xAOAr1@-)?!sT4j)yfy7U{JrIFhe2CvwiEx>GNtR&dvTwAR*L zPPx$uo0~mwYOK}odfHjf6edK}2c^P-gSqb$b7lzk%G+ zjJ-33?y_wxsjul+R9_K-r9=oZqY)_-Zy~z!56*tNei>Y_NJ5vR^D=aXRv~{v3+Rkyp_`zi6Ub?kp9=Pt&B}?a=}Iy)G8IK; zl)c<^%jd(%H9b)4gm#;f7Bcc)Wn5`{8Fk7auZxaanPa^|RwDD+jie&$u#<6BVk12= zyX{4t@rFvm9l zJ4Hw>fIOaP_x;39Cm4rHKizb0u;+&6slE4>ro)4?pDMjWlFnhQ7QDFGCbYL{$x7-S zZw_u+?mL{3u)6L9+`b$N%jq+%C*angJg010?*bJ@Kb+sFE3(^0hiBR9*{LQ(B<%FJE#CxBuDBy+7Cg;GnZ^>-PMUPI zo}O2hcvvv*dymQg+4nz!$+z|Yy!!0v^YzUAzxMq8{{M#e{~nrVz5|q{c7kzGblI=s zW&iAVcJ_RK+uz^z|5>-aqVOLqq{&9-P&51#chEOg#_2LJ>+?81F7T499XY#w6Xu`k z0y@uCbk?DCj&J20U)2<9YDTCKahJT!Q3H=*D(W}a7Aw3SyC$ze(upG9G#08f7jB!_ z6zpn8g5Tw|JMIU=kEk(^9sH&RL!~MSGOBaA1-q?M)gXde^hb>Oys8)!BX<^)$^_li@;N)Ie3V-a1t7bHpH8stt(FIqwS?xJ;u<0)h52b~(~Rt23gU_(r-?@rNmP z9o}(6!e6K1P9X0_;Z-eyd*1YMI>*sJ{k}dE-<|e~P#NY(p|cFCj{3n_xPs}r$T%2H zJF}Fp%TApwltqP0DSJN0JkMv~qjQUl&d+CK!}Gsi&p;`Fsn5gf^}4As?&mEuB=?*m zJuXvN1Sq*wzkrJ30Xb*ygou}bL>LFX3tJ)1-InVbUn};4gK>J4XQ zABBp+pK_(-MKH=Gd-_q=oHt~SuBVUkL#-sT3w1%a0g>LS-1%fLWU3B9sTQHoyb<%QZ%WGo52Wv{#WuorPEu-JnS!Jf- zsmnokxo;6_Khjgtg@N{7p;TQWzRX44f1gC1ivVUonZL1LFbX|z(l|aji)x&!iw;-w zr|O)J{%~!MGGXr6Qe{%7HLuLs9POM1xl8YsN#+8J#FjtL#da=O3_8=>^vU43JN1}C zt`r=e^b4@Mj{XSu53+5hLiZ$9p>rPgq2(UdflO0w8u$(EP={wTM{qU@ZrmZ9O+U{t zpd_hbDP3WZkA;VplpGFbjv^R%gNUcH0?9DG3P-~@8W^lS9M0?lZXmadsTW*+7k3}j zuXn963a73o(AB%pLVboMQ|n;hWp<8=7~G&TzIS@Y`} zIu@YcwrIaVwlEyzl}>WOpwpk!Aa5KR%5`*hQUEZRqYL$m#+loBoDp4QF_S4goM&FO zVQ+F~FWb>LeeUV*#AH+AI=4jBId}P*q|={HH^k#f0-GBGy=v(JWLk=AIV??bmP

V-NwlQ%MDq%m6!;0wB47P&-L$=koeZ1hd#%0Fio=)$+JAAiuQ}UP$@eWNiou z^(m5@ti6DAV}P5iV}XnYga(LwyUD8MyR$OU`cm2$Vwkux_C8$-J?E{Ux0$fIrG-eO^z0ui+} zlUX6H5js_AFLbV`HVU1p3=%q3c`uOJg_2p7D&GfUua{VkL_t+TzX}sop&1v$FQcDf zlrD0P!tv9^jAye6;BqPt*OJbn$SfZYq4Hh>=-ExSusa>#0JWT~YO|YzVs|sUIgT_x z0&>V&HM{8~5|l*(vzzCU^$D|^tWVI11N7{s7LX!rPhPYnqLK3lR~{c_N%=L^!`NtUFI&&2WyMgjLUH z_F5G!QZC}NoXCt4C_?$aLy7-TE9R5_DXI{l=QBk>3IL&RM9%+qPKD-iiX>q-aUHU% z>L&C9&`x(u9fgH=O}AQ>Eah2Sa0EFhbiHPXc@14x>C3ZLAk#0^nTGpQg8xVk>@Kq4 z1MCp|=dY9F;z)W5loo1@9TVOm-?+~B%^;H#+~@34thRYiKa0lZgp3K<0?St6XEzvt9xA{sSNW(gRZDdW!JJ9B35!-T( zMYbS~Za94)xfioy!#Nkoa0b{=CjprN2+a{Ow&7?u{x6FWG@OsckZd?FA}fEED!aqo zlxGV<-#;2;iFvbA;ikO2ev&nra?1j8V%{LXfh-dyHjq}D$uPl4~)_15bM$s<>^wqn8!tH#O4JAG?yMeZWoK>xXT#q!X06Ao>Y9LcY zg0cu&vc9nB9#i)(4P+Z6{2ibh$m2jB1?UFy5|9@Fx`8aRQvXC|7?%3gMH21?z6Fjq z0HLMA@s|cNTOz78kn>JLL<8B{7DF@}$iW*;1DPnwJC&Eir*yaSnzq{K$n!&hZXmC< zKn19*BPbo9fUV&T-9QE)cnY8+zKxmzBB z=&iKVkW3eQC77=SgbIb(6kA@quG*YxD$#Tq_NV3*AIykwe?^K&*QMLCs}%;P3v6*c zJm`6rYl$%S6E&R5^m<~8=Zm?fTn|OA19-OyCr$lwxy@1a+Yz9DXXr7njrHr$^AcT6 z$(Yy6GN`oEGq5vEU787NFJG6rR+neWsLQj^;|YK_Adu&|;4y_$KHki9G?>yNH%ya-l@?#DS%Ze~wo5c0ZMxM)H@4N`?Urax zzW-q}f_hG%9^bXeta+LBtc3E40!#`<)%saq&`eQ$*-V&BUv>rVcWz|0lt{)=zgjv$ zLNgBb8}$Yv?w5x85LQ8M1IPn(AO)N9yfZshZRxTfh} zL{^qJklJ5UNGD7A0<%#-!w;|zbc23wq#lBG0d?4d4~qcxA$qGD68}QRy45xZLsLNL zh%lH|TXpNgdrBhMf-;b)cx~vd09|M*Z3%WduAsurBzC&5@LN{lE40F0k!gE?R(PdW z_#6a>0kp!?MSyx83a?Dui_}`-@n9GW2+b0PzbHH)pxDy^g~tczzQS|Rj2E+Ed~}_$ za4%osE)B)Pi}g0u9Ar8T;Qc9_G)O6UL{@oDb@?&xTgSLKnsIR^mgcm}3`soE&*nXw z%^ZE_{61u{5ulCmkZ`O0Fv9%!Hn3_Vd8*p96F!Gfv-y&-)VP1L!ekf*xZ!BiI(uWX#N&YGUjT zNaNj*j>kp(`67M;gzF(^iXL)?A<0<)J>>i*yvibW$eEJ1vyqr#ESN_FLdn(4aN>|- zCV#@>JOopoANh?kIQg4~^iu(P@;49290oY~TL$D(fU5H-Ld_(-`y|p&i;RHk?)#wM z433+a`syxzjVzHdGRBR1eYq2YmO z9aSv-9{VN^oZg#aEDoIev;cq4?1SG;l`^kZDtWTVGTqqBbZn2a`{*VD&Xk&QDo3FN zdU7#DH`iBCkQV^SLxq#iXC{x8z!V0~4+drj0}BIz(6T_l%uSU#<8}6sy&bCZgFJj# z)evd^hU`&KOCiH|P~!`L7ZFK({PSM$z&1EqFgZiWd{$J|Gp~!Xh3h4Ne(z$$QUuev zh3JmhNAwJcbw@x15-h`yt6$V8fP18y7d85jtG$k4D>ez*n*@AH-Yq3ZUq68knjA_W z^b?et1lYL40TfKYp4sG3a5}lPN(GPj2?}(A0g;v{?NmqK6ZW{eXtW1wJW`$ptE$IC zYC}D#7&j9;=|gH+L|}4AZ8|+B#KRj^8&zhX>mTUd>Zn1}lW-CPpo}G-4=AI8=oeL) zJz=(tF9Fs8l-YML)e?*|d?6rm0ru(Ffw|^k*gFbjqdb{*lp=6lyf7miAVS1CwV6mnb!%@Nr=7Q101jBQCRdP za(qDQTBM8i&)N-XW2_hXugw6lTN-h+Fp4+}kkJ95G!^5k-tk^|IRQzc$wl53K-~M$T)8hW&_)NM_)H>bvAaoX>k-dC8&zD9nj4)8nmaO#&93|io0f7%M-Zry z-W_?f5~mjZ z3WGV+@~j0nw?iI+V<3U!3Bu)R-tEqb3iM7g13 z$lq%*aOe;f3atk{9NJYMO*`}@Y#a&A10@>T1D=?Qbw=XMHr^p$Xvf5G3gv?}DpU!w z6M6v_bX)Wqf)zmM9pE7qn~dnp?p_nH#=d}2vufq@+epzl_(`NARqP{hWYsQOPC{Ma zu~*?dS*1nmNO%@WbQ!YhBzA%j(r?v-^jkF{^HxoaZ`EYgDc^wTSOZjKc1exbfkzKf z0Qc~6%v&|F(tO~_g-02AjFAgq;G*>0D`Pys%e@)}$-PRy;h|jaOXaSN^E`I6{atXt z+^fC+AW^@6!zz<&<=zxs2i@E+5z4(enU$d2C>${N799w=)6n>H*XuP`v<{E=%dJdd zy`{Tv!v}LWBr|<}QVx2g+*@^;{Pd(3&^mH&)1jjDq(2z9QHM&>YmJ*VN9EqGLuKhn z*Q1Nby+em8{tsW*0UuSd_3zw!clYjYlHE;0vPm{!lTbntLhl-?h*SjyLFot<1Vlsy z#D=K&g!fcXK~X_PQBe_5P*B7QHZ1sTSe_4`<)J=%`~Lqkb2l5yx4+-qJ?G3hXU_C; zXXeI(yL$n51SG4DSKKPD=!L zF`YLHHY-taGA6%84+=In5&Q%>QM5&{`HA3_XkdyS5^O;t_!Vv0D!H&Y5qt(Us_0<} zeQ6?iDmuiXN232i7B5c($20V89*f_qMDVAMz_x2FKe&wXdsJfu!MWsoOiInF!XOVo z747h*Ld)91VE0bIc1q}X6b88iujp|JZ)0I_8LCy$6VcZou&FQ@rJc_U=cZKfOH{w2 zJ!0q9RB$EJWpDHu=-inKPGy06L9{%R3J#^*i-PS*1-JJD_L69MDHXhy;k_)_tEpgu zaeqay{i)yp=GZ>L-cAMYVvJrD>_95G3bmr>HNiegRp8T*MXyJh5C>Dih3Er|-jLu9 zmItfIxL?dXR32Qz;NBGM`|{x5Y1lsnvnqoB=@0C!C|e<~BFL*hir$t0aw>u+cLw%O z0h`5mMQ}W7V$r(=Y;Nl+bkobi*^13J60ngz87ECL3yL(!zgiwEun?J^Li|nRA7_L^ z){xWBv5F2BwE}N=3lgK}0jN;?C3;TlXegZh)b^$%;_Qo?Z>F96`P&OeiBfw-z#yiPfNbh*b zX75_)wBJC5EZGvEe#@>Q@=)XkdRXz9_>)-O1wdkzi)%{&M@h)*j!cX{2*~3jx`VWb zQ9R<$lEz1LA8B8Z?;XJ0PXs z$8JG}+jcpEDE*=EC79~kwRo2PT+kd0o)r&3(&HmK7>}N(A&^w5tL_An|1YF$X;5j6 z`R&jamxh#9ng1oqPN}Ez!Z5?lZ-=T;8di;Rs5C#u;3C>DX~mCY5PU@M#UsyRd>in70Sk z#mh5I;W|?LmlVGot+oeL!d!A%5UAI))HaH9DCPlOuXMA)fh+o=xZ# zLKhJFn9vo3ek61ap*%dIJR#s!5!!%9cmc{>*~rKaz{9<=W5eN@OsI-{reU%Iuv^;L z`xL(RaKy8;GRDILrZ+8Z;V>`VTUj{WbMRDd?>ex$Wq@7xJ-|Wt0z5r;8YnsLw}2Dw z9>7KJY=m6yjz!6@bgu-xg?kY6Htt~1+qyBp?cL6xcW|eIGS1xz_$2osz?0l+JWqD- z#Pc+FG@ci`EAU+E=0V$KE{^nASGltR|JK2VR8V#J1k1!B4BxuJ`qK0Ad7Qdsy!4&G z+pxd*PIL>U??nV&%;+D8en$FpENkyae+F#jdSF6LbpE?YhE!LL zx%n?6VySK#^YV8S>#nh!{Na@AVdrwp7th}cm8qU~A!~Rt{~l`TWrsO%NavT4^KiTH z5d>Fb#c7Er4~8Gzfk${W#LFvXl$+d!GVhf)@xtg%s;5n{%A3i8j%9z1*pxSqoeHI{ z{S}cKL4x@11$ZmGB(D_oO7Y0!r#Zq;KvU!9C9O!UCG`jpWL%c+sZIdFy&n(d{(=%~ zyQ5HFT=z(ZZiN@)FWuYe1b;2iPhCNQ*P+*PuR%+w+$}7n?qi@hR=9!!M>*5Ll!~X1 zb+!SpPXkAKq+DfT*&H^cN6FFI*F$lvsM zXEk_imap`L9Kx2p8mW+;m~%4_PfJe{%j5PShCNx>lJ=+YPfroHwAMRS*lKL9@TX^l z7^~Knw~W0eS7=hB(+eFol{VLf(~IOlv}KP$NlBldM-SKTjCM7>SbX}~AE2j8Uy#=Z zMh&!^FcB`4>B4Z`t0AwLm8oYIW+p}c*QIf@bvtG zB(cJZv(L2B=jPS`SzA~!2grGXU=-G@BcvAOuncZ0te7@;mX*FJa2wKYYoSgRYS6IglKbiA0;6iV_YtFn1)iWE1Tp^2Hic&MrylHVT!0+`Bti{zm*!^iIl2r z;qaV6>04;4V$+nwY6%GXBz9?{0!?~9O}@n^8^3mF31a7}_(7=WluXEhi;!UYRCLiv zT>ut~|G|v^KyYUroo?N(EAa9-d8sIYyw-~Tz=&iDl*a#wl1Ro*e`K^u@2$g{IXSSUC z2oF()08We|QL0OXy0@PCX&oApl<5D8RCzp$oYYa}P}1_4v#sm;g0pcB1=wt)F-HDV z?$+NRx1G|Q9^fZqzdtfsr6(chy=!#5$CBY)a9X8pVR>02lh-6uLDoaEkZr$J^eb4K zTqB0_3c-4&j#klB#H36o+7k`@gbOpx!|{TsX_z(W9Y1hw!7&O`n|MOyb2a4H_u<*B zX)d#4VO|Wn;Q_rO7E&e>$Ao#WQ;od3|8s&Bwwv#JdWfK z;jbT0GPx&$h5-`5D7}joqNOV6Af3D^v z&ki{_JL@4-Z2ao?z`uePsk|?|MN#R0kWz5v{2ss#yPBCc6nH<u7Zp%!`UeT}V7BpN>*b%a%yPME(in3jqIt>q3#-UqNv`#l9_2ay=|@l>;e(%gqN;3!pWe^MVP7t%{2F#4E%%Zvhk z`4#&<+oB}mhu0Wk=UT323xZGczGGX?X<2elHjulvwa@x{xi@Spa-NYJ-yYgJ9fy|g zdYf(6;w?H}NC)|;)!!rKkhj;{#VjO8!s7_Ia&A1j-cGYQJ01ARaLwkRh+L1u^`Kn? z{31BX+tqsX=B(I!e$`BCjmAEO@B467ED>vL8A+6XhGrJ7itpRk*fG}rowWB z(U$dVXT<~OJC7Jcnc}y?L}ZerI0La9+oUaxe@gr6L-Bgk1zwgo&9ZXk9bu7NX_b{L zky8z#Qz?$L>MN-f->g&VWSzu#Db4bURO)LNFqO`Ny{E%9TTn+4xmfWg;Mc%O4d`pP zU@Gkc{w$oNQvU|2G{BCLBk(zPb%CR5j&-CRV-9r&r43vaYu7+M+8qo0Sh%Kfgm;wI zvlRGzxWjuPav_-4^!q+||7XjEU3=lN8!ml+Yn%u$v9XT_C$57i#Tw!9Z^9$A7mv@t z_8+*=<3OTcz$CcXw?<|<(gaEG$UEuu$6zUbP^XPG3EJk^iRsW5$~_F@1jsdq3n?J| z0Mrrr1|lZ{7z-C^V`SOYT8?M1t7>s{1zK1S&$JG^xe6dMFvpYtR++8Zo5xg8W$H3j z2H$`6tBe(CWdvAfBZnJ=opo$tmMRt`UGvV()SxUi_$H|n;f=A9bn{Izs5yx2rFLi> z(mBMWn~vyAWBizea{$aD!X&&3z!h+@zcon05h$66^I$_{u|5~d8W!s(jW1K=I_;aC zBL6T6M&V83Ek$~jA+w>0oNb~iMY>H5YAik(fk$JsfXz9awd_JxyXGvqmfehvcVkvj z%kIzyl!BR9)sUiDa5n0h6v+Y>Mc0nK3xDf~CD6G?4uSaZ!@8Ifp;mv1-nAJ+*`p+s zJCG1J!ZkY#YqEP(6?^2DfIkJ-^s>I#xuj%@_$}}+NE->|FKJrrzbKDz&ZDwI(#qnYTj*eF3C*#Rt;k4xiQTVY?6~fs1((rz!>HU3s`o6N9 zQCV_>8^~?Vl%n6u9fI6>S#lRQkh}9Q!+Q^M>$2pwH;`NNmvZkaT>h3NS0A@0|5D}v zl4JBXB)WP?DaBp?ji>XwRGQ_bV21Uu&KK*57wd4#i9QCjK__P}@|8ce z`ua*~D6dq~oisuIrQn)vM{&JURZ!C);QinZUxogxsxeyrGiJ@TaEP6r_KGQ$9MB~1 z)QXi4cvO$yZ7TdGtPH&Xrm4^}8Ln(Uklc^(I0M+}aIv(JKN@Y3E-%RZ=Zv)+kXjY= zFdug9#?x;rrl9UC6qtR6O$tmSqlg8jzsUH_$9t`G@9@Wt8)ulDU$f*EHjvx(mvXm4 z?yb9Y#2FsX1Jq~YroWWKl?BdkS#qB@ko*2GCw!&H$6l9Nk|I0fdh0X-8%<1@(H0VPVa`Ls&+# z?Z(#+u$tm5Hok1yb{Jm>4a-XT@3dai;156SuW}6g-6JO&Imz}LvXt~pXJPwV9-w zndVoZiJYX;T*zoL986PG{!bPfEsis%Dj9ngVC7?)iX4aXTYwdjlQq~i3PlCu$Ir0l zs6cOsH0j<49l8o|UBl|y!uLHh%NMZr?V)|ASaX%0gO7oxDb`sAv)Z&r4_7DlE(I&> zty7ISeiVD_R0Zu78~f;{waIO;y{~Cz+f+lkok-uKrQ0dFeo&;_sm7GHPMC<^7VXv| zz-#Y8J}J~U~O8B&S$V|Q17mUs~ca3R=@IHuzUmbJ(64mHd^-9PB?@U z^l&v>q4@;qo^JW@oV?R+AZMy<(12+zxiaIGm zbFfM5yc({|jhAehLSG88hnOIwD}Y`A*R8Y3}5J)~;s0ENp0FB{d{fwH~ z?ZJ-Gi=4bhBZfIT1`TylTXeD$Vm7wrD9RUcLKt~o?yPGHoe^|=he2NpxX^E48UUaV zTo*Fs7QuTwuu*W89Qbd#PnQSf16bma-*y$~K!qI1UIy+<;bbJc3c%GwIFj86;7+*M zZllLc2DJGy-{N;@5QdDEfAK@hhcQp6&;@=7TcKk!m2#~78i0L77{WmSAHzlR@7IBnIVKZ~&B#P?Jp(Rhn6KZ%UUUnu*@$yCOazuG$U>ZYZ@oEOWO&Ac1S9<`p zL|D9z0MG-@YRlraWs{D!)gJN}2VU^4J{BA!D8eE&4Zsv4EK+9zm<<>fBhknm+aAILRY%2fDCU&%JGKiojcZeY9MV#gUH{$Sm-2Tbwz0YBFH zDpZcLBGG;cDqd)y_@BV`Q}IkApRG7jZAuGQ=bYyZ!ezkYpfOXor4Wr^Gldew<_R|# z7+#LC=Nev_#jwshA(NfI72rs+`1;3<7NUCO8DCjSsxSyAiH~IzWv0y?voyW^2Ti?< zuMBcdFbD@w=6C=m-jQ{N%w@^Qvj&+)?7@f0XmHT7puE(tX`tn? zy}wyb+>}H{_}K=+btVAmNc^P`b|l`7mXkDMT*iK1i?Qu;+GVMWw#tro-%LY$3|e_B zQfD|N7yW8PD~21f|7Sr)R#Fle`>o6hZfS$yre_v%em{3Eh1|ngayuHxHOZLSP|o(| zS4t{o@vn1IV1zT|%x6vH_#xBTMA<*xMzj~SvD-KXG1mGNZTwOu@A zEv&O4pOJuqDOm~*)bq?RWGU3w8-#BjUD(CxXM3zU88XXyPa*q-!TQVj7&gl~|IU(| z+dyvrUzAxVQU=Z(+z4m&`y5)fLT)~Ua=!v{H^_Iv<^Bp}JAf_1$H^AA!>uJ>8z8TP z{0dxTp9%hElmx3kr))b7CCUPV-;EVSKd0VL zvh_yR8%+Af@ZCzpPDhY!k%0BR8#`^bj%=LSeI*Phi&LcBAfjWiL71r*h>lTa1$)z9 zX6j;0dM`6_I#W4yTy7{i+9=eaqV`DVmGElx4W=K6Okb{>r#Ua)V3^fDBxWZS{h=LL zC&ObNSm(fn#sFCf;8M6QPq-94<5!NDBbXiHrf#5kPym*tbRx-z{gxN=y=S+UFJH&q}=ldRZCqChZqPmI_;A zCb@j=yhV68WVa&y4V@_;yTl+&c{Urmn>v_D^@e?{6FHvgI-t%-v3-IRKbCYDs{jT? zx+z<1-l`=e^6*&AERv?IKjL=;oD82&1DLwqdDm~b&-U!#j zKb2yA@1Zrel(%^f-U+XQuJU96Z;t`2H9Aq2<(G;p%jFpqTc1Jk^cfUSpF#2T2^3GC zK=Jem6qhGZoMzI#d-?>5J1Q5Xn$$4pEY>GbT%JI2^a&JCpFn~9N+eY9T5#EG@BqCt z2riF^0olVJ(0lk@?%@w4*>Y*7V2`|hWRmUn0oiUJknQ$K*=`@u+wEO$w-5GqO2F!J zV|}PHH4boy8|z(etPfSCPA7pIdL{Hwb>0dpmW}lR*;pUY8|z(etPfQ;n*(ppY@uf| z@YPEJqlEpqp5Bk^ayzY;EI1KV_jsg?S5i2OFt^isrG*y}<__3!O42)5cECn97uZNN zZh(z!2^@f0OK}5ik6hUR8~tV%V8#8f(eI2^-2WQ=J~jfGVk_={ zjs8&B1&FJ-|26t^!7D&KD|jLG@!>p!M~Uozjk?OK!cZiS8(^{jRpOb){jb>mDjH?$ z7IweBiio*+-2IBpuUn}xkDFhy_mw_LEBFf4^Wijy!jQ$NwgY7I;q)MldtZb7N#nyA zMjH3N2FH-bhclTp?tKlOP8uH$cVCCN_ceF{X?!?WkjA~QL4GF8=EJ#(5OdAhK&T6$ z2M8Ta=utxB2|Z2dOhPXcVv0K4I%hK_oPQDOOz6La1`+y!&`E?Grt%y@JP2#^$_l5L z(Dj5W0lD1jiZfJ9mR#BD8g0y!R9uCNR>oQZ1{b%CM$gNC23)1_=sSU>ASbwG^u36H zi=pK}l;=zm+%Won^bX2}w}YQVQ*FbPr;p$vE6h-tJAyk_uIv|$zQrP-xLq{*LHI<# z(8ST?2R>)W%H4*H@N$|oLc12jcD0;lVN6XR#r>E$&0{kFyNdfUb7}+$S}ylv=6cCW zh}g~W2ys8A%l(*n%}ctF+LKi7$CT#3%J5RmgP?#GOc%+cm^KW5C|j~PwI zj&~Yk`&*3rF=L}6nrC<&C}RY1758JtP7uUXXCuhiSV3|W_hZJ!2@+S_j~P2rkU}f! z#ij-NQZM&o#!k**t7Rz`s@QZvTr1i&Hr}}dJnAzfVr)VVVf0vNcw!TC?grv%=}BUF zTyZ~UY_hN=758JtrU+YF>zyiWHHw>gVlzUFRcp(hh=A?kctl6X7COH$IPS-cEy~kT z<$lcA`FZqk6<2*@i^Zp(;(pAS*^jBXA2W8LH2uSMBbSRtS_;(>7}qt59UYFMkyd=Q z92;ViS`uq$4zt+B4S4Vwmc!1&Q{0ak8=k{XB1dsQW^6)++ADjGZD$JWz2zW^8thsuwHn$Bdc%n2P%`V{^rv<%;_;V`t^y zv3sOW1<9PLOZf|%$>CPg{kBySRU0?_~cap{12A2SCM5#u%KxMgAQHesQ`YXo#_u~$=`dcvKm4@nHL}=!> zIBgD>zN#-}no`4sz!$((K4S(gGr^e8X>~rgaU3wS|9rgA!;3$}q#gXNK4>2~_PJm# zYP*bmDv&JndC9050hqt9F!l*#eee`#cFCdiXeUpPV}cXF8REc3>ETOk3}HQ@!5;@O zN)MBi9yEb(xu^-W1!vp~QXsTKq-3O$2)XA1bDQKn%fG+c z06vC`xDUf0zwRJ5{L)%vaC zxk&|ebsb8TJw(xZhr#7=U1Z3$Ky$dlF$ARtV+?X#4~MkgiHgor^u<{y-%^TNm{L@0 z!s-M${x)KbN=DF*9zln6DGKSrQ0|3v;Rxwc71D(xq{qz_x{QT%X>$L|OkP!TI<&f1 zqQtt_l?nWL0`S^WfjzvEc6V124s5^!3OT4QCY;wDC1!u1oyXCeT8fwiI)tXd1N{)J z4|EQ%1MI04VIW-uiL15r=_*K4eE`8gH$l?seX?~Iq(OO*uR!tdbzoJo~O;EikGoX;;$?57b20Bozo~2fi z?I=O!Dt^`}Fer*@ZOvExC^IB~1dzq5HD!jzMgzG}O<h^AM_9YI zs>@SACWvi2)yoWLlD8BJp0wPKRe^EF>k^E)Ql6OG`8=RS>hryD zNhh#Gc%(jDR`Ut8M0lh=oDLiUY`Hv3AFdQVdEbK)k93I7pi-Wtk94XgY^mpobQZ)z z`2fx3S^7v9hj5;prH>YQhbYLi^wFd##1oMIQFE4F@hp9`RD3+ev-DAOmR|8JeKajT zaV0l!RE5VQ;6lZ-^wDZTiWJY%N1GJRgq|e6+=_VAMo#j02t)BKePn_})>1Rji$x|1 z;whe`k4%b_E3SHDI1!mFNK)}EeZ-ulS3FA}F=y!&&(cSx30sX7?hQ-CDCRtx4xXjY z(P!!NYjXPD0?iQ~rO)Y~Iv1uz4j=_`26#f}0r;FFb6ELx$+(~KrlRJUMWcS?40O%{ zDZe)7=ub0>hLkZWwW6V(&_&U(#;opI5szbwqP95Oj$F(c?(mZ*flXkDg(A1L-x)mNc@m9ADo`Ei-izp z{gDN+&dz)&a(P-lUXgqgaNu1$a^gr3wtxaUX9a@go3 zn6eAdBP8Pmmxa3nQ>;}5mwVIjXDJ?VFSsJYr13152iyymIYnTr)Cb%PR(fZn7vG((wYGZoiqKG>O|h+kT69)WmHbZNF8J)^VFB+t&$F8@G9|eZ3$Z<2KK= z-zLU%jbmMiSEMaP_&wwH@H))j#HTK9FG55&h)h46R07+bf((q?JkoxbAcNyJPqc3o znc;DJ4`l8ZWMtf4hgjbu$mqDugfraN7)|`uHK1X+-PXJih*z6p2-Z zawKbqw-*+yEtI2iJ0;LN3T-U)SdU9M8w+h7U4J6F8LBrG+B~`bys&Lb**v(uM{L`g zvUzTOZ}dZG+nKU?Z2bjM@J!0)sr45H*^{z)X#FKo@KVa=ne~?ic{OG8$oeaS>`&P| zvA$1`w^KF`tiLMAfs~v#drgp!QU!A+TdyxiJ5>D9)*{c})GC0ya7E3Y(|Y-z{K6hC}Mo-Lb5d zvQa}yh4iAB&{+bcjrtYC66A~!nRG(@P2;;W!XX@EJjW_HSTq2<()biM$@>Q0j*Pe+ znbbHksd2I?6Rd*8gJT;I*oXAv!wL{>+Or4RqQ>g? zqgu84eB^SoUNBcRE@lMm?=0)bZ_(3C#ocA9Qo7el&>F+l%sk_4OI1av(OL1#qN3q- zmQ~GBhO^?OMMYbX9!;1$&WZzzitYl|lu>e4EI+>mgQY%DexjB;ZJ+89BDk(!sFlCgAO4p0zw z>U`VFrW&3{;BU2l1=(xQR4ft>*Y@Q`M|);EM+#t@*p0a(j~ddyUwYW6k(HGZt1S=A zjf6{Dwf+kNYtAraGCG<&=i`MdM}FnKSQ!D#GGSd*1q8pE0%etOCLGXnm{L85Db;hB z!CvcuU@FxUnWoTcmFn3{)3HLA`EIG6(v;kW6|7*3!X@x&dKMl-^c<&D&vA-x1gZ7a zT8tByrX&=vC-qJ|n(_f&4o!T%M7+cHZ_%v+Bryj?r;ZpIzg;*%=VKYAUI6e)h#V78uYK5!9 zGa+B-aeNxC7Np4I_%z(4a1eq?T5V-~>Ye0uq9q)kdJ{@8^Ta>Lr`|+CJdfj3Z&I9G zagXCuZ?YgskK;p3p_n zu*MH(6fqyfindk>$E1Pejkt4IHhI{t);Qiw(1C^b@llO%Tm?)gXPuwgXPuw zgXPtE^ov)Qv+$>@KL)#1SG^1>ti^fq!ScLo!C~jg2g~!!2g_MXTT`_JlatJw1UOGd zu6cUoTEbULImxz1!DHB{V+LEf>0%Dri_gcS?Hee8t5hqGw<&cxs-L9}%UuGMRwoYd zRGVDt_dG5(s z>y5>1LUj_Kt{#U}s7OIpxfkO|&BXem_> zL8g1_i1f^D1FL6wyZ}S>5}*0rA}Tmski{N{MCu4ZmU_IkRnO2h zC%pD~y8&25#(Xy?hGKTihzon_FUCxiaZGU(5fL4TeM`txMapC^O3I%4IafF$p13T03ovgPQY>+~w*-Hd$GJk{ ziU^C9XO(cSkXYs{0^0~ZS4gb%-h&0+Curaj*F~8_C?u$%iR%S%J?g|$|YbiAv~6&Q-S2kRE`FxOz+Du}rSYn>qG z60G%tm^-j;6JyL3Shq(HA$)TK)*a$wF2LF#GUooPI|VVIG3? zZn%0;5OcxROQOKsZ}qYu=6b7F1TnW;?GwaYZuP1l=5DLk1o}rB-i6S^v$QR&R@9bEVZg1?&pUjaKg#u!F%|K{^|jwK_9b zDAjWXp|b=?-|?$e%t|OkCY=y})A(V)wQ$Hf26KhP!J>P>dn_Al)z1q%FFn960wXJZ zb(Nax2B$$LZ&g1qP)q{3}^6r1UbS;=;2MDtT(_9Z?Q%#UL{*r-av;A}=>V%uxGGLY^O6%KN8^+0PbVz-T^&{4Aa?$-d8L)t2kL zpNDiSJV{&r-v$g;k}p&9(;m|+fDT9}L-+6i999fm0YW2=J1PQ=m~T06v&2;dnlaKj zFQVW9=}sh$>hHGzaADsB-(a8J9`qo!l<(&$WJr4rn%cGk15*3=hF&$&`ma%Z&%m`{PkSdgE0 zWxSlgg$aOT%*I5Hz{LV9zoX8y`I<3XAhd;lnA?QOnLEQ8 z;fAT-D%yq6YqiXZj7+WDC?iwrRvMZ1zRahP$%WDYs9ZZEbSa?(cTD@WVbw*?Y-tH}5>-Lp_P_*1JdMVnVqjx^t@bqvRvLO;0n zEZn@ zS1=^C2f^omVEF>hJ{(BJ_ZU9H;fhzx6aX9s=epapnT=2=xnq=jMMroGl>fcEz<-fZ z-3=2KUlGEGPN)r5LG2>w=>{ELs5AnkKY-pueud0v0LQ_(M;PG>3Bmu8$N~f#7!SVN zjJL8jL-&3sG>f{Iz-JPqCs5tFKu!m6Dv_B$76VuWr#0MdG}zV-Xn4~J-S2C-0z8*d zh#Ia1a5WKX*Z|;mILo=(q#hgP=OD;ko>)zB)*E_rnEip!N7`Ps-NOmpHBq>bfpdsA)GjdRd{!g8b=Po;P1;`O}^H z+IhO;*UmGvOzuo;mVtOT!)#wu88i*mn#N=_4b9RtG^1&_k)LRdFczI@9it)KYYRPX zv>xuM))uwN($glRr#7RfT}DrPUr&3~?P9Ix`HY@or%2iZwxY#O73;QDGzlfzah3p7 zpJX^49imlq3GDgK<_Jf{F*}k5_&d8?nuS@`&$e_gR?$)@`L|~4;dO$vYFO{c7!$;{{ZXZ z%9tBl^xZ|%flq-uz72v?57{!LI1hxg;kt2EV5=QraL$Ug=Lgsg{L@&Ytk+Prw%bl_ zAu7-Z@L2|t%i-+Tfvf~@4Uy-7+yY=NoE2cgOngkoM_C7;;bq$!MGf3eeII!4hD*^S z(i)VffbE0}pK63S_<kjjpSgc7(|_H;*JL}iU^yyQvghd(~aZ=qrt(Ii#W7k2js)l)G!x3b0|a&=L1+s zgc|-1U^$%DFh8TAIW#NM3}ej0JMd3 zKQY1dF?lN=6~z*KRM&1E%Rnz+IeSb!;|P8j^s^I!hx4tW^D;MXdDe9F(_!aSvy6|T ztU6(fttrIhG`CMdgK*By;_PfW9kMw0Hq<#ki?bu%wi`}%TK_Vfcst>Y&Z7U4(O@~x z7&`l}M#vLd%dYfeLuXgo!O->h#Jskav(uyzrH(ef$cb=dr>;~-LrPDcXTVoRsxhnk z3&_oD?W;i1UBR_>F`Mw5^FdeF+SOMxySf)6Gy2&3GhBV_M5dwdV|46O7700TWHQyof zMUm`{!BZxDi@>Kce4RC45`Xqp@Tmn)8}fzL0E=e$e8`0tf3RUNW$po2ckp)=8MZ`S zGBQ4d{E;7I{!SV8Q~ki-2QHtzjI=<<0~49Z>PN zsG22gB9x4$B8kF;jEoP7EqHvU;<1#8!l~e&Au=~Z!|fRvAM$0sSAo8ixgT6-f&a`* zIQM2`e8`viQN_>p!#N-P3p3$-m67owUq;!1yZmr21OKI&aDL3l_>eDS+wu4OaQ*@Q z6_g1uyX!K==QWgv0y`8cM;w^lYru1Z@Ui%e$nYJ|d~M0c;xGZSVnBxP8_jn- z`B)Sl0nb+QNvE_h!{}hB7P)PlEpmxcZ{-2C&!Q^iXAQra)Q9;u<^jbGeax zA3X2D)l2>l*jI4wIuo=WqL|x2qCbQ& z79g7YGcrEp%M{tgQz*l_>HUhAyl}b>FE`P!t=>8s%Y43k@Wh3WnXo<+T~;tecQg5z z2^HWe6+UL_$_(E`&G$C>n5k{Sa~S!g0^FS8^C7Z^XoO`xW@c(3!+ziq! z(_%Z{nRa^LQ5fta2;D-+u;G0(o$S{F3wf5~HxlG@(+xQP-GDP(Xet$39H%M^X^|1L zoQ{Uh_2Hozx&-`%KaX_=XEB}Gkm;8U(-^~a82Y&@GE7!@YF5b3g$Chb?UoD^g0sCg zSOduNeYK%41}HaY1@KwM*K+)(>9h7okxHE+3lQbUvb3dyu0wgx(7DRm+wjZxIm3=J z%k`G?Syo_UGEA1^w@(agc70%B*Hj)!?36)94nsqfVL~jiW8JCE;(Q=W^Cm-Q`aN&x z3mFYVXNVtWlv&PGhR*i@Kh^WQ2MwL?0c2oMzaG(ZA7xJ{C*A~hd+RT%5PT*(1NnA5p`2CJxffg=ps!uV4qqmak@4+- z%xAtGy};jtc6|A#cC@LtgPpg}WM?4Xj$O)0H-#PS$cIDU(2O0vOduoU+X0!mlwo?D z0RGXm!+Yb;%6PAOJJ^5uOm+tH?RZi-cTgw$veTjO)QlazOdumuWP~8|vv0@Q;6ICY zRQ#zOgX`^JU+y#68OXO|w{mKm!4CH2mqXvuj2*sAAS2_a2W0qRZAp)-!T)#K(dkd^ z7+Y^g9YXM#>0Gj{kgfsBlA2V`=Z8$0d;|Gl(h@SoaoO1&MG z2*GEvGmvk`)5@u%&i3GX68fIV*x}0rGBUm$kh$8o;|1{Vp&gU|)Q)rN?fCF8@8 z7I2k8UkRLU$9$PUM#ir%dz90_z`Toh!lB z75X}7?C@m*85uu4AhX%GqYwD&XvZ^uYR9gO9f2+g!Dq6qN6@Fdpq%FDneBn_IUYKW zg>x=7Lq)DpeT`5!RGf!#!aodM-fBb2(A~{hbQurq=ixp1N%y|r*kxP0b&zK;NH%@b z5!^JmmS6s<>91r=580?ZqfIz=2J(~eSrxdIIt##c9`v09XZ7chz?TVRptKQ!jM#7q zcrSu;&oJs64l$NyY_NKk_s4RLT5Coty^JEY`t??3aI;Ct>xI=&cP(56&%uT@zzW1?I-dcNeX+e9p z_Pslzj;IptU4ps2_Ac>D!~(=SSA1W3MVE+9nJnbOiDY4}U%&!f0zPCIZEFfDMqK60 z0#O#_UPsY?70&9<6vmRPsKV1gD0lKJP&qQbH~`*v$#2Ei$6#hiaf_;AAll53E{azC z7p8&Iv3M`ztxO~byo_@C6O(tju`Q$nLb1-R#X$+ylAq$tD-^?KXQ7;ZQD->&W;kC2 zXJc}HAh1~Mr5@<8H=G^gcs?mvSzK}9sIS)aj zv>1njqbHoS7y|(eAi@^o7y!fJ+*wApe!~OCE+-ly-$9_U2;8bh;DSA?SqS*QYK>=o z6%L{pN?iYCYH+LnAou@ODf@9oTFr(dncj;VF@M1p-*JbSMEpI8_ym}90$gKWQ1PBb zd?C(A>&3RMws!^?&NN+Zgx6?4khH=j=e_5B3 zi5W3Y?8ThtMC>|*dlk*$R`2J;oEL%af@{Nd_C2!9?mAEd*PJh9-!wWc>u}`5KBpfv z${V;w;3$BTH*k#sloR0_xRwBF;M{kOY=bv&SU$0u^HrhmYg%l*)1`h@VqhR!{K&f^AQ$MHrz zle^c@P5F?QcFj7XA-o0OevkycO#h)G>_^3xWW7ZS$AvIyK3rqIU%#c26>l@pjc{%F zhGLz(4SEOY8zgZ{(0U>L0`zN=W?Hw&CZp!A!Y3O|Zrm=Uen1b0Yt9BK-bT$=T-n~h;T2@ZUDRB+$W5z zzn6!*g+>PESqrTyXlIf5(Qu$egZAx#<2#xn@gn5+QXyZ;z6szBA}kUg0r&vU{msZW zC=ytTvc_4V|l!Ul=-z@co9)Wxm?1^8Z}Do)h|H z(XD2)G2mEr=tW(~>l=N(b(Ds1m1*?H^3chu(j~|j+>bKuA~aa)Jb5FixV~7xW?!8r zFJY|#n`4$WmYqdUtaw*8z7zbHhka6X3Cy9a+LzKE3_k-q_%2VgFoTll0-ZLUL`RuC($Pl9E&@ln>@Q1O|Y`z>_Z zufpd-2ri=VU54dJRxk59@$fQmJPL_$SA35v4MdOZgS&M=m|nuu2{`lMFa7jNs9FIh z{q!RMwi01K{S<&F;M_7Jto!Lv?uxDF2T`ps1M|E8pE$FzV7z| zx%V?L+WrpIy+M^%JfrRLZ9gA|4&=7nCeLaQTF&3c5RKFV`wn7X!-ZQI4sNEl4(Hb0 zg9s%L#UaA(vPD!`P2s}FX7f3RXQgx-@ManZcf}^09dnK~{@fTbK>YEhpsf}D%FtO? z5j}2ro1cl^*9dr|9d^4TdXK?pD#AS;&b|-GtpL`*IV%i5+ocCg&~i`wA9jx1oyGZ1 zL(YaRnEPxNC!=EYHEg}C0JmxMdP=7#EGe<9MRwpfntK6!9*1=g)7-g0J^=78T=+Mm znmfM2Q;jei*zh?9VLRt6F$g>Hv!Rhzuo1g9OX8|5`uG>L8QfNXx1sBuCzLwH_;Qo) z^MCL?%lLBJ@P`>+%Ux#ZW@r|6>en?w+$eaXvBl0nmCQx_me`?*J&+7Pfa`0-`b)S- z0Mm+J0Q>~!-fd)gdLUC+!p@fZmk-=Txg!%o0TTC8J36)}w9bQ1ZVo2ZaP|x!Z2+`{ zOOY#bAt?QU^@5A=#N2cMQ{axe7Kj=ys|}N%_Oq=TGJPB;OwHU%d=5CzhRf$xVyUSY z0lNUsJ=F;5nmPi-0%^O)*vJ=d&7mX{8{4bH6@pp5{Tuq?HjrbDLY}(N~p8?=xIN4sA`<%{rtTRx*{=VYp9x=IhQ6xxnB%j!ay zJkJU2f=(I8-UR6zsE(V`w*%Nhgag_A0A7c4&o#mg2D0`%j82?iOj7eC(1%cooRj8S zcRrR=XnGO)d&mX&H~ikmJSf5Hlth(TnAS`-QpWX-W^1O41lU46AaIzGa5B)9q5)fN z?eJxFh}t@EeGKCdFg7cJ{0iV_xX30TUJUEsaFOjmN&&>-Lfqr*YYt_gl+k>%6MquM z*>8cXKiK=i>56cbu|`=}B5^l3Zaytwh7AMH5V-n^Fb3H1aPHL&GR$Pv@sPPS6Spe}kAU(4uvg%uYMlJM&Pu$Z zfq!Gyse+dJs?ju#^?o?18npo0z`3Uxp$1h$iY}{$?`vCop)&0{^Jy4Uw>yNpQX8Au z0RZ|CVYN6Oz$iHP0;Ae*Zc(hP@TVrKELZLchJ%IABok7E$80V)KDM00az&PavK`n)I7yMv9zR7shyUTO(-B(gQ{*@B{Q@T`5=kh_ zgL89?&>vDn8VldowtUEMERJxU)ijc+QwT-*aFRL|08&JlIyC^A!MQ0DjNfR;j$2ke zD}0@ayo@A%%u1ujq2Dh~ZC=!Io2iRa*y-}CA6YBF<50~_0Jil#BEP~8FT=`~Jpeu( z5q^6b)D1{~0KMQ+G^`nB%rera_*O2K(fB5CR zn8oCxKVejjru7-7FSD3hG-UD(!$r}ioY8t+_9SV2EsSGV7TQ5(UMqQ8b5(nkwQ-yf z{{xB(hM{QM{9Aw*Pvxe)gXo= zaVS-9XJks{C506aVU5Z?MGSEG{w`-1Y7GeLPKa4Gyt>Ajxdb2=iVFBe4`*hY(Q0Sa z@UD8NA3Ztm8zi3qVTu7Vp8(MU{UjaQSuxIp4{g)6ev_&EYW4IZVK%3eyHF(`g&Y4a zkmvB~HS!*ScR_g@Zs4athL~;p{)%yD$VLvq;gI>{1RkYa{yUjS4v1y> z$|{BnUz5#`t;wuS@txYZs*H`?)os59ucIN;7ta0w$b0~&!5#SpkY1GRg{jveN9`s% zIqrb(ZE*RNP0=?(-kl(Af|EvnqX`YYKm31ioEDI-Z}go4Whppm^z#7Zz`6Gsp$3gU z8)IqoeP6u%HheL7@%N+Ste|mh^pj9jM9u6Hs{o{lu+eV~pe3BU(}??xK3h3`z$ZM_ zcyVIs++Yw^rY+FViU(`L&l);U;Q{SsP&TSojB8wVkLxtPpZ@r%)!YUtTkHG5fX;B? zA%=$ok??WZ$oOnzdNy)?HnKDuS&@xgpN-s>joh1!Y|BC>K9_~u3S$vhyhRvggYAdqfs<@ zf7eOi8wn?!>0D!-WlaW8+dyD1S`#Td7lY+OI4L`S1F(z;%g*%xu7z_K8)02`xTS$* z2R)ZAqn8+OW%&^7kze~jpbX|nICnwQ2C8Nm-2z}U5r(rHz%DrK;YO=^Q%0K)v54{4 zDiE4SZTEodMey&Xf?I&R3E&Ml_f8{w+Av*kY3N89*|;l>7dtpzrs=f+YMm2|7t8Vn z1VC?iIGeNRyENThamRQpO6|<@dB^uzOP_xlAKoGn7%aLlP9M*4y2vu&s5@@@EM6ti zv>_k;!~Sxwoa~YMwbS&5)shy_ym~g|q<;Myaetrjf5q^aqbpLFtr*{7u6;!p%SIXL zt07&;;|nP8F}_~iX;{1r%R^-0W^}Uf^+|l6)^c2i<)38X3ly^OjqohPf_TYKt^S29 z-10~kzEfWO2bS~@uy8jbS@>3Z`5##Nl7$-u$-?*AYYj`ixzotPJ$z*0oAFJ5&~h1B zxV?@ne7C;y4=fwW!kuqq;k)CP{=o7gS-2^UEPTIz;14Wck%gOT$if{0hyK9QXed~? zrHm}xV}SS7l4SKs*Oe^X?M0UL_>cdAWh_~^5sNI`=#c&c%ObLHj}%$BwW7|jOx0P0 zqVyG5WGj=`2sXeuvkVWH5g&suD+Oom3k;o0d#~5i-PKui@MbUh#kf0Ur>`#)CR>w2 zZpnpNX^wa>DYw%8_jA&`D5M%LeF@0t(W@3&-3%`6e_Chq%pmSMflGe`tGTy2&C%Z_ za8ukH?PgZmzdPJ|z6$lxQr=#)T6L?St-Nml3jzSFcXXm0?4b} zZJ@Xn)%W@J^`iPJzo@>&uf<*9i|UKXqxu%V5O48|v?zQXJ}q|R(NEvv7uC1;g?LkW zWL3#K@Cosz^2l{%0=LcuyjsIM2LQggg64#-!UQt%gwVZ~NQJ629td(J{#uYwEmxOE z+j)<2xX7!^qa8vF9d9a-e9_KfN_fr+q+PU&AaQ3ceYy&gbUuJ!w3{GlhgX+Jy9-j| z+=P6K_7J4j;nn5Qo`Q6Bcy)QSmmqZxuP%?)2{Oy4 zI=s3(dZL(fhZCo^lft(^W|PCK%cJJ%a)(!!M<5 zLPwxT=5|c>hH0S{C>ps#IPS0{^Q-vnop!w8e7QiMBN{6Rq3khy?|w?PK|#w475ogi zy%$S4@u;s{gRGkI!Ebm#+LcAd|-o+tYEjL6aioE$q3g<+m zZz5^RGH-}Xl*FZqI=mq=Q7S&3!y6(KDe=j1E`hQ{T72Tp4Ej`sA49-}4sVD|R0~q% z@P^1llfrMICuvp74UzGay!RO@Z-|UfD0viKmNO#{$V5Rrhc`sVC&kGXcX&f&e6k=( zX9wA)hzV(jH$=v#3ev>k4UzF_!d7GD(fThTF8PWICuz}Epg10P+aC0m48>&YBK!^HT*5)65az@dRGA5r^G}IHiC>qvy3?n6_ z>ug_9TPwsHBJ+nk-9hq};xRy4o`SaOV<5@%5samh`f|vmz8o^CFNaL#(J!9VmqRA? z<&a5zIi!-yA(dPXspN7VLyc;Io=#l^*io;y zL7S{TNuz5}Et_E|tu|pK6H?XHuvWcWg>jfVfDS66=0GZ{er|$lsJ;h(t}4bePsN*} zV5-L|VW}DbIH4v&PriB|`U}*L=xYnr(SRGN6v8S}AH$Mj^(Huz>eyP`V5pWM6inx# zp-gQ+C@J+-WAsic(HxObtzb`MH6HwF^$27u)fmvLR6aCUtL?C}iMkiEP1WU)ZKj-- zSbbAxL#js2hExl6COBKFJ&8Nm>I_Q`Q`dshM!g8xwrT+M)T$sXX{WA6DDBlE z#JYpx!GeyeBj8Tz4#1t&jgal4W`MJ+;?CA?Y7b<)tM38#Q2&C?p6VT>Oiy(Q!tJGa z%;a!&BPd6xA&{+8v%uL~6@cDHB?0$UyWrbT@pF3pl?%%Us0o0NR4*aj2C7S7;Zdpt z@E~;p=Yq_2F@XB53C)kT0z4wH6G95YBy4EgbKr|V^kx=_gFOu^pWZUNR3iw zA{NJ~2Vnp4>PX0rR=**Y#;8+}7bmC6^%+7xNp%6|cr_h5C#b9O zoTwT>!z9%N&&jF-o>No^=|5Ek5wB_L3g|gm{Rr9VswHfgp^iZ)r>LQzpQ_e@|1`zn z^yz8|w9QoW@jOGl0^eEcVerpZ!yr3HJqgO0>IB#`SKR>pXQ^?Z&r|uZ_H5ajIA7&K z&pGN>#QI$2f_|Pl1w0GXSja9^7s8%J>M7_vUmb%`7OR^OuM5;`fG9nXu^ zLg>FlU4yh*qJjwVQq>MTOI3H!FH>(KXD?T0K-(2+F5qRVJz{jF`WkWhn;HuZSE-Rm zrRC~2guX%@1n1w?u?XuQN`e1sbuTnuqwa>a*Q$R&|4QW`mshE7;Ji+~iBPUr^PuMj zbw4z(Rtem!o6Qz z2>1c@KRh?9hhgD^>Q-=WQ9Y5i52=aJuvJ|EOCDC0fFDsS5!N=$%JD8hl>&ZL9R&QC zngOXDY6tAuss07}<7yY^PpJPOM!VD&q{fqK9YWcy+Ti(=dKIBRt!_l@K9$YKpQ+9W z<#Tm4_`gu+BF+D+9tV6#Z3gF;Dvjq?Y6@cawK@u%|5M#j624KFAgpiI4+#A`mBjOV zRRR4!s0dQ*N8Lm=O6IkWqFt2xbCte7H}s3k%PHEj?UZ)3s8!wtWa<&K@O&CwxauI6 zz$&=}wu4*(tK2-lM4sUZUy)McGupHjzT6(=8uEX10OK*r$oi~uT zDwM9yVc!yWc$;hKnkeOyuKw}^<&$w&fBAt(D(>npKM+aBTgh#%gqy@&{pANDHE~ye z`GH95xU0YXK%_SAE{Fd0Vob-ltH1m}W4gv&{pE*&@b4LShu5KuiCXpGJ za4(IZibVPOg$W6_7=QPRq0nhsKmNAEyAlf47P|Zh-%bhijzSmTGr*1;vTZDM^_L$gxv9|AUw)u%n^NwV zDAIeR5Nu7kE0F|yqqo9mXUd(5V)TM2cqZizMSNZqWKYV~Uw)v1ms0MvQ2Me2`fAG6 zUw)v^{*)l1S4Qn%%GF$jq;$XZaw=T?v42vyxb{vxi6yp=?pg7D6mL3tkc_gtcHNp&>MJLRbq9 zI}{w2lr?Dzg#xCeK%q$>w3HW|vb3~sf8X!(%$%8XuN?BepWi>P{kd1?%$YOm^L(FW zo|#Ln3a7b>K1W(Ri3To4s!30Cm2^&nD2)HRP$CmbB8N^A|3~j%o4s6L*!s#F3jI&@ zr0A63%It-$pTy&27x=u8$S*%6^2-m2{_;cpLja=L%M6*J?d#70u)MtWeq{X#?(H;M zXgLBFxQgeW2346Wnwe5;N9t*~*XMI_)q$S@JQWGE+E?Lj2{XvMEKUm0QdX{6hx}k$ca-wiFf<>d;=V3 zC*gDIcQ6bqn6d+R7vLki1KygfW36w*{Vn*c`zz!+D64nx!|l76bRUv#lcdk$_S5*R zdMQ*W*;epf+&zlV99Fu^HKi~F5;>T3uR&URE52s+V7UOFbPsNp<6<#B^O&po08%#M zZaqE?`&DOx7i*f%a_{_Ox5SpJW(ez>%CX<$J zV5sy>crb|^*W#1z$IX6R?8T?y!!A2{8a>2G(I*zs4&LyW%L{YvLhc{AObLCIyOO5E zEb}2exD7=dV40u5&Aqtz3*NjRH=n@8NAPKQ+`UV5(P2f&=o5wz!2*SajTNA`FW+B4 z!8CH0LMk8}|-eFdd`37ksEq zMM(OSM7*>p;)28%^mq>nnt0_TEZ{B@!f#Q?FYxKu$m5O&5=uKPk?q;|!fRj>FF+1+ z@a=o%oQU2o^W$SM{)-a%@!xa;4;Ic!3WNA8+JT$&JbbOg-6{B_XW-@>T%3td!;mZB zD>_<2!IzlELc&?VXkDb&W9&pR8E3^P{ND!AeqXh}0L;t3B}x5#=u!G#$TWsJp38bB zT<%}$n6PO6!i+oKjCq%BYBA8^lNAYz$={GVlx@eOFyOY!L#<{1B%4)J|^hB3tdtt0$;9pMWf*CLYd zqkpZ5rQRqb`~|%IAUE~}Qw^=}sa1;$+d;fKxlvKgG* zWvF8b>v_V}bNtCgxmxh=eV_b=r<(Sp{-`f_7=>crQ$$1jl{QqcUA1w9TK{6P^{??oZ^FqqwT+<7kx4H&V zFDYE`PIm_&mVa8rileys8eabrJ{RiilEyrJ-$&c;Vc!Pb%V)@|?AtA9NqJ}Co(?|# zC0>3CpE5<}J+mp1OZ`|t#;5W` z4!57d2TgpdH1Yem`8y_DS$L~7(ay$hHYCh@zi;B(q=_q#zJwoY0MbNFFLeIGwSw9z zTF0Mdn4($q0+;?`CgWdn_fPO@*C+YBhjYFI#a)C?ncB_NawbjT_C|cVFG8+cMQM94 zZtrK($B^_oN%{ znT-PgReYo~dnIWOZu{_QTo|?RN)+x|*tjZ6-|N!%pylV}TduMeaSoJzd(q6kdRXVL zX5%0FCnbt=vc{i07sLJs48yD22k~qz>R*XZSLsY7&1KSsxE*D)j=GmQpmJuP4qW5U zTsl?OK@`X4ibRlxh{D_OAJMz|9L?GX*WAn4toz(kXtVM!x%;JT){oZWxe(aZsQ+d7 z6fXMi8W79&gbho+gG@_hi{5sj>6WV@qLc0Y4napx)%keHgO;>b}5D1 zLFJttgAkLqA-R4IxDiF9x8i0IZYubsH{xbJE>6a09$#oagp{qgI|rZU_u*y?7Z>s7 zW4O5y7gzJ*xv(KgfJ^F~W=*<4Yrmv%w zpLWlS_n;Xq=ds=Ygs)^S+KqA>zU-dUz67I*dBjNj&IRtla#YyxU3bIUUCo6-8vS+4 zIFNUt#FlYXP`6AJu$F(3NAvisqcBJhf?Y^w16$P6vW~anKx#Q%9?iNR8C&j_^hHGK z!g|Jf77^OXA`Dg1OBn3Q6f$#RP=h`Bl%_2U@7GbDyeKoJy8hz=agfF!`4u(KF^W(?s@U@xbao|UI z2mhM%4@mSvDBVH`eHiKne1t?^ii^v6L*n@)F5ZccP)F}PY}UX>sACH**7Jtc@j_f& z${SM01Gu<{H>8gL#>MaOY5c;Ev|i3n85MJmh_gR+>7m;rxHnw;b)X>?>e9 z<$~--A2!npA9N$`NxzvZbY$;%Pf6L0=gAc=5`fovZ-j16&Bglw}Ev(pxAk&-HgZYpbzj9Rg zL=k^6E8K^J)lT?6@G6L@ki2miuV}8{yPs4_egXV%(6nFqwBIAGQPZCCX(<4@Nz;Dp z(;7B{mo@DlTv{Qqg*D~ktiL(~np<&eq1d~x7j0QsXlmNrWB`VBR-6lnCNZrWnl?7A zZ=$aumD@_9_wM!jbCbQvempH9puV)B>S+Ufla&%*Zk&^>DPNR)`i!QIq_chuOQucO z`-ullL&=stR3mRzk|ljx%gk|F?~Q$Y+&om+(l^|9bt|(pZmeL4TJr5c(_4FT4Q)GB zn%~~SR4o@B;2K9qb!Bl?oiZvYuAH^?(pgbUyUxYh9lP4?O5w<8iw7&_Bx!EXDHu)o zd!igo?9#A2?ah+y`Y5>%Zxs5go3^z)SV=epvoW&19}QdmybWL!YQ}qx&IaF_%gd>x zj}4wTgu#!yI@pmcYArXJd9&v+xgB&+!Bk;{<~u3?)h<{p!?bIO{7gRv~@H3(@5a`3g~S)vSuCa&NJyEdPjbNfaEil0No3{d(y7=6JJ`2w+4_qqH9l# z=ted-o~EVzF#XM*MdG|IdD?CDv}cv}ta3?Pl58z=+}bN>+bWW>r;50+&cMTE-!S1` z$E{sHQCKR zTsn(=npaIz*ohC?j%KG)mu#-oH&yDkI=bR(^RuC1wPaK`SPPW@7nU(wq{l@uad-k; zJOn}}I{3CbZd(#%u3~Qd^e-r10mZNdfwD24VV;-!p1V58Da3mpKPR zO$jrw!c}3&J@mxyu8zTSwt(dtsoM>uvgcaG#YT_oCt}tGNn%PmiIam6lTe|KQ(WCC zpo$XN;Z%>bQUcj&U9QXQ#rj+=@IObqzHuvJAj%X%!=3__Xppigv_QKYw_vlcCZ@41 zT9XlUCL^C#i*~0g+MN;5?##f4SgM`HnU+!Gu%Ar`e2!A->yzlgIWdgj3A=u79{s?! zQWS=UMUA*>9BGVl#yk=!1;Oziksv@tv2i=Qy0v^#9|!Y1VIy3epXY%lFI6wd(4UoF z7!v{ChZ?Wam?)FIbaD0)bk}?v;z7T(TADmJkR8S;2^dsFy)`n*WI91z1O}>W2yX=( zg~maksaFsxWlh511#W9lv~JANiRJUS(M_KGVoGV|FfdmnQmP2&l)ci2s{qrZNQ7X zIbL+l1?D(N<hw~t)8ZwK#C;gOt3vLlXRPdvU4)I=z_5VV}{fGjSU? z`3_Z{E{c+h7dHE}cviMVZLm;gk?%C*16KrD3hxKg&!|PkGZp*J3TSwC;BJUdZ$X@s z7l`M^0udq1zreMJ6aa1OkI>0VT(O3F7dbs>)j1+rJX=TRtbhq zWf37nB_~jvHUi8WYH2HHsJH^RRs`Oa;J$c9^se$&xA$3?0~Z|CH;6W#tcWAJRu=t#(2$nriD)+Qz%;9h)Q+@%m&RTn4umwR8z@_U6r1444_!9ChLV2 z1vjrs0X?2zW_i`7*Uf^=G2F4ZjkrlG=&z>JKW2V+Z@j^c@F*z?%kXRhZXG3M4fW#6-#idmW*)kF7 zLM~qQTJ9B{6;VH$Vm-gcKkI<-gqXqLm-T}W+YFcu?`&YK)yf=e+#8Nq*7`oV`xCPP z_L%LU6HpWT8D;{SDo|8S^Hi_RA*NYXO9eeDBC5^=%hs_Bu_yvkP~%1gMC`?N!8Px@aFW8lm z97Feo-u$~r3Qb{0#=W4A{SuNs>%Elts+{!PthLgwxWvn{M-EX2n{Xq-wbs{k(Y{du@;2q@|Ov@$`#J`AqED(LkZT`O_2t%lwl!?b(jl!{-r zu!oos51hgE=f*>)mJ4Dv7HD@(EtRhogsOY8CmABnU{OXZ)@1>wK7~a@Tk9g;>?-CJ z^ z>T?Y_lt3(qhlQq03v2c&Q;X_%lp7+jfqdDLc;@J+$m(mA1&G-QC=ks?XP_Jo+wp*) zx+n4Uz@g+(BC^hU*bQf$%~B4}yh*}a63mj>Sbbq4HdIQ23;ngMFgx(TfO3Vm_h?zn z18_7oVP?YGqzhks5GF34LZ3o}xSAO|l0z&0w*=kJ3)rI2|B@XJYko<_ZhSV3>0 zifPyZ?zs?*@je z1gF$JPbLT;HjY0P__K7R+QY03!tybqr-)c@f%ISllGtbDFoS8+!LM zGt9E8RynUsSmTLdTzj`NSfVHJZPIAucn)fLjlbD>WW%y@Ziz?TzH4e((|cwEYtkp1 zK43|zGyg^0Cy9j8hQS3dRY@uGCchSSEGB*`${27c*BXhkK6 z2CaENEoLk%{5Xoze5b`T;$nPG&uG?3(=(VUcE6rU-a`ai_Oi@M=Eglc_Rc=1T4tP+ zml+@V1!WLKg{+22S`;mU8kRw? z8&9pgJurYLNRO(tRA*i?^23<r}Nc#{{B;WkckolXnlz50jA-HPyl+uQUMB zW62ZEa+*yY=AOe-%ENbq7Y&U%i9yDor!{2N;(ONWN2$%De7g>;kMOS|yf`pAo4L48 z!3TdFk)(3Q4I#t~k+wPp9!{Sdl^X4QbWu6urG{j>}`j*QBuz2N-P*Nxsut* zqM6`i2d@WisML$yNy{)ATXbbXHEc2x42|mxL1ow~76KDPu=V1|b)h0B8zV1qnBXO^ z+b2Q4Jc?&?bZ5r$%tDezuke)1c(7~%OM?ld<*`5=!iY*7@~W(fRibEheyGvmpnChP zO_!-#;ka>Oe$b$9I`BQo7weK#ES_8o0E|39@NOImCf!`8Fo5IMyso){X8uNG&-6h= zcL`lZK5shWv*#+)HfOYlks+LIfdv)4a$3glIZQmA#Nh|nn?Ps8d1EnmW|lkCX(4HZ zQ8Pc(*{*FeK?wVjAbbCfOd{vSoX-Tz(HhEMd|iH+~YL?FC432Q(X`^ZBn_s-($mU zVz76cXRsa9)Et>rebkw)?q;DAI@u^C3!aF?e8sYNgOMzAVYL+Xm>eu*hPm8;CB_O` zvp{EgVJ!qK3Ov48xqeBQM%gnZY$!!5OE0Tt`{go}4qizu+*neD1Hos3l9u#kzK-Cw zkaV3}I4qQf=%vUCa=b^(3~4#Y6h3o`P|izE1o4^#e*N0Z9a4HUjv*j1VrQp6AhcY` z8HaZI?TFEWQp}}T&JQEV`Eb4jPTS1k{t6=h2cd{DvV<**(Z)hDDJCMn84KpEr|7Z_ zA_!36(2cA({hZ_2ul&zQzPdj^9#P_`c*$)L2y$2>1AI*g4anN=1)Q_!f@8q}meN9% zy6OEDs&M*ZT@y04l3qba5$N`rqQFLRzWOHgi1&7in?`u?;nhw#316gDryDjjeE_<4^(Dw_OGl3 zfD@GKhXM|)Qk8WzMgAHeq`0=$B*?8gDKX9hyAoZqG*e#=UNUU<~ z5zt1>+iWJXrSZJ)${V=wG|#FM-a<13r>JPma8=|IQu^Zofj6#N<!$$jOWROmp%I z$Xo#m3@G+DQO(HABJ1CClB<#vr+8sLT2a6f8TFMsV#f<*RhA46fAC^%LuHvDR_)@1 z*H{?+SW`H6$jIObWjd^)tViPPV1KO;vZz!vMRt)^tL~)2nFW2WQxd795hSZsUs;p4 zzOVv;$}^??L`Q+g!N-%lV#Y9~sCO96Q+$8puAQoh!DFJpqww0{9k1&-uF?uoSSXLM zY1Fqw!kXG++hn7!s`61Mm4>rjrEtPYSs8-oEdq_imWP4xHF6S(m30yrh~AtQsVk?~ z0=$o33IKmr;AF&0$}~GpQWSpe92ep}FzZTm9I9IF`^ws%MH6wTv!gPq0qc0j3V4Wb$t=X+3JqGcYONWP zhwU`gTI06dmw#YK{l=xvB})9v6_Im+r!u`LqBbCGfLQup?Q7yk{U&h3h!>f~slQ02y&e z*fb*|Bo|(~G!XyHTOae%iYA;Y9~C%=6c$!`aUtOm)fniPRirE0=vbS{d|;U#P!a75 z5ve*ImDlMmK%EdD{3PgCTN)!)Yh)AkQJGm867uOuT6lo;nS5XY7jaHI&l*`5!{hpD z+}n^7&&ciro}^YCDFi*$f|^HrkzbJsyg8pa9yA4eC-59?0PQ^tYT&}@aRNg!&+rQE znGOwgJak~g0*tqoRRly(4?Q!Zz9>!C}yi-hv=Lg+=l z4?|3htX502A;WX;B&Wx|27qRH+KpkL*8_1rA{{zvhW7CWov@2-wt~b!6#&ht(t*{1 zHCMrcGvPg9^VA~&Clk4>=v6y}a>cR zt*8<2)QJJ)L@HA!<&~+Et3idU!5IfChG4gj@Rc$z`o1os296Pq$8d6Oz4SE?5`HI7 zOijTa7Gm`LtMT-i=&M4h;5Van%qBWbi<`2eTln$wVLsx)cL!vlaG+8Ur8zAo=En#a zx*}i*h~S-Ykx3hQ;li*}M20222pBvJG<$?No_pC7T3E=78>-8)H4>=PbFogEB5v73 zOjkC6p8fcde<}As(D-qYK*hBGEWw5EhsYFm#3kf(Fp(&HRn%c z8xU1(MJ=<20F9YW`B2?p7~Nbv$J%NRK2e4$5^!9Et77S#J1mAmiHY;v zu5*PoxtWB=x_n|D^+Iq+j>B~;O~&CH$phK)QI7qoGx1o4tlduM*qps0Q6YIw$1kID zqoHLVWa9zb4rdrPEUr# zi{_vWWJL+q26uLc#|50F!#>S$nvT~;s#oTPv@&6)*w7oGsrt|sO2^qX&2T;<{6L%^ z^9_|%LhNui!L|^3$<_gDjEh*B;OMfTYp_9Bf9G?y0mrZaRFIZigAcAEujXtINq)ru zt|w_JTB1t`=gaJ5KnaIau!G|Ea8bS*A}@+F2me%9otOUl)?5G~2|NhI3T``& z>~p6b`Ilpr$*;sqv$FZ{`jFSBGVi@s;g|Go}q|X8`V-~8avnW!g zvh8e{cgx2IEvcEV3JzJ$Jo`>@#F}DWdM^*qLJ}vmtOz>NN`;maXu}L;?2od@daDA_ z;b-XdY3>-pH6kwD{JCQY18B;i#%!g~nKxvBo6HhUe3a7iXBM3j_dGL;PW8YIH$L^x zXHbr^RknE1P*fhFqja|rEqatL%3Nx&D_k^L{P+?1ajHL2bpXaqdvggfNP09{)$qqB^ zc_Tw`+$-L?obRD_L0}%TPLNr2u{eVvAtTM}{U$T8!_r7u&!XqmwscDo z-g%N$q-358+rdJf47KD@sLFJws4#X0p5HvCMCaV)q+3kRN*WDLi3bmO@utM=kM(xd zBa94KSt!j&&w(ML<1;dXC45BZXv*1|vNrEQSFo)5xMNQiZF$l}BLWTAXvtyi!rK6T zS7*j+G2Vp(ICU_%`BM4Bxd_8PgjuS8_bP++c?lR|X3&;sryYb^Etd=gn3xkYh3@%u z!Dk%r;PEGo$LAZX!*DPn$Z-0fZsg{2bzo81m5MR*E`VBD6NjHEk1bIiTk3g9!_DMy zTN2yyz(^{Ebp2WAq-OCsQ!j&yFDJ@}I1U~#z1>~4Lz_N_)lO3s28^drjRMajs?n?^ z?YJdF?Ebss{!2RnfNf%7c&{5>P+=1_&Uw)O3F@6lz=Q3Bh^{mnRviue}fy`aPWPg z>}+f545DCG7-=7I-djtNeL?%_S5kyG9qM5<-7z9QQyi$?R@vKB?)*u5Zj=?eWA=e# zPO+CUoS8}Cw8A)o2zI~5fMiuVX%0z}2j5&gyaW7ay=WXs+B8qDUK#~j3Pf46kv>nP z(RO-|rcPmM(Jf&i7|5e`-h+cJl4|311dWr_-^ra!*{>qxE&8r_Ls56w5$25uFQK1d z<0H69+UZ7`OD%yD#B$L4%G$`#rx{UWeyUsM&$lD-1ax~?d1=+U^Kf7lMfa_(u23w~E}+&8ZN zW-F6!5>NKdu2X^wLESB`aad=mCj7Xb^)kI4@G$`h{mJv6Kc*-`{@NoiRPEmq0O{F4 zf5e=?ed(I$_0W}sNI(+x%mY0s;JhavAUj#6X(sY)_S%kL3^|S*sXg&Rh&Y^#nkyV@ zB-LX>4?ticHzj3Hsj-nVvz{M~sho1LUt%a{sVeU|IcmHk=lp4@(Qlf}AS7nzA!b0u zlt1jEN*|K$2ap%_zyl?tiCtfLa`Ll1V1TkF7y?4+DmIQ|2F#$qg#As9QM3RbPAtTm zx1i&5uRVj*{?LgBXUcacScW292b*UVrQ=PrsEnkYEeb^HO?;TA3hfKo^?u6*_6DHK1L>+Iz4Ybc)d;$B3N0>Q|ho$GJy zLBT@c466?T3mR50Bd5hv&xuJx7fak06~?1Lw^727Rl$MEeu%EB7u>SO!T^XHa4s>8 z^+n2nizC*LZQrVOis+|Mr0MRQJwNCy5XP_0yQdxp5*qO&;1R}WhHZYX=W^y0x=zU! z$$O+^kxtd?xeRrRC=OZIsEl9hm5~#@yTIEDmDape&#fT(RjX4_5?2fJ-HOR_oo8wl zUzuWq7dLPw0-9!RPUoSy(&}QK7JQjx;duH9R*XFX@>Jz~7q7iN23yeHS=m z%SN*|1ITU5XpcFtkPx?w75EstTr)X z$n=8Un}E5zR0Sfajr4&$crgO>CdZpVCsqZQmKoDs2Tp=m7aZv#l zy}?!mg0tf8$d2ax;wE>f$DRoxtKbfCgRB$+kfY#$1s5+Q=26Y*A{q;mS%b1)e_>RfHWMg>?}K13q1awnFAK_w5teqRUR$LCHnn( zRVWrq{wlyc?*8VOl;co^6SC-axcz*4e4%o{N5H?FhYdcIyrK->iHe1_AZ6JneWF)m zPa>jutP`}-8e(SC12keNJ5}W)z>a)MsLP|RKwU7Z!^Sx|Cc}r0Xq2z+ZKl@=VnWU^ z(ap_qeVaY1!qJ}}iMXBIGZeK$r;Rb2k<`${GX$S10csJyNiz&a?peWr&7YK!K@$S@ zYk?U*&dq?P3toq2v9tYe@eFBda?%&6*8mxo;IfjdKvCTQ+0eN)EfneQmz{}#5cl|{R z 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, et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_POLL +# include +#endif/*HAVE_POLL*/ + +#ifdef HAVE_UNISTD_H +# include +#endif/*HAVE_UNISTD_H*/ + +#ifdef HAVE_ARPA_INET_H +# include +#endif/*HAVE_ARPA_INET_H*/ + +#ifdef HAVE_SYS_SOCKET_H +# include +#endif/*HAVE_SYS_SOCKET_H*/ + +#ifdef HAVE_NETINET_IN_H +# include +#endif/*HAVE_NETINET_IN_H*/ + +#ifdef HAVE_NETDB_H +# include +#endif/*HAVE_NETDB_H*/ + +#ifdef HAVE_SSL +# include +#endif/*HAVE_SSL*/ + +#define MAX_PORT_NO 65535 + +/** + * local prototypes + */ +private int __socket_block(int socket, BOOLEAN block); +private ssize_t __socket_write(int sock, const void *vbuf, size_t len); +private BOOLEAN __socket_check(CONN *C, SDSET mode); +private BOOLEAN __socket_select(CONN *C, SDSET mode); +private int __socket_create(CONN *C, int domain); +private void __hostname_strip(char *hn, int len); +#ifdef HAVE_POLL +private BOOLEAN __socket_poll(CONN *C, SDSET mode); +#endif/*HAVE_POLL*/ +#ifdef HAVE_SSL +private ssize_t __ssl_socket_write(CONN *C, const void *vbuf, size_t len); +#endif/*HAVE_SSL*/ + +/** + * new_socket + * returns int, socket handle + */ +int +new_socket(CONN *C, const char *hostparam, int portparam) +{ + int conn; + int res; + int addrlen; + struct sockaddr *s_addr; + char hn[512]; + int port; + int domain; +#if defined(__GLIBC__) + char port_str[10]; + struct addrinfo hints; + struct addrinfo *addr_res; + struct addrinfo *r; +#else + struct sockaddr_in cli; + struct hostent *hp; + int herrno; +#endif +#if defined(sun) +# ifndef HAVE_GETIPNODEBYNAME + struct hostent hent; + char hbf[8192]; +# endif/*HAVE_GETIPNODEBYNAME*/ +#elif defined(_AIX) + char *aixbuf; + int rc; +#endif/*_AIX*/ + + if (hostparam == NULL) { + NOTIFY(ERROR, "Unable to resolve host %s:%d", __FILE__, __LINE__); + return -1; + } + + C->encrypt = (C->scheme == HTTPS) ? TRUE: FALSE; + C->state = UNDEF; + C->ftp.pasv = TRUE; + C->ftp.size = 0; + + memset(hn, '\0', sizeof hn); + + /* if we are using a proxy, then we make a socket + connection to that server rather then a httpd */ + if (auth_get_proxy_required(my.auth)) { + snprintf(hn, sizeof(hn), "%s", auth_get_proxy_host(my.auth)); + port = auth_get_proxy_port(my.auth); + } else { + snprintf(hn, sizeof(hn), "%s", hostparam); + port = portparam; + } + __hostname_strip(hn, 512); + + /* sanity check */ + if (port < 1 || port > MAX_PORT_NO) { + NOTIFY(ERROR, "invalid port number %d in %s:%d", port, __FILE__, __LINE__); + return -1; + } + +#if defined(__GLIBC__) + { + snprintf(port_str, sizeof(port_str), "%d", port); + + /* hints for address lookup */ + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family=AF_UNSPEC; + hints.ai_socktype=SOCK_STREAM; + hints.ai_protocol=IPPROTO_TCP; + + res = getaddrinfo(hn, port_str, &hints, &addr_res); + if (res != 0) { + NOTIFY(ERROR, "Address resolution failed at %s:%d with the following error:", __FILE__, __LINE__); + NOTIFY(ERROR, "%s: %s", gai_strerror(res), hn); + return -1; + } + s_addr = addr_res->ai_addr; + addrlen = addr_res->ai_addrlen; + domain = addr_res->ai_family; + } +#elif defined(sun) +# ifdef HAVE_GETIPNODEBYNAME + hp = getipnodebyname(hn, AF_INET, 0, &herrno); +# else /* default use gethostbyname_r*/ + { + memset(hbf, '\0', sizeof hbf); + hp = gethostbyname_r(hn, &hent, hbf, sizeof(hbf), &herrno); + } +# endif/*HAVE_GETIPNODEBYNAME*/ +#elif defined(_AIX) + aixbuf = (char*)xmalloc(8192); + rc = gethostbyname_r(hn, (struct hostent *)aixbuf, + (struct hostent_data *)(aixbuf + sizeof(struct hostent))); + hp = (struct hostent*)aixbuf; +#elif (defined(hpux) || defined(__hpux) || defined(__osf__)) + hp = gethostbyname(hn); + herrno = h_errno; +#else + /** + * Let's just hope gethostbyname is tread-safe + */ + hp = gethostbyname(hn); + herrno = h_errno; +#endif/*OS SPECIFICS*/ + +#if !defined(__GLIBC__) + /* gethostbyname only offers IPv4 support */ + domain = AF_INET; + + /** + * If hp is NULL, then we did not get good information + * from the name server. Let's notify the user and bail + */ + if (hp == NULL) { + switch(herrno) { + case HOST_NOT_FOUND: { NOTIFY(ERROR, "Host not found: %s\n", hostparam); break; } + case NO_ADDRESS: { NOTIFY(ERROR, "Host does not have an IP address: %s\n", hostparam); break; } + case NO_RECOVERY: { NOTIFY(ERROR, "A non-recoverable resolution error for %s\n", hostparam); break; } + case TRY_AGAIN: { NOTIFY(ERROR, "A temporary resolution error for %s\n", hostparam); break; } + default: { NOTIFY(ERROR, "Unknown error code from gethostbyname for %s\n", hostparam); break; } + } + return -1; + } + + memset((void*) &cli, 0, sizeof(cli)); + memcpy(&cli.sin_addr, hp->h_addr, hp->h_length); +#if defined(sun) +# ifdef HAVE_FREEHOSTENT + freehostent(hp); +# endif/*HAVE_FREEHOSTENT*/ +#endif + cli.sin_family = AF_INET; + cli.sin_port = htons(port); + + s_addr = (struct sockaddr *)&cli; + addrlen = sizeof(struct sockaddr_in); +#endif /* end of __GLIBC__ not defined */ + + /* create a socket, return -1 on failure */ + if (__socket_create(C, domain) < 0) { + return -1; + } + + /** + * connect to the host + * evaluate the server response and check for + * readability/writeability of the socket.... + */ + conn = connect(C->sock, s_addr, addrlen); + pthread_testcancel(); +#if defined(__GLIBC__) + /** + * The result of getaddrinfo is a linked list. Attempt + * to connect to each result until successful + */ + if (conn < 0 && errno != EINPROGRESS) { + addr_res = addr_res->ai_next; + for (r = addr_res; r; r = r->ai_next) { + /* close previously opened socket */ + socket_close(C); + + /* create a socket, return -1 on failure */ + if (__socket_create(C, domain) < 0) { + return -1; + } + + conn = connect(C->sock, s_addr, addrlen); + pthread_testcancel(); + if (conn == 0) { + break; + } + } + } +#endif + if (conn < 0 && errno != EINPROGRESS) { + switch (errno) { + case EACCES: {NOTIFY(ERROR, "socket: %d EACCES", pthread_self()); break;} + case EADDRNOTAVAIL: {NOTIFY(ERROR, "socket: %d address is unavailable.", pthread_self()); break;} + case ETIMEDOUT: {NOTIFY(ERROR, "socket: %d connection timed out.", pthread_self()); break;} + case ECONNREFUSED: {NOTIFY(ERROR, "socket: %d connection refused.", pthread_self()); break;} + case ENETUNREACH: {NOTIFY(ERROR, "socket: %d network is unreachable.", pthread_self()); break;} + case EISCONN: {NOTIFY(ERROR, "socket: %d already connected.", pthread_self()); break;} + default: {NOTIFY(ERROR, "socket: %d unknown network error.", pthread_self()); break;} + } socket_close(C); return -1; + } else { + if (__socket_check(C, READ) == FALSE) { + pthread_testcancel(); + NOTIFY(WARNING, "socket: read check timed out(%d) %s:%d", my.timeout, __FILE__, __LINE__); + socket_close(C); + return -1; + } else { + /** + * If we reconnect and receive EISCONN, then we have a successful connection + */ + res = connect(C->sock, s_addr, addrlen); + if((res < 0)&&(errno != EISCONN)){ + NOTIFY(ERROR, "socket: unable to connect %s:%d", __FILE__, __LINE__); + socket_close(C); + return -1; + } + C->status = S_READING; + } + } /* end of connect conditional */ + + if ((__socket_block(C->sock, TRUE)) < 0) { + NOTIFY(ERROR, "socket: unable to set socket to non-blocking %s:%d", __FILE__, __LINE__); + return -1; + } + + C->connection.status = 1; + return(C->sock); +} + +/** + * Conditionally determines whether or not a socket is ready. + * This function calls __socket_poll if HAVE_POLL is defined in + * config.h, else it uses __socket_select + */ +private BOOLEAN +__socket_check(CONN *C, SDSET mode) +{ +#ifdef HAVE_POLL + if (C->sock >= FD_SETSIZE) { + return __socket_poll(C, mode); + } else { + return __socket_select(C, mode); + } +#else + return __socket_select(C, mode); +#endif/*HAVE_POLL*/ +} + +#ifdef HAVE_POLL +private BOOLEAN +__socket_poll(CONN *C, SDSET mode) +{ + int res; + int timo = (my.timeout) ? my.timeout * 1000 : 15000; + __socket_block(C->sock, FALSE); + + C->pfd[0].fd = C->sock + 1; + C->pfd[0].events |= POLLIN; + + do { + res = poll(C->pfd, 1, timo); + pthread_testcancel(); + if (res < 0) puts("LESS THAN ZERO!"); + } while (res < 0); // && errno == EINTR); + + if (res == 0) { + errno = ETIMEDOUT; + } + + if (res <= 0) { + C->state = UNDEF; + NOTIFY(WARNING, + "socket: polled(%d) and discovered it's not ready %s:%d", + (my.timeout)?my.timeout:15, __FILE__, __LINE__ + ); + return FALSE; + } else { + C->state = mode; + return TRUE; + } +} +#endif/*HAVE_POLL*/ + +private BOOLEAN +__socket_select(CONN *C, SDSET mode) +{ + struct timeval timeout; + int res; + fd_set rs; + fd_set ws; + memset((void *)&timeout, '\0', sizeof(struct timeval)); + timeout.tv_sec = (my.timeout > 0)?my.timeout:30; + timeout.tv_usec = 0; + + if ((C->sock < 0) || (C->sock >= FD_SETSIZE)) { + // FD_SET can't handle it + return FALSE; + } + + do { + FD_ZERO(&rs); + FD_ZERO(&ws); + FD_SET(C->sock, &rs); + FD_SET(C->sock, &ws); + res = select(C->sock+1, &rs, &ws, NULL, &timeout); + pthread_testcancel(); + } while (res < 0 && errno == EINTR); + + if (res == 0) { + errno = ETIMEDOUT; + } + + if (res <= 0) { + C->state = UNDEF; + NOTIFY(WARNING, "socket: select and discovered it's not ready %s:%d", __FILE__, __LINE__); + return FALSE; + } else { + C->state = mode; + return TRUE; + } +} + +/** + * Create new socket and set socket options. + * Handle possible error codes. + */ +private int +__socket_create(CONN *C, int domain) +{ + if ((C->sock = socket(domain, SOCK_STREAM, 0)) < 0) { + switch (errno) { + case EPROTONOSUPPORT: { NOTIFY(ERROR, "unsupported protocol %s:%d", __FILE__, __LINE__); break; } + case EMFILE: { NOTIFY(ERROR, "descriptor table full %s:%d", __FILE__, __LINE__); break; } + case ENFILE: { NOTIFY(ERROR, "file table full %s:%d", __FILE__, __LINE__); break; } + case EACCES: { NOTIFY(ERROR, "permission denied %s:%d", __FILE__, __LINE__); break; } + case ENOBUFS: { NOTIFY(ERROR, "insufficient buffer %s:%d", __FILE__, __LINE__); break; } + default: { NOTIFY(ERROR, "unknown socket error %s:%d", __FILE__, __LINE__); break; } + } socket_close(C); return -1; + } + if (fcntl(C->sock, F_SETFD, O_NDELAY) < 0) { + NOTIFY(ERROR, "unable to set close control %s:%d", __FILE__, __LINE__); + } + + if (C->connection.keepalive) { + int opt = 1; + if (setsockopt(C->sock,SOL_SOCKET,SO_KEEPALIVE,(char *)&opt,sizeof(opt))<0) { + switch (errno) { + case EBADF: { NOTIFY(ERROR, "invalid descriptor %s:%d", __FILE__, __LINE__); break; } + case ENOTSOCK: { NOTIFY(ERROR, "not a socket %s:%d", __FILE__, __LINE__); break; } + case ENOPROTOOPT: { NOTIFY(ERROR, "not a protocol option %s:%d", __FILE__, __LINE__); break; } + case EFAULT: { NOTIFY(ERROR, "setsockopt unknown %s:%d", __FILE__, __LINE__); break; } + default: { NOTIFY(ERROR, "unknown sockopt error %s:%d", __FILE__, __LINE__); break; } + } socket_close(C); return -1; + } + } + + if ((__socket_block(C->sock, FALSE)) < 0) { + NOTIFY(ERROR, "socket: unable to set socket to non-blocking %s:%d", __FILE__, __LINE__); + return -1; + } + + return 0; +} + +/** + * remove square bracket + * around IPv6 addresses + */ +private void +__hostname_strip(char *hn, int len) +{ + int i; + + if (startswith("[", hn)) { + memmove(hn, hn + 1, len - 1); + + /* skip to matching square bracket */ + for (i = 0; hn[i] && hn[i] != ']'; i++); + + if (hn[i] == ']') { + memmove(hn + i, hn + i + 1, len - i - 1); + } + } +} + +/** + * local function + * set socket to non-blocking + */ +private int +__socket_block(int sock, BOOLEAN block) +{ +#if HAVE_FCNTL_H + int flags; + int retval; +#elif defined(FIONBIO) + ioctl_t status; +#else + return sock; +#endif +// return sock; + if (sock==-1) { + return sock; + } + +#if HAVE_FCNTL_H + if ((flags = fcntl(sock, F_GETFL, 0)) < 0) { + switch (errno) { + case EACCES: { NOTIFY(ERROR, "EACCES %s:%d", __FILE__, __LINE__); break; } + case EBADF: { NOTIFY(ERROR, "bad file descriptor %s:%d", __FILE__, __LINE__); break; } + case EAGAIN: { NOTIFY(ERROR, "address is unavailable %s:%d", __FILE__, __LINE__); break; } + default: { NOTIFY(ERROR, "unknown network error %s:%d", __FILE__, __LINE__); break; } + } return -1; + } + + if (block) { + flags &= ~O_NDELAY; + } else { + flags |= O_NDELAY; + #if (defined(hpux) || defined(__hpux) || defined(__osf__)) || defined(__sun) + #else + flags |= O_NONBLOCK; + #endif + } + + if ((retval = fcntl(sock, F_SETFL, flags)) < 0) { + NOTIFY(ERROR, "unable to set fcntl flags %s:%d", __FILE__, __LINE__); + return -1; + } + return retval; + +#elif defined(FIONBIO) + status = block ? 0 : 1; + return ioctl(sock, FIONBIO, &status); +#endif +} + +/** + * returns ssize_t + * writes vbuf to sock + */ +private ssize_t +__socket_write(int sock, const void *vbuf, size_t len) +{ + size_t n; + ssize_t w; + const char *buf; + + buf = vbuf; + n = len; + while (n > 0) { + if ((w = write( sock, buf, n)) <= 0) { + if (errno == EINTR) { + w = 0; + } else { + return -1; + } + } + n -= w; + buf += w; + } + return len; +} + +/** + * local function + * returns ssize_t + * writes vbuf to sock + */ +#ifdef HAVE_SSL +private ssize_t +__ssl_socket_write(CONN *C, const void *vbuf, size_t len) +{ + size_t n; + ssize_t w; + const char *buf; + int err; + + buf = vbuf; + n = len; + + while (n > 0) { + if ((w = SSL_write(C->ssl, buf, n)) <= 0) { + if (w < 0) { + err = SSL_get_error(C->ssl, w); + + switch (err) { + case SSL_ERROR_WANT_READ: + case SSL_ERROR_WANT_WRITE: + NOTIFY(DEBUG, "SSL_write non-critical error %d", err); + return 0; + case SSL_ERROR_SYSCALL: + NOTIFY(ERROR, "SSL_write() failed (syscall)"); + return -1; + case SSL_ERROR_SSL: + return -1; + } + } + NOTIFY(ERROR, "SSL_write() failed."); + return -1; + } + n -= w; + buf += w; + } + return len; +} +#endif/*HAVE_SSL*/ + +ssize_t +socket_read(CONN *C, void *vbuf, size_t len) +{ + int type; + size_t n; + ssize_t r; + char *buf; + int ret_eof = 0; + + pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &type); + + buf = vbuf; + n = len; + if (C->encrypt == TRUE) { + #ifdef HAVE_SSL + while (n > 0) { + if (__socket_check(C, READ) == FALSE) { + NOTIFY(WARNING, "socket: read check timed out(%d) %s:%d", (my.timeout)?my.timeout:15, __FILE__, __LINE__); + return -1; + } + r = SSL_read(C->ssl, buf, n); + if (r < 0) { + if (errno == EINTR || SSL_get_error(C->ssl, r) == SSL_ERROR_WANT_READ) + r = 0; + else + return -1; + } + else if (r == 0) break; + n -= r; + buf += r; + } /* end of while */ + #endif/*HAVE_SSL*/ + } else { + while (n > 0) { + if (C->inbuffer < len) { + if (__socket_check(C, READ) == FALSE) { + NOTIFY(WARNING, "socket: read check timed out(%d) %s:%d", (my.timeout)?my.timeout:15, __FILE__, __LINE__); + return -1; + } + } + if (C->inbuffer < n) { + int lidos; + memmove(C->buffer,&C->buffer[C->pos_ini],C->inbuffer); + C->pos_ini = 0; + if (__socket_check(C, READ) == FALSE) { + NOTIFY(WARNING, "socket: read check timed out(%d) %s:%d", (my.timeout)?my.timeout:15, __FILE__, __LINE__); + return -1; + } + lidos = read(C->sock, &C->buffer[C->inbuffer], sizeof(C->buffer)-C->inbuffer); + if (lidos == 0) + ret_eof = 1; + if (lidos < 0) { + if (errno==EINTR || errno==EAGAIN) + lidos = 0; + if (errno==EPIPE){ + return 0; + } else { + NOTIFY(ERROR, "socket: read error %s %s:%d", strerror(errno), __FILE__, __LINE__); + return 0; /* was return -1 */ + } + } + C->inbuffer += lidos; + } + if (C->inbuffer >= n) { + r = n; + } else { + r = C->inbuffer; + } + if (r == 0) break; + memmove(buf,&C->buffer[C->pos_ini],r); + C->pos_ini += r; + C->inbuffer -= r; + n -= r; + buf += r; + if (ret_eof) break; + } /* end of while */ + } /* end of else */ + + pthread_setcanceltype(type,NULL); + pthread_testcancel(); + return (len - n); +} +/** + * this function is used for chunked + * encoding transfers to acquire the + * size of the message check. + */ +ssize_t +socket_readline(CONN *C, char *ptr, size_t maxlen) +{ + int type; + int n, len, res; + char c; + + len = maxlen; + pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &type); + + for (n = 1; n < len; n ++) { + if ((res = socket_read(C, &c, 1)) == 1) { + *ptr++ = c; + if (c=='\n') break; + } + else if (res == 0) { + if (n == 1) + return 0; + else + break; + } else { + return -1; /* something bad happened */ + } + } /* end of for loop */ + + *ptr=0; + + pthread_setcanceltype(type,NULL); + pthread_testcancel(); + + return n; +} + +/** + * returns void + * socket_write wrapper function. + */ +int +socket_write(CONN *C, const void *buf, size_t len) +{ + int type; + size_t bytes; + + pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &type); + + if (C->encrypt == TRUE) { + /* handle HTTPS protocol */ + #ifdef HAVE_SSL + /** + * Yeah, sure, this looks like a potential + * endless loop, (see: Loop, endless), but + * a socket timeout will break it... + */ + do { + if ((bytes = __ssl_socket_write(C, buf, len)) != len) { + if (bytes == 0) + ; + else + return -1; + } + } while (bytes == 0); + #else + NOTIFY(ERROR, "%s:%d protocol NOT supported", __FILE__, __LINE__); + return -1; + #endif/*HAVE_SSL*/ + } else { + /* assume HTTP */ + if ((bytes = __socket_write(C->sock, buf, len)) != len) { + NOTIFY(ERROR, "unable to write to socket %s:%d", __FILE__, __LINE__); + return -1; + } + } + + pthread_setcanceltype(type,NULL); + pthread_testcancel(); + + return bytes; +} + +/** + * returns void + * frees ssl resources if using ssl and + * closes the connection and the socket. + */ +void +socket_close(CONN *C) +{ + int type; + int ret = 0; +#ifdef HAVE_SSL + int tries = 0; +#endif/*HAVE_SSL*/ + if (C==NULL) return; + + /* XXX Is this necessary? */ + pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &type); + + if (C->encrypt == TRUE) { +#ifdef HAVE_SSL + if (!C->connection.reuse || C->connection.max == 1){ + if (C->ssl != NULL) { + do { + ret = SSL_get_shutdown(C->ssl); + if (ret < 0) { + NOTIFY(WARNING, "socket: SSL Socket closed by server: %s:%d", __FILE__, __LINE__); + break; //what an asshole; is this IIS? + } + + ret = SSL_shutdown(C->ssl); + if (ret == 1) { + break; + } + tries++; + } while(tries < 5); + } + SSL_free(C->ssl); + C->ssl = NULL; + SSL_CTX_free(C->ctx); + C->ctx = NULL; + close(C->sock); + C->sock = -1; + C->connection.status = 0; + C->connection.max = 0; + C->connection.tested = 0; + } +#endif/*HAVE_SSL*/ + } else { + if (C->connection.reuse == 0 || C->connection.max == 1) { + if (C->sock != -1) { + if ((__socket_block(C->sock, FALSE)) < 0) + NOTIFY(ERROR, "unable to set to non-blocking %s:%d", __FILE__, __LINE__); + if ((C->connection.status > 1)&&(ret = shutdown(C->sock, 2)) < 0) + NOTIFY(ERROR, "unable to shutdown the socket %s:%d", __FILE__, __LINE__); + if ((ret = close(C->sock)) < 0) + NOTIFY(ERROR, "unable to close the socket %s:%d", __FILE__, __LINE__); + } + C->sock = -1; + C->connection.status = 0; + C->connection.max = 0; + C->connection.tested = 0; + } + } + C = NULL; + pthread_setcanceltype(type,NULL); + pthread_testcancel(); + + return; +} + + diff --git a/siege-4.1.6/src/sock.h b/siege-4.1.6/src/sock.h new file mode 100644 index 0000000..4a6c055 --- /dev/null +++ b/siege-4.1.6/src/sock.h @@ -0,0 +1,142 @@ +/** + * SIEGE socket header file + * + * Copyright (C) 2000-2016 by + * by Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#ifndef SOCK_H +#define SOCK_H + +#ifdef HAVE_NETINET_IN_H +# include +#endif/*HAVE_NETINET_IN_H*/ + +#ifdef HAVE_ARPA_INET_H +# include +#endif/*HAVE_ARPA_INET_H*/ + +#ifdef HAVE_SYS_SOCKET_H +# include +#endif/*HAVE_SYS_SOCKET_H*/ + +#ifdef HAVE_NETDB_H +# include +#endif/*HAVE_NETDB_H*/ + +#ifdef HAVE_POLL +# include +#endif/*HAVE_POLL*/ + +#ifdef HAVE_SSL +# include +# include +# include +# include +# include +# include +#endif/*HAVE_SSL*/ + +#include +#include +#include +#include + +typedef enum +{ + S_CONNECTING = 1, + S_READING = 2, + S_WRITING = 4, + S_DONE = 8 +} S_STATUS; + +typedef enum +{ + UNDEF = 0, + READ = 1, + WRITE = 2, + RDWR = 3 +} SDSET; + +typedef struct +{ + int sock; /* socket file descriptor */ + S_STATUS status; + BOOLEAN encrypt; /* TRUE=encrypt, FALSE=clear */ + SCHEME scheme; + PAGE page; + CACHE cache; + struct { + int transfer; /* transfer encoding specified */ + size_t length; /* length of data chunks */ + } content; /* content encoding data */ + struct { + int max; /* max number of keep-alives */ + int timeout; /* server specified timeout value */ + int reuse; /* boolean, reuse socket if TRUE */ + int status; /* socket status: open=1, close=0 */ + int keepalive; /* keep-alive header directive */ + int tested; /* boolean, has socket been tested */ + } connection; /* persistent connection data */ + struct { + DCHLG *wchlg; + DCRED *wcred; + int www; + DCHLG *pchlg; + DCRED *pcred; + int proxy; + struct { + TYPE www; + TYPE proxy; + } type; + } auth; +#ifdef HAVE_SSL + SSL *ssl; + SSL_CTX *ctx; + const SSL_METHOD *method; + X509 *cert; +#else + BOOLEAN nossl; +#endif/*HAVE_SSL*/ + size_t inbuffer; + int pos_ini; + char buffer[4096]; + char chkbuf[1024]; +#ifdef HAVE_POLL + struct pollfd pfd[1]; +#endif/*HAVE_POLL*/ + fd_set *ws; + fd_set *rs; + SDSET state; + struct { + int code; + char host[64]; /* FTP data host */ + int port; /* FTP data port */ + size_t size; /* FTP file size */ + BOOLEAN pasv; + } ftp; +} CONN; + +int new_socket (CONN *conn, const char *hostname, int port); +BOOLEAN socket_check (CONN *C, SDSET test); +int socket_write (CONN *conn, const void *b, size_t n); +ssize_t socket_read (CONN *conn, void *buf, size_t len); +ssize_t socket_readline(CONN *C, char *ptr, size_t maxlen); +void socket_close (CONN *C); + +#endif /* SOCK_H */ + diff --git a/siege-4.1.6/src/ssl.c b/siege-4.1.6/src/ssl.c new file mode 100644 index 0000000..aa00368 --- /dev/null +++ b/siege-4.1.6/src/ssl.c @@ -0,0 +1,275 @@ +/** + * SSL Thread Safe Setup Functions. + * + * Copyright (C) 2002-2016 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * + * You must obey the GNU General Public License in all respects + * for all of the code used other than OpenSSL. If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. If you + * do not wish to do so, delete this exception statement from your + * version. If you delete this exception statement from all source + * files in the program, then also delete it here. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * -- + */ +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** + * local variables and prototypes + */ +#ifdef HAVE_SSL +static pthread_mutex_t *lock_cs; +static long *lock_count; +#endif/*HAVE_SSL*/ + +unsigned long SSL_pthreads_thread_id(void); +#ifdef HAVE_SSL +private void SSL_error_stack(void); +public void SSL_pthreads_locking_callback(int mode, int type, char *file, int line); +#endif/*HAVE_SSL*/ + +BOOLEAN +SSL_initialize(CONN *C, const char *servername) +{ +#ifdef HAVE_SSL + int i; + int serr; + + if (C->ssl) { + return TRUE; + } + + C->ssl = NULL; + C->ctx = NULL; + C->method = NULL; + C->cert = NULL; + + /** + * XXX: SSL_library_init(); + * SSL_load_error_strings(); + * moved to ssl.c:235 - use once + */ + if(!my.ssl_key && my.ssl_cert) { + my.ssl_key = my.ssl_cert; + } + if(!my.ssl_ciphers) { + my.ssl_ciphers = stralloc(SSL_DEFAULT_CIPHER_LIST); + } + + C->method = (SSL_METHOD *)SSLv23_client_method(); + if(C->method==NULL){ + SSL_error_stack(); + return FALSE; + } + C->ctx = SSL_CTX_new(C->method); + if(C->ctx==NULL){ + SSL_error_stack(); + return FALSE; + } + + SSL_CTX_set_mode(C->ctx, SSL_MODE_ENABLE_PARTIAL_WRITE|SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); + SSL_CTX_set_options(C->ctx, SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3); + SSL_CTX_set_session_cache_mode(C->ctx, SSL_SESS_CACHE_BOTH); + SSL_CTX_set_timeout(C->ctx, my.ssl_timeout); + if(my.ssl_ciphers){ + if(!SSL_CTX_set_cipher_list(C->ctx, my.ssl_ciphers)){ + NOTIFY(ERROR, "SSL_CTX_set_cipher_list"); + return FALSE; + } + } + + if (my.ssl_cert) { + if (!SSL_CTX_use_certificate_chain_file(C->ctx, my.ssl_cert)) { + SSL_error_stack(); /* dump the error stack */ + NOTIFY(ERROR, "Error reading certificate file: %s", my.ssl_cert); + } + for (i=0; i<3; i++) { + if (SSL_CTX_use_PrivateKey_file(C->ctx, my.ssl_key, SSL_FILETYPE_PEM)) + break; + if (i<2 && ERR_GET_REASON(ERR_peek_error())==EVP_R_BAD_DECRYPT) { + SSL_error_stack(); /* dump the error stack */ + NOTIFY(WARNING, "Wrong pass phrase: retrying"); + continue; + } + } + + if (!SSL_CTX_check_private_key(C->ctx)) { + NOTIFY(ERROR, "Private key does not match the certificate"); + return FALSE; + } + } + + C->ssl = SSL_new(C->ctx); +#if defined(SSL_CTRL_SET_TLSEXT_HOSTNAME) + SSL_ctrl(C->ssl, SSL_CTRL_SET_TLSEXT_HOSTNAME, TLSEXT_NAMETYPE_host_name, (char *)servername); +#endif/*SSL_CTRL_SET_TLSEXT_HOSTNAME*/ + + if (C->ssl==NULL) { + SSL_error_stack(); + return FALSE; + } + + SSL_set_fd(C->ssl, C->sock); + serr = SSL_connect(C->ssl); + if (serr != 1) { + SSL_error_stack(); + NOTIFY(ERROR, "Failed to make an SSL connection: %d", SSL_get_error(C->ssl, serr)); + return FALSE; + } + return TRUE; +#else + C->nossl = TRUE; + NOTIFY( + ERROR, "HTTPS requires libssl: Unable to reach %s with this protocol", servername + ); // this message is mainly intended to silence the compiler + return FALSE; +#endif/*HAVE_SSL*/ +} + +/** + * these functions were more or less taken from + * the openssl thread safe examples included in + * the OpenSSL distribution. + */ +#ifdef HAVE_SSL +void +SSL_thread_setup( void ) +{ + int x; + +#define OPENSSL_THREAD_DEFINES +#include +#if defined(THREADS) || defined(OPENSSL_THREADS) +#else + fprintf( + stderr, + "WARNING: your openssl libraries were compiled without thread support\n" + ); + pthread_sleep_np( 2 ); +#endif + + SSL_library_init(); + SSL_load_error_strings(); + lock_cs = (pthread_mutex_t*)OPENSSL_malloc( + CRYPTO_num_locks()*sizeof(pthread_mutex_t) + ); + lock_count = (long*)OPENSSL_malloc( + CRYPTO_num_locks() * sizeof(long) + ); + + for( x = 0; x < CRYPTO_num_locks(); x++ ){ + lock_count[x] = 0; + pthread_mutex_init(&(lock_cs[x]), NULL); + } + CRYPTO_set_id_callback((unsigned long (*)())SSL_pthreads_thread_id); + CRYPTO_set_locking_callback((void (*)())SSL_pthreads_locking_callback); +} + +void +SSL_thread_cleanup(void) +{ + int x; + + xfree(my.ssl_ciphers); + + CRYPTO_set_locking_callback(NULL); + for (x = 0; x < CRYPTO_num_locks(); x++) { + pthread_mutex_destroy(&(lock_cs[x])); + } + if (lock_cs!=(pthread_mutex_t *)NULL) { + OPENSSL_free(lock_cs); + lock_cs=(pthread_mutex_t *)NULL; + } + if (lock_count!=(long *)NULL) { + OPENSSL_free(lock_count); + lock_count=(long *)NULL; + } + CRYPTO_cleanup_all_ex_data(); + ERR_free_strings(); + EVP_cleanup(); + CRYPTO_cleanup_all_ex_data(); +#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER < 0x10100000L + ERR_remove_thread_state(NULL); +#elif OPENSSL_VERSION_NUMBER < 0x10000000L + ERR_remove_state(0); +#endif +} + +void +SSL_pthreads_locking_callback(int mode, int type, char *file, int line) +{ + if( my.debug == 4 ){ + fprintf( + stderr,"thread=%4d mode=%s lock=%s %s:%d\n", (int)CRYPTO_thread_id(), + (mode&CRYPTO_LOCK)?"l":"u", (type&CRYPTO_READ)?"r":"w",file,line + ); + } + if(mode & CRYPTO_LOCK){ + pthread_mutex_lock(&(lock_cs[type])); + lock_count[type]++; + } + else{ + pthread_mutex_unlock(&(lock_cs[type])); + } +} + +unsigned long +SSL_pthreads_thread_id(void) +{ + unsigned long ret; + ret = (unsigned long)pthread_self(); + + return(ret); +} + +static void +SSL_error_stack(void) { /* recursive dump of the error stack */ + unsigned long err; + char string[120]; + + err=ERR_get_error(); + if(!err) + return; + SSL_error_stack(); + ERR_error_string(err, string); + NOTIFY(ERROR, "stack: %lX : %s", err, string); +} + +#endif/*HAVE_SSL*/ diff --git a/siege-4.1.6/src/ssl.h b/siege-4.1.6/src/ssl.h new file mode 100644 index 0000000..6c45a88 --- /dev/null +++ b/siege-4.1.6/src/ssl.h @@ -0,0 +1,57 @@ +/** + * SSL Thread Safe Setup Functions. + * + * Copyright (C) 2002-2014 by + * Jeffrey Fulmer - , et al + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * -- + */ +#ifndef SSL_H +#define SSL_H + +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include + +#include +#ifdef HAVE_SSL +#ifdef HAVE_E_OS_H +# include +#endif/*HAVE_E_OSH*/ +#ifdef HAVE_E_OS2_H +# include +#endif/*HAVE_E_OS2_H*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif/*HAVE_SSL*/ + +BOOLEAN SSL_initialize(CONN *C, const char *servername); +void SSL_thread_setup(void); +void SSL_thread_cleanup(void); + +#endif/*SSL_H*/ + diff --git a/siege-4.1.6/src/stralloc.c b/siege-4.1.6/src/stralloc.c new file mode 100644 index 0000000..6268e04 --- /dev/null +++ b/siege-4.1.6/src/stralloc.c @@ -0,0 +1,51 @@ +/** + * Stralloc + * Library: joedog + * + * Copyright (C) 2000-2009 by + * Jeffrey Fulmer - + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#ifdef HAVE_STRING_H +# include +#endif/*HAVE_STRING_H*/ + +#ifdef HAVE_STRINGS_H +# include +#endif/*HAVE_STRINGS_H*/ + +#include +#include + +char *stralloc(char *str) +{ + char *retval; + + retval=calloc(strlen(str)+1, 1); + if(!retval) { + NOTIFY(FATAL, "Fatal memory allocation error"); + } + strcpy(retval, str); + return retval; +} + diff --git a/siege-4.1.6/src/stralloc.h b/siege-4.1.6/src/stralloc.h new file mode 100644 index 0000000..1e56cc2 --- /dev/null +++ b/siege-4.1.6/src/stralloc.h @@ -0,0 +1,29 @@ +/** + * Stralloc + * Library: joedog + * + * Copyright (C) 2000-2007 by + * Jeffrey Fulmer - + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#ifndef STRALLOC_H +#define STRALLOC_H + +char *stralloc(char *); + +#endif/*STRALLOC_H*/ diff --git a/siege-4.1.6/src/timer.c b/siege-4.1.6/src/timer.c new file mode 100644 index 0000000..3a717ef --- /dev/null +++ b/siege-4.1.6/src/timer.c @@ -0,0 +1,63 @@ +/** + * Siege timer support. + * + * Copyright (C) 2000-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#include +#include +#include +#include +#include +#include + +void +siege_timer(pthread_t handler) +{ + int err; + time_t now; + struct timespec timeout; + pthread_mutex_t timer_mutex = PTHREAD_MUTEX_INITIALIZER; + pthread_cond_t timer_cond = PTHREAD_COND_INITIALIZER; + + if (time(&now) < 0) { + NOTIFY(FATAL, "unable to set the siege timer!"); + } + timeout.tv_sec=now + my.secs + 1; + timeout.tv_nsec=0; + + pthread_mutex_lock(&timer_mutex); + for (;;) { + err = pthread_cond_timedwait( &timer_cond, &timer_mutex, &timeout); + if (err == ETIMEDOUT) { + /* timed out */ + if(my.debug){ printf("TIMED OUT!!\n"); fflush(stdout); } + /*if(our.shutting_down != TRUE){ pthread_kill(handler, SIGTERM); }*/ + my.verbose = FALSE; + pthread_kill(handler, SIGTERM); + break; + } else { + continue; + } + } + pthread_mutex_unlock(&timer_mutex); + return; +} + + diff --git a/siege-4.1.6/src/timer.h b/siege-4.1.6/src/timer.h new file mode 100644 index 0000000..a26a9cf --- /dev/null +++ b/siege-4.1.6/src/timer.h @@ -0,0 +1,30 @@ +/** + * Siege timer support. + * + * Copyright (C) 2000-2014 by + * Jeffrey Fulmer - , et al + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#ifndef TIMER_H +#define TIMER_H + +#include + +void siege_timer(pthread_t handler); + +#endif/*TIMER_H*/ diff --git a/siege-4.1.6/src/url.c b/siege-4.1.6/src/url.c new file mode 100644 index 0000000..d7a758d --- /dev/null +++ b/siege-4.1.6/src/url.c @@ -0,0 +1,1343 @@ +/** + * URL Support + * + * Copyright (C) 2013-2022 + * Jeffrey Fulmer - , et al. + * Copyright (C) 1999 by + * Jeffrey Fulmer - . + * + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifdef HAVE_CONFIG_H +# include +#endif/*HAVE_CONFIG_H*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct URL_T +{ + int ID; + char * url; + SCHEME scheme; + METHOD method; + char * username; + char * password; + char * hostname; + int port; + char * path; + char * file; + char * params; + BOOLEAN hasparams; + char * query; + char * frag; + char * request; + size_t postlen; + char * postdata; + char * posttemp; + char * conttype; + BOOLEAN cached; + BOOLEAN redir; +}; + +size_t URLSIZE = sizeof(struct URL_T); + +private void __url_parse(URL this, char *url); +private void __parse_post_data(URL this, char *datap); +private char * __url_set_absolute(URL this, char *url); +private BOOLEAN __url_has_scheme (char *url); +private BOOLEAN __url_has_credentials(char *url); +private int __url_default_port(URL this); +private char * __url_set_scheme(URL this, char *url); +private char * __url_set_password(URL this, char *str); +private char * __url_set_username(URL this, char *str); +private char * __url_set_hostname(URL this, char *str); +private char * __url_set_port(URL this, char *str); +private char * __url_set_path(URL this, char *str); +private char * __url_set_file(URL this, char *str); +private char * __url_set_parameters(URL this, char *str); +private char * __url_set_query(URL this, char *str); +private char * __url_set_fragment(URL this, char *str); +private char * __url_escape(const char *s); +private METHOD __url_has_method(const char *url); +private void __url_replace(char *url, const char *needle, const char *replacement); + +URL +new_url(char *str) +{ + URL this; + this = xmalloc(URLSIZE); + this->ID = 0; + this->scheme = HTTP; + this->hasparams = FALSE; + this->params = NULL; + this->redir = FALSE; + this->method = GET; + this->username = NULL; + this->password = NULL; + this->hostname = NULL; + this->port = 80; + this->path = NULL; + this->file = NULL; + this->params = NULL; + this->hasparams = FALSE; + this->query = NULL; + this->frag = NULL; + this->request = NULL; + this->postlen = 0; + this->postdata = NULL; + this->posttemp = NULL; + this->conttype = NULL; + this->cached = FALSE; + this->redir = FALSE; + __url_parse(this, str); + return this; +} + +URL +url_destroy(URL this) +{ + if (this!=NULL) { + xfree(this->url); + xfree(this->username); + xfree(this->password); + xfree(this->hostname); + if (this->path != NULL && this->path[0] != '\0') { + xfree(this->path); + } + xfree(this->file); + xfree(this->query); + xfree(this->frag); + xfree(this->request); + xfree(this->conttype); + xfree(this->postdata); + xfree(this->posttemp); + if (this->hasparams==TRUE) { + xfree(this->params); + } + xfree(this); + } + return NULL; +} + +/** + * URL setters + */ +void +url_set_ID(URL this, int ID) +{ + this->ID = ID; + return; +} + +/** + * This function is largely for RE-setting the scheme + */ +void +url_set_scheme(URL this, SCHEME scheme) +{ + char *tmp; + char *str; + int n; + int len; + + this->scheme = scheme; + str = strdup(url_get_scheme_name(this)); + + if (this->url != NULL) { + tmp = xstrdup(this->url); + if (!strncasecmp(tmp, "http:", 5)){ + n = 7; + } + if (!strncasecmp(tmp, "https:", 6)){ + n = 8; + } + if (!strncasecmp(tmp, "ftp:", 4)){ + n = 6; + } + len = strlen(tmp); + memmove(tmp, tmp+n, len - n + 1); + xfree(this->url); + len = strlen(tmp)+strlen(str)+4; + this->url = xmalloc(len); + memset(this->url, '\0', len); + snprintf(this->url, len, "%s://%s", str, tmp); + xfree(tmp); + xfree(str); + } + return; +} + +/** + * if we don't have a hostname at + * construction, we can use this + * method to add one... + */ +void +url_set_hostname(URL this, char *hostname) +{ + size_t len; + + if (empty(hostname)) return; + + xfree(this->hostname); + len = strlen(hostname)+1; + this->hostname = xmalloc(len); + memset(this->hostname, '\0', len); + strncpy(this->hostname, hostname, len); + return; +} + +void +url_set_redirect(URL this, BOOLEAN redir) +{ + this->redir = redir; +} + +void +url_set_conttype(URL this, char *type) { + this->conttype = xstrdup(type); + return; +} + +void +url_set_method(URL this, METHOD method) { + this->method = method; +} + +/** + * invoked when post data is read from a file. + * see load.c + */ +void +url_set_postdata(URL this, char *postdata, size_t postlen) +{ + this->postlen = postlen; + this->postdata = xmalloc(this->postlen+1); + memcpy(this->postdata, postdata, this->postlen); + this->postdata[this->postlen] = '\0'; + return; +} + +/** + * URL getters + */ +public int +url_get_ID(URL this) +{ + return this->ID; +} + +public char * +url_get_absolute(URL this) +{ + return (this == NULL) ? "NULL" : this->url; +} + +public SCHEME +url_get_scheme(URL this) +{ + return this->scheme; +} + +public char * +url_get_display(URL this) +{ + if (my.fullurl) + return url_get_absolute(this); + + if (this->method == GET) + return url_get_request(this); + + return url_get_absolute(this); +} + +public char * +url_get_scheme_name(URL this) +{ + switch (this->scheme) { + case HTTP: + return "http"; + case HTTPS: + return "https"; + case FTP: + return "ftp"; + case PROXY: + return "proxy"; + case UNSUPPORTED: + default: + return "unsupported"; + } + return "unsupported"; +} + +public char * +url_get_username(URL this) +{ + return this->username; +} + +public char * +url_get_password(URL this) +{ + return this->password; +} + +public char * +url_get_hostname(URL this) +{ + return this->hostname; +} + +public int +url_get_port(URL this) +{ + return this->port; +} + +public char * +url_get_path(URL this) +{ + return this->path; +} + +public char * +url_get_file(URL this) +{ + return this->file; +} + +public char * +url_get_request(URL this) +{ + return this->request; +} + +public char * +url_get_parameters(URL this) +{ + return this->params; +} + +public char * +url_get_query(URL this) +{ + return this->query; +} + +public char * +url_get_fragment(URL this) +{ + return this->frag; +} + +public size_t +url_get_postlen(URL this) { + return this->postlen; +} + +public char * +url_get_postdata(URL this) { + return this->postdata; +} + +public char * +url_get_posttemp(URL this) { + return this->posttemp; +} + +public char * +url_get_conttype(URL this) { + + if (this->conttype == NULL) { + if (! empty(my.conttype)) { + this->conttype = xstrdup(my.conttype); + } else { + this->conttype = xstrdup("application/x-www-form-urlencoded"); + } + } + return this->conttype; +} + +public METHOD +url_get_method(URL this) { + return this->method; +} + +public char * +url_get_method_name(URL this) { + switch (this->method){ + case POST: + return "POST"; + case PATCH: + return "PATCH"; + case PUT: + return "PUT"; + case DELETE: + return "DELETE"; + case OPTIONS: + return "OPTIONS"; + case HEAD: + return "HEAD"; + case GET: + default: + return "GET"; + } + return "GET"; +} + +BOOLEAN +url_is_redirect(URL this) +{ + return this->redir; +} + +void +url_set_username(URL this, char *username) +{ + size_t len = strlen(username); + + this->username = malloc(len+1); + memset(this->username, '\0', len+1); + memcpy(this->username, username, len); + return; +} + +void +url_set_password(URL this, char *password) +{ + size_t len = strlen(password); + + this->password = malloc(len+1); + memset(this->password, '\0', len+1); + memcpy(this->password, password, len); + return; +} + +void +url_dump(URL this) +{ + printf("URL ID: %d\n", this->ID); + printf("Abolute: %s\n", this->url); + printf("Scheme: %s\n", url_get_scheme_name(this)); + printf("Method: %s\n", url_get_method_name(this)); + printf("Username: %s\n", url_get_username(this)); + printf("Password: %s\n", url_get_password(this)); + printf("Hostname: %s\n", url_get_hostname(this)); + printf("Port: %d\n", url_get_port(this)); + printf("Path: %s\n", url_get_path(this)); + printf("File: %s\n", url_get_file(this)); + printf("Request: %s\n", url_get_request(this)); + if (this->hasparams==TRUE) + printf("Params: %s\n", url_get_parameters(this)); + printf("Query: %s\n", url_get_query(this)); + printf("Fragment: %s\n", url_get_fragment(this)); + printf("Post Len: %d\n", (int)url_get_postlen(this)); + printf("Post Data: %s\n", url_get_postdata(this)); + printf("Cont Type: %s\n", url_get_conttype(this)); + return; +} + +URL +url_normalize(URL req, char *location) +{ + URL ret; + char * url; + size_t len; + + /** + * Should we just do this for all URLs + * or just the ones we parse?? + */ + __url_replace(location, "&", "&"); + __url_replace(location, "&", "&"); + + len = strlen(url_get_absolute(req)) + strlen(location) + 32; + + if (stristr(location, "data:image/gif")) { + // stupid CSS tricks + return NULL; + } + + if (stristr(location, "://")) { + // it's very likely normalized + ret = new_url(location); + + // but we better test it... + if (strlen(url_get_hostname(ret)) > 1) { + return ret; + } + } + + if ((location[0] != '/') && location[0] != '.' && (strchr(location, '.') != NULL && strchr(location, '/') != NULL)) { + /** + * This is probably host/path; it doesn't start with relevant path + * indicators and it contains the hallmarks of host/path namely at + * least one dot and slash + */ + ret = new_url(location); + url_set_scheme(ret, url_get_scheme(req)); + // so we better test it... + if (strchr(url_get_hostname(ret), '.') != NULL) { + return ret; + } + } + + if (strstr(location, "localhost") != NULL) { + ret = new_url(location); + url_set_scheme(ret, url_get_scheme(req)); + if (strlen(url_get_hostname(ret)) == 9) { + // we found and correctly parsed localhost + return ret; + } + } + + /** + * If we got this far we better construct it... + */ + url = (char*)malloc(len); + memset(url, '\0', len); + + if (location[0] == '/') { + if (strlen(location) > 1 && location[1] == '/') { + /* starts with // so we should use base protocol */ + snprintf(url, len, "%s:%s", url_get_scheme_name(req), location); + } else { + snprintf(url, len, "%s://%s:%d%s", url_get_scheme_name(req), url_get_hostname(req), url_get_port(req), location); + } + } else { + if (endswith("/", url_get_path(req)) == TRUE) { + char *tmp; + /** + * We're dealing with a req that ends in / and a relative + * URL that starts with ./ We want to increment two places + * to avoid this path: /haha/./mama.jpg + */ + if (location[0] == '.' && strlen(location) > 1) { + tmp = location+2; + } else { + tmp = location; + } + snprintf ( // if the path ends with / we won't need one in the format + url, len, + "%s://%s:%d%s%s", + url_get_scheme_name(req), url_get_hostname(req), url_get_port(req), url_get_path(req), tmp + ); + } else { + snprintf ( // need to add a slash to separate base path from parsed path/file + url, len, + "%s://%s:%d%s/%s", + url_get_scheme_name(req), url_get_hostname(req), url_get_port(req), url_get_path(req), location + ); + } + } + ret = new_url(url); + url_set_scheme(ret, url_get_scheme(req)); + free(url); + return ret; +} + +char * +url_normalize_string(URL req, char *location) +{ + char *t; + URL u; + + u = url_normalize(req, location); + t = strdup(url_get_absolute(u)); + u = url_destroy(u); + return t; +} + +private void +__url_parse(URL this, char *url) +{ + char *ptr = NULL; + char *esc = NULL; + char *post; + + /** + * URL escaping is in its infancy so we're + * going to make it a configurable option. + * see: url-escaping in siegerc. + */ + esc = __url_escape(url); + if (my.escape) { + ptr = __url_set_absolute(this, esc); + } else { + ptr = __url_set_absolute(this, url); + } + + ptr = __url_set_scheme(this, ptr); + + post = strstr(this->url, " POST"); + + if (! post) { + post = strstr(this->url, " PUT"); + } + + if (! post) { + post = strstr(this->url, " PATCH"); + } + + if (! post) { + post = strstr(this->url, " OPTIONS"); + } + + if (! post) { + post = strstr(this->url, " DELETE"); + } + + if (post != NULL){ + if (!strncasecmp(post," PUT", 4)) { + this->method = PUT; + *post = '\0'; + post += 4; + } else if (!strncasecmp(post," POST", 5)) { + this->method = POST; + *post = '\0'; + post += 5; + } else if (!strncasecmp(post," DELETE", 7)) { + this->method = DELETE; + *post = '\0'; + post += 7; + } else if (!strncasecmp(post," OPTIONS", 8)) { + this->method = OPTIONS; + *post = '\0'; + post += 8; + } else { + this->method = PATCH; + *post = '\0'; + post += 6; + } + __parse_post_data(this, post); + } else { + this->method = GET; + this->postdata = NULL; + this->posttemp = NULL; + this->postlen = 0; + } + + if (__url_has_credentials(ptr)) { + ptr = __url_set_username(this, ptr); + ptr = __url_set_password(this, ptr); + } + + ptr = __url_set_hostname(this, ptr); + ptr = __url_set_port(this, ptr); + ptr = __url_set_path(this, ptr); + ptr = __url_set_file(this, ptr); + ptr = __url_set_parameters(this, ptr); + ptr = __url_set_query(this, ptr); + ptr = __url_set_fragment(this, ptr); + return; +} + +private void +__parse_post_data(URL this, char *datap) +{ + for (; isspace((unsigned int)*datap); datap++) { + /* Advance past white space */ + } + if (*datap == '<') { + datap++; + load_file(this, datap); + datap = __url_set_path(this, datap); + datap = __url_set_file(this, datap); + return; + } else { + this->postdata = xstrdup(datap); + this->postlen = strlen(this->postdata); + if (! empty(my.conttype)) { + this->conttype = xstrdup(my.conttype); + } else { + this->conttype = xstrdup("application/x-www-form-urlencoded"); + } + return; + } + + return; +} + +/** + * assign the full url to this->url + */ +private char * +__url_set_absolute(URL this, char *url) +{ + int n; + size_t len; + char *slash; + char scheme[16]; + + if (empty(url)) return NULL; + + memset(scheme, '\0', 16); + + if (!strncasecmp(url, "http:", 5)){ + n = 7; + strncpy(scheme, "http", 5); + } + if (!strncasecmp(url, "https:", 6)){ + n = 8; + strncpy(scheme, "https", 6); + } + if (!strncasecmp(url, "ftp:", 4)){ + n = 6; + strncpy(scheme, "ftp", 4); + } + if (strlen(scheme) < 3) { + // A scheme wasn't supplied; we'll use http by default. + n = 7; + strncpy(scheme, "http", 5); + } + + len = strlen(url)+5; + if (!__url_has_scheme(url)) { + this->url = xmalloc(len+n); + memset(this->url, '\0', len+n); + slash = strstr(url, "/"); + if (slash) { + snprintf(this->url, len+n, "%s://%s", scheme, url); + } else { + snprintf(this->url, len+n, "%s://%s/", scheme, url); + } + } else { + this->url = xmalloc(len); + memset(this->url, '\0', len); + snprintf(this->url, len, "%s", url); + } + return this->url; +} + +#define SCHEME_CHAR(ch) (isalnum (ch) || (ch) == '-' || (ch) == '+') +/** + * stolen from wget:url.c + */ +private BOOLEAN +__url_has_scheme (char *url) +{ + const char *p = url; + + /* The first char must be a scheme char. */ + if (!*p || !SCHEME_CHAR (*p)) + return FALSE; + ++p; + /* Followed by 0 or more scheme chars. */ + while (*p && SCHEME_CHAR (*p)) + ++p; + /* Terminated by ':'. */ + return *p == ':'; +} + +private BOOLEAN +__url_has_credentials(char *url) +{ + /** + * if there's an @ before /?#; then we have creds + */ + const char *p = (const char *)strpbrk (url, "@/?#;"); + if (!p || *p != '@') + return FALSE; + return TRUE; +} + +private int +__url_default_port(URL this) +{ + switch(this->scheme){ + case FTP: + return 21; + case HTTP: + return 80; + case HTTPS: + return 443; + case UNSUPPORTED: + default: + return 80; + } +} + +/** + * set the scheme, i.e., http/https + * ://:@:/;?# + */ +private char * +__url_set_scheme(URL this, char *url) +{ + if(!strncasecmp(this->url, "http:", 5)){ + this->scheme = HTTP; + return url+7; + } + if(!strncasecmp(this->url, "https:", 6)){ + this->scheme = HTTPS; + return url+8; + } + if(!strncasecmp(this->url, "ftp:", 4)){ + this->scheme = FTP; + return url+6; + } + this->scheme = UNSUPPORTED; + return url; +} + +/** + * set the username + * ://:@:/;?# + */ +private char * +__url_set_username(URL this, char *str) +{ + int i; + char *a; + char *s; + + a = strchr(str, '@'); + s = strchr(str, '/'); + + if((!a) || (s && (a >= s))){ + return str; + } + + for(i = 0; str[i] && str[i] != ':' && str[i] != '@' && str[i] != '/'; i++); + + if(str[i] != '@' && str[i] != ':'){ + return str; + } + + this->username = malloc(i+1); + memcpy(this->username, str, i + 1); + this->username[i] = '\0'; + str += i + 1; + + return str; +} + +/** + * set the password + * ://:@:/;?# + */ +private char * +__url_set_password(URL this, char *str) +{ + int i; + char *a; + char *s; + a = strchr(str, '@'); + s = strchr(str, '/'); + + if((!a) || (s && (a >= s)) ){ + return str; + } + /** + * XXX: as the original author (Zachary Beane ) notes: + * this code breaks if user has an '@' or a '/' in their password. + */ + for(i = 0 ; str[i] != '@'; i++); + this->password = xmalloc(i+1); + + memcpy(this->password, str, i); + this->password[i] = '\0'; + + str += i + 1; + + return str; +} + +/** + * set the hostname + * ://:@:/;?# + */ +private char * +__url_set_hostname(URL this, char *str) +{ + int i; + int n; + int len; + + if (startswith("//", str)) { + n = 2; + len = strlen(str); + memmove(str, str+n, len - n + 1); + } + + /** + * Check for IPv6 address. The convention here is to use square brackets + * around the IPv6 address in order to have a clear delimitation between + * address and port + */ + if (startswith("[", str)) { + /* skip to matching square bracket */ + for (i = 0; str[i] && str[i] != ']'; i++); + + if (str[i] == ']') { + i++; + } + } else { + /* skip to end, slash, or port colon */ + for (i = 0; str[i] && str[i] != '/' && str[i] != '#' && str[i] != ':'; i++); + } + + this->hostname = xmalloc(i + 1); + memset(this->hostname, '\0', i+1); + memcpy(this->hostname, str, i); + + /* if there's a port */ + if (str[i] == ':') { + str += i + 1; + } else { + str += i; + } + return str; +} + +/** + * set the port + * ://:@:/;?# + */ +private char * +__url_set_port(URL this, char *str) +{ + char *portstr; + int i; + + this->port = __url_default_port(this); + + for(i = 0; isdigit(str[i]); i++); + + if(i == 0) return str; + + + portstr = malloc(i + 1); + memcpy(portstr, str, i + 1); + portstr[i] = '\0'; + + this->port = atoi(portstr); + xfree(portstr); + + str += i; + return str; +} + +/** + * set the path + * ://:@:/;?# + */ +private char * +__url_set_path(URL this, char *str) +{ + int i; // capture the length of the path + int j; // capture the length of the request (sans frag) + char *c; + + if (str != NULL && str[0] == '#') { + // WTF'ery. We probably have this: www.joedog.org#haha + this->request = xstrdup("/"); + return str; + } + + this->request = xstrdup(str); + + /** + * Does the request have a fragment? + * Let's whack that annoyance off... + */ + c = (char *)strstr(this->request, "#"); + if (c) { + *c = '\0'; + } + + for (i = strlen(str); i > 0 && str[i] != '/'; i--); + for (j = 0; str[j] && (str[j] != '#' && !isspace(str[j])); j++); + + if (str[i] != '/') { + if (this->scheme == FTP) { + this->path = ""; + } else { + this->path = xmalloc(2); + this->request = xmalloc(2); + strncpy(this->path, "/", 2); + strncpy(this->request, "/", 2); + this->path[1] = '\0'; + this->request[1] = '\0'; + } + } else { + this->path = xmalloc(i+2); + memcpy(this->path, str, i+1); + this->path[i] = '/'; + this->path[i + 1] = '\0'; + if (this->scheme == FTP && this->path[0] == '/') { + memmove(this->path, this->path+1, strlen(this->path)); + } + } + trim(this->request); + str += i + 1; + return str; +} + +/** + * set the file + * ://:@:/;?# + */ +private char * +__url_set_file(URL this, char *str) +{ + int i; + + if (str==NULL) return NULL; + if (this->file != NULL && strlen(this->file) > 1) return str; + + for(i = 0; str[i] && (str[i] != ';' && str[i] != '?' && !isspace(str[i])); i++); + this->file = xmalloc(i+1); + memset(this->file, '\0', i+1); + memcpy(this->file, str, i); + trim(this->file); + + /* if there are params or a query string */ + if (str[i] == ';') { + this->hasparams = TRUE; + str += i + 1; + } else if(str[i] == '?') { + str += i + 1; + } else { + str += i; + } + return str; +} + +/** + * set the parameters + * ://:@:/;?# + */ +private char * +__url_set_parameters(URL this, char *str) +{ + int i; + + if (str==NULL) return NULL; + if (this->params != NULL && strlen(this->params) > 1) { + return str; + } + + if (this->hasparams == FALSE) { + this->params = ""; + return str; + } + + for (i = 0; str[i] && (str[i] != '?' && !isspace(str[i])); i++); + + this->params = xmalloc(i+1); + memset(this->params, '\0', i+1); + memcpy(this->params, str, i); + + /* if there is a query string */ + if(str[i] == '?'){ + str += i + 1; + } else { + str += i; + } + return str; +} + +/** + * set the query + * ://:@:/;?# + */ +private char * +__url_set_query(URL this, char *str) +{ + int i; + + if (str==NULL) { + this->query = xstrcat(""); + return NULL; + } + + if (this->query != NULL && strlen(this->query) > 1) return str; + + for(i = 0; str[i] && (str[i] != '#' && !isspace(str[i])); i++); + + this->query = xmalloc(i+1); + memset(this->query, '\0', i+1); + memcpy(this->query, str, i); + + /* if there are params or a query string */ + if(str[i] == '#'){ + str += i + 1; + } else { + str += i; + } + return str; +} + +/** + * set the fragment (not used by siege) + * ://:@:/;?# + */ +private char * +__url_set_fragment(URL this, char *str) +{ + int i; + + if (str==NULL) return NULL; + if (this->frag != NULL && strlen(this->frag) > 1) return str; + + for(i = 0; str[i] && !isspace(str[i]); i++); + + this->frag = xmalloc(i+1); + memcpy(this->frag, str, i); + + str += i + 1; + return str; +} + +/** + * The following functions provide url encoding. They + * were lifted from wget: + * Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001 + * Free Software Foundation, Inc. + */ +enum { + /* rfc1738 reserved chars, preserved from encoding. */ + urlchr_reserved = 1, + + /* rfc1738 unsafe chars, plus some more. */ + urlchr_unsafe = 2 +}; + +#define urlchr_test(c, mask) (urlchr_table[(unsigned char)(c)] & (mask)) +#define URL_RESERVED_CHAR(c) urlchr_test(c, urlchr_reserved) +#define URL_UNSAFE_CHAR(c) urlchr_test(c, urlchr_unsafe) + +/* Shorthands for the table: */ +#define R urlchr_reserved +#define U urlchr_unsafe +#define RU R|U + +static const unsigned char urlchr_table[256] = +{ + U, U, U, U, U, U, U, U, /* NUL SOH STX ETX EOT ENQ ACK BEL */ + U, U, U, U, U, U, U, U, /* BS HT LF VT FF CR SO SI */ + U, U, U, U, U, U, U, U, /* DLE DC1 DC2 DC3 DC4 NAK SYN ETB */ + U, U, U, U, U, U, U, U, /* CAN EM SUB ESC FS GS RS US */ + U, 0, U, RU, 0, U, R, 0, /* SP ! " # $ % & ' */ + 0, 0, 0, R, 0, 0, 0, R, /* ( ) * + , - . / */ + 0, 0, 0, 0, 0, 0, 0, 0, /* 0 1 2 3 4 5 6 7 */ + 0, 0, RU, R, U, R, U, R, /* 8 9 : ; < = > ? */ + RU, 0, 0, 0, 0, 0, 0, 0, /* @ A B C D E F G */ + 0, 0, 0, 0, 0, 0, 0, 0, /* H I J K L M N O */ + 0, 0, 0, 0, 0, 0, 0, 0, /* P Q R S T U V W */ + 0, 0, 0, RU, U, RU, U, 0, /* X Y Z [ \ ] ^ _ */ + U, 0, 0, 0, 0, 0, 0, 0, /* ` a b c d e f g */ + 0, 0, 0, 0, 0, 0, 0, 0, /* h i j k l m n o */ + 0, 0, 0, 0, 0, 0, 0, 0, /* p q r s t u v w */ + 0, 0, 0, U, U, U, U, U, /* x y z { | } ~ DEL */ + + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, + U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, +}; +#undef R +#undef U +#undef RU + +enum copy_method { CM_DECODE, CM_ENCODE, CM_PASSTHROUGH }; + +/** + * Decide whether to encode, decode, or pass through the char at P. + * This used to be a macro, but it got a little too convoluted. + */ +static inline enum copy_method +decide_copy_method (const char *p) +{ + if (*p == '%') { + if (ISXDIGIT (*(p + 1)) && ISXDIGIT (*(p + 2))) { + /** + * %xx sequence: decode it, unless it would decode to an + * unsafe or a reserved char; in that case, leave it as is. + */ + char preempt = X2DIGITS_TO_NUM (*(p + 1), *(p + 2)); + if (URL_UNSAFE_CHAR (preempt) || URL_RESERVED_CHAR (preempt)) + return CM_PASSTHROUGH; + else + return CM_DECODE; + } else { + return CM_ENCODE; + } + } + else if (URL_UNSAFE_CHAR (*p) && !URL_RESERVED_CHAR (*p)) + return CM_ENCODE; + else + return CM_PASSTHROUGH; +} + +static METHOD +__url_has_method(const char *url) +{ + unsigned int i = 0; + const char * r = NULL; + static const char* const methods[] = { + " GET", " HEAD", " POST", " PUT", " TRACE", " DELETE", " OPTIONS", " CONNECT", " PATCH" + }; + + for (i = 0; i < sizeof(methods) / sizeof(methods[0]); i++) { + r = strstr(url, methods[i]); + if (r != NULL) return i; + } + + return NOMETHOD; +} + +private char * +__url_escape(const char *s) +{ + const char *p1; + char *newstr, *p2; + int oldlen, newlen, host_len; + char *path_start, *host_start; + + int encode_count = 0; + int decode_count = 0; + + /** + * FIXME: we're not going to escape siege method + * URLS, i.e., things with PUT or POST but if the + * path contains spaces they won't be escaped. + */ + if (__url_has_method(s)!=NOMETHOD) { + return (char *)s; + } + + /* skip directly to path */ + host_start = strstr(s, "//"); + if (host_start) { + host_start += 2; + } else { + host_start = (char *)s; + } + + path_start = strstr(host_start, "/"); + if (path_start) { + path_start += 1; + } else { /* there is no path to escape */ + return (char *)s; + } + + /* First, pass through the string to see if there's anything to do, + and to calculate the new length. */ + for (p1 = path_start; *p1; p1++) { + switch (decide_copy_method (p1)) { + case CM_ENCODE: + ++encode_count; + break; + case CM_DECODE: + ++decode_count; + break; + case CM_PASSTHROUGH: + break; + } + } + + if (!encode_count && !decode_count) + return (char *)s; /* C const model sucks. */ + + oldlen = p1 - s; + host_len = path_start - s; + /* Each encoding adds two characters (hex digits), while each + decoding removes two characters. */ + newlen = oldlen + 2 * (encode_count - decode_count); + newstr = xmalloc (newlen + 1); + + /* copy unmodified to new_str up to path_start */ + memcpy(newstr, s, host_len); + p1 = path_start; + p2 = newstr + host_len; + + while (*p1) { + switch (decide_copy_method (p1)) { + case CM_ENCODE: { + unsigned char c = *p1++; + *p2++ = '%'; + *p2++ = XNUM_TO_DIGIT (c >> 4); + *p2++ = XNUM_TO_DIGIT (c & 0xf); + } + break; + case CM_DECODE: + *p2++ = X2DIGITS_TO_NUM (p1[1], p1[2]); + p1 += 3; /* skip %xx */ + break; + case CM_PASSTHROUGH: + *p2++ = *p1++; + } + } + *p2 = '\0'; + return newstr; +} + + +private void +__url_replace(char *url, const char *needle, const char *replacement) +{ + char buf[4096] = {0}; + char *ins = &buf[0]; + char *str = NULL; + const char *tmp = url; + size_t nlen = strlen(needle); + size_t rlen = strlen(replacement); + + while (1) { + const char *p = strstr(tmp, needle); + + if (p == NULL) { + strcpy(ins, tmp); + break; + } + + memcpy(ins, tmp, p - tmp); + ins += p - tmp; + + memcpy(ins, replacement, rlen); + ins += rlen; + tmp = p + nlen; + } + + if (strlen(buf) > strlen(url)){ + str = (char *)realloc(url, strlen(buf)+1); + if (str == NULL) { + return; + } + url = str; + } + xstrncpy(url, buf, strlen(buf)+1); +} diff --git a/siege-4.1.6/src/url.h b/siege-4.1.6/src/url.h new file mode 100644 index 0000000..4fc4440 --- /dev/null +++ b/siege-4.1.6/src/url.h @@ -0,0 +1,147 @@ +/** + * URL Support + * + * Copyright (C) 2013-2016 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#ifndef __URL_H +#define __URL_H +#include +#include +#include + +/** + * a URL object + */ +typedef struct URL_T *URL; + +/** + * For memory allocation; URLSIZE + * provides the object size + */ +extern size_t URLSIZE; + +/** + * HTTP method + */ +typedef enum { + NOMETHOD = 0, + HEAD = 1, + GET = 2, + POST = 3, + PUT = 4, + DELETE = 5, + TRACE = 6, + OPTIONS = 7, + CONNECT = 8, + PATCH = 9, +} METHOD; + +/** + * enum SCHEME + */ +typedef enum { + UNSUPPORTED = 0, + HTTP = 1, + HTTPS = 2, + FTP = 3, + PROXY = 4 +} SCHEME; + + +/* Constructor / destructor */ +URL new_url(char *str); +URL url_destroy(URL this); +void url_dump(URL this); + +void url_set_ID(URL this, int id); +void url_set_scheme(URL this, SCHEME scheme); +void url_set_hostname(URL this, char *hostname); +void url_set_redirect(URL this, BOOLEAN redir); +void url_set_conttype(URL this, char *type); +void url_set_postdata(URL this, char *postdata, size_t postlen); +void url_set_method(URL this, METHOD method); + +int url_get_ID(URL this); +METHOD url_get_method(URL this); +char * url_get_method_name(URL this) ; +BOOLEAN url_is_redirect(URL this); + +/* ://:@:/;?# */ +char * url_get_absolute(URL this); + +/* ://:@:/;?# */ +SCHEME url_get_scheme(URL this); +char * url_get_scheme_name(URL this); + +/* ://:@:/;?# */ +char * url_get_username(URL this); + +/* ://:@:/;?# */ +char * url_get_password(URL this); + +/* ://:@:/;?# */ +char * url_get_hostname(URL this); + +/* ://:@:/;?# */ +int url_get_port(URL this); + +/* ://:@:/;?# */ +char * url_get_path(URL this); + +/* ://:@:/;?# */ +char * url_get_file(URL this); +char * url_get_request(URL this); // "" + +/* ://:@:/;?# */ +char * url_get_parameters(URL this); + +/* ://:@:/;?# */ +char * url_get_query(URL this); + +/* ://:@:/;?# */ +char * url_get_fragment(URL this); + + +/* + * Make a decision about what to display. Will show absolute url when fullurl + * is set to ture. Otherwise we check the HTTP method to display the submitted + * URI or the respective line provided from the urls file. + */ +char * url_get_display(URL this); + +/** + * POST method getters + * ://:@:/ POST ?# + */ +size_t url_get_postlen(URL this); +char * url_get_postdata(URL this); +char * url_get_posttemp(URL this); +char * url_get_conttype(URL this); +char * url_get_if_modified_since(URL this); +char * url_get_etag(URL this); +char * url_get_realm(URL this); +void url_set_realm(URL this, char *realm); +void url_set_username(URL this, char *username); +void url_set_password(URL this, char *password); +URL url_normalize(URL req, char *location); +char * url_normalize_string(URL req, char *location); + + +#endif/*__URL_H*/ diff --git a/siege-4.1.6/src/util.c b/siege-4.1.6/src/util.c new file mode 100644 index 0000000..4723c5f --- /dev/null +++ b/siege-4.1.6/src/util.c @@ -0,0 +1,417 @@ +/** + * Utility Functions + * + * Copyright (C) 2000-2014 by + * Jeffrey Fulmer - , et al. + * This file is distributed as part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *-- + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void pthread_usleep_np(unsigned long usec); + +/** + * parses the -t/--time option for a timed + * interval. The option requires a modifier, + * H, M, or S, hours, minutes or seconds + */ +void +parse_time(char *p) +{ + size_t x = 0; + my.time = my.secs = 0; + + while (ISDIGIT(p[x])) + x++; + if (x==0) return; + my.time = atoi(substring(p, 0, x)); + + for (; x < strlen(p); x ++) + switch (TOLOWER(p[x])) { + case 's': + my.secs = my.time; + my.time = 1; + return; + case 'm': + my.secs = my.time * 60; + my.time = 1; + return; + case 'h': + my.secs = my.time * 3600; + my.time = 1; + return; + default: + break; + } + if ((my.time > 0) && (my.secs <= 0)) { + my.secs = my.time * 60; + } + + return; +} + +char * +substring(char *str, int start, int len) +{ + int i; + char *ret; + char *res; + char *ptr; + char *end; + + if ((len < 1) || (start < 0) || (start > (int)strlen (str))) + return NULL; + + if (start+len > (int)strlen(str)) + len = strlen(str) - start; + + ret = xmalloc(len+1); + res = ret; + ptr = str; + end = str; + + for (i = 0; i < start; i++, ptr++) ; + for (i = 0; i < start+len; i++, end++) ; + while (ptr < end) + *res++ = *ptr++; + + *res = 0; + return ret; +} + +BOOLEAN +okay(int code) +{ + return (code >= 100 && code <= 299); +} + + +BOOLEAN +strmatch(char *option, char *param) +{ + if (!strncasecmp(option,param,strlen(param))&&strlen(option)==strlen(param)) + return TRUE; + else + return FALSE; +} + +BOOLEAN +startswith(const char *pre, const char *str) +{ + size_t lenpre = strlen(pre); + size_t lenstr = strlen(str); + return lenstr < lenpre ? FALSE : strncmp(pre, str, lenpre) == 0; +} + +BOOLEAN +endswith(const char *suffix, const char *str) +{ + if (!str || !suffix) + return FALSE; + size_t lenstr = strlen(str); + size_t lensuffix = strlen(suffix); + if (lensuffix > lenstr) + return FALSE; + return strncmp(str + lenstr - lensuffix, suffix, lensuffix) == 0; +} + +char * +uppercase(char *s, size_t len){ + unsigned char *c, *e; + + c = (unsigned char*)s; + e = c+len; + + while (c < e) { + *c = TOUPPER((unsigned char)(*c)); + c++; + } + return s; +} + + +char * +lowercase(char *s, size_t len){ + unsigned char *c, *e; + + c = (unsigned char*)s; + e = c+len; + + while (c < e) { + *c = TOLOWER((unsigned char)(*c)); + c++; + } + return s; +} + +char * +stristr(const char* haystack, const char* needle) { + do { + const char* h = haystack; + const char* n = needle; + while (tolower((unsigned char) *h) == tolower((unsigned char ) *n) && *n) { + h++; + n++; + } + if (*n == 0) { + return (char *) haystack; + } + } while (*haystack++); + return NULL; +} + +/** + * sleep and usleep work on all supported + * platforms except solaris, so we'll use + * those functions on non-solaris, but we + * still need to sleep. The macro handles + * that for us. + */ +void +pthread_sleep_np( unsigned int secs ) +{ +#if defined( SOLARIS ) || defined( sun ) + /* Theoretically, this could fail for sizeof(int)==sizeof(long) and + * very large values of secs due to an overflow. + * NB: for 64-bit int, that would mean waiting until the year 584543. + */ + pthread_usleep_np (secs*1000000); +#else + sleep(secs); +#endif/*pthread_sleep_np*/ + + return; +} + + +void +pthread_usleep_np(unsigned long usec) +{ +#if defined(SOLARIS) || defined(sun) + int err, type; + struct timeval now; + struct timespec timeout; + pthread_mutex_t timer_mutex = PTHREAD_MUTEX_INITIALIZER; + pthread_cond_t timer_cond = PTHREAD_COND_INITIALIZER; + + pthread_setcanceltype( PTHREAD_CANCEL_DEFERRED, &type ); + gettimeofday(&now, NULL); + timeout.tv_sec = now.tv_sec + usec/1000000; + timeout.tv_nsec = (now.tv_usec + usec%1000000)*1000; + /* At most 1s carry. */ + if(timeout.tv_nsec >= 1000000000){ + timeout.tv_nsec -= 1000000000; + timeout.tv_sec++; + } + + pthread_mutex_lock(&timer_mutex); + err = pthread_cond_timedwait(&timer_cond, &timer_mutex, &timeout); + pthread_mutex_unlock(&timer_mutex); + + pthread_setcanceltype(type,NULL); + pthread_testcancel(); +#else + usleep(usec); +#endif + return; +} + +float +elapsed_time(clock_t time) +{ + long tps = sysconf( _SC_CLK_TCK ); + return (float)time/tps; +} + +void +echo (const char *fmt, ...) +{ + char buf[256]; + va_list ap; + + if (my.quiet) { + return; + } + + if (my.get) { + va_start(ap, fmt); + vsnprintf(buf, sizeof buf, fmt, ap); + printf("%s", buf); // yes, that's ugly... + va_end(ap); + fflush(stdout); + return; + } + + if (my.debug) { + va_start(ap, fmt); + vsnprintf(buf, sizeof buf, fmt, ap); + if (strlen(buf) == 1) { + printf("%s", buf); + } else { + NOTIFY(DEBUG, buf); + } + va_end(ap); + } + return; +} + +void +debug (const char *fmt, ...) +{ + char buf[256]; + va_list ap; + + if (my.quiet) { + return; + } + + if (my.debug) { + va_start(ap, fmt); + vsnprintf(buf, sizeof buf, fmt, ap); + if (strlen(buf) == 1) { + printf("%s", buf); + } else { + NOTIFY(DEBUG, buf); + } + va_end(ap); + } + return; +} + + +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ +#ifndef HAVE_RAND_R +static int +do_rand(unsigned long *ctx) +{ + return ((*ctx = *ctx * 1103515245 + 12345) % ((u_long)RAND_MAX + 1)); +} + +int +posix_rand_r(unsigned int *ctx) +{ + u_long val = (u_long) *ctx; + *ctx = do_rand(&val); + return (int) *ctx; +} +#endif + +int +pthread_rand_np(unsigned int *ctx) +{ +#ifndef HAVE_RAND_R + return (int)posix_rand_r(ctx); +#else + return (int)rand_r(ctx); +#endif +} + +int +urandom() +{ +#ifdef HAVE_DEV_RANDOM + int rand = -1; + int fd; + int len; + + if ((fd = open("/dev/urandom", O_RDONLY)) >= 0) { + len = read(fd, &rand, sizeof(rand)); + if (len == -1) { + fprintf(stderr, "ERROR: failed to open /dev/urandom\n"); + } + close(fd); + } + return rand; +#else + unsigned int randrseed; + + randrseed = time(0); + return pthread_rand_np(&randrseed); +#endif +} + +#ifndef strnlen +size_t +strnlen(const char *str, size_t len) +{ + const char *end = memchr(str, '\0', len); + return (end != NULL) ? (size_t) (end - str) : len; +} +#endif + +#ifndef strncasestr +const char * +strncasestr(const char *str1, const char *str2, size_t len) +{ + size_t str1_len = strnlen(str1, len); + size_t str2_len = strlen(str2); + size_t i; + + if (str1_len < 1 || str2_len < 1) { + return NULL; + } + + for (i = 0; i < (str1_len - str2_len + 1); i++) { + if (strncasecmp(str1, str2, str2_len) == 0) { + return str1; + } + str1++; + } + return NULL; +} +#endif diff --git a/siege-4.1.6/src/util.h b/siege-4.1.6/src/util.h new file mode 100644 index 0000000..52081ea --- /dev/null +++ b/siege-4.1.6/src/util.h @@ -0,0 +1,53 @@ +/** + * Utility Functions + * + * Copyright (C) 2001-2014 + * by Jeffrey Fulmer , et al. + * This file is part of Siege + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ +#ifndef UTIL_H +#define UTIL_H + +#include +#include + +void parse_time(char *p); +float elapsed_time(clock_t time); +char * substring(char *str, int start, int len); +void pthread_sleep_np(unsigned int seconds); +void pthread_usleep_np(unsigned long usec); +int pthread_rand_np(unsigned int *ctx); +int urandom(); +BOOLEAN strmatch(char *str1, char *str2); +BOOLEAN startswith(const char *pre, const char *str); +BOOLEAN endswith(const char *suffix, const char *str); +BOOLEAN okay(int code); +void echo(const char *fmt, ...); +void debug (const char *fmt, ...); +char * uppercase(char *s, size_t len); +char * lowercase(char *s, size_t len); +char * stristr(const char *haystack, const char *needle); +#ifndef strnlen +size_t strnlen(const char *str, size_t len); +#endif +#ifndef strncasestr +const char * strncasestr(const char *str1, const char *str2, size_t len); +#endif + +#endif /*UTIL_H*/ + diff --git a/siege-4.1.6/src/version.c b/siege-4.1.6/src/version.c new file mode 100644 index 0000000..e9f0a64 --- /dev/null +++ b/siege-4.1.6/src/version.c @@ -0,0 +1,15 @@ +/** + * version_string and program_name are used by siege + * and configure; author_name and email_address are + * used by configure to dynamically assign those values + * to documentation files. + */ +const char *version_string = "4.1.6"; +const char *program_name = "siege"; +const char *author_name = "Jeffrey Fulmer, et al."; +const char *email_address = "jeff@joedog.org"; +const char *years = "1999-2023"; +const char *copyright = "Copyright (C) 2023 by Jeffrey Fulmer, et al.\n\ +This is free software; see the source for copying conditions.\n\ +There is NO warranty; not even for MERCHANTABILITY or FITNESS\n\ +FOR A PARTICULAR PURPOSE.\n"; diff --git a/siege-4.1.6/src/version.h b/siege-4.1.6/src/version.h new file mode 100644 index 0000000..0653610 --- /dev/null +++ b/siege-4.1.6/src/version.h @@ -0,0 +1,10 @@ +#ifndef __VERSION_H +#define __VERSION_H + +extern char *version_string; +extern char *program_name; +extern char *author_name; +extern char *email_address; +extern char *copyright; + +#endif/*__VERSION_H*/ diff --git a/siege-4.1.6/utils/Makefile b/siege-4.1.6/utils/Makefile new file mode 100644 index 0000000..d068ff7 --- /dev/null +++ b/siege-4.1.6/utils/Makefile @@ -0,0 +1,472 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# utils/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + + + +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/siege +pkgincludedir = $(includedir)/siege +pkglibdir = $(libdir)/siege +pkglibexecdir = $(libexecdir)/siege +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +subdir = utils +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + mkinstalldirs compile config.guess config.sub install-sh \ + mdate-sh missing ltmain.sh +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing aclocal-1.13 +ALLOCA = +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTHOR = Jeffrey Fulmer, et al. +AUTOCONF = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoconf +AUTOHEADER = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing autoheader +AUTOMAKE = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing automake-1.13 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=none +CC_R = +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = -I/include/zlib -I/include +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=none +CXXFLAGS = -g -O2 +CYGPATH_W = echo +DATE = June-18-2024 +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO = echo +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EMAIL = jeff@joedog.org +EXEEXT = +F77 = +FFLAGS = +GREP = /usr/bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = +LDL = -ldl +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LN_S = cp -pR +LTLIBOBJS = +MAKEINFO = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/missing makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = siege +PACKAGE_BUGREPORT = +PACKAGE_NAME = siege +PACKAGE_STRING = siege 4.1.6 +PACKAGE_TARNAME = siege +PACKAGE_URL = +PACKAGE_VERSION = 4.1.6 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PLATFORM = pc-x86_64-linux-gnu +PROGRAM = siege +PTHREAD_CFLAGS = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS +PTHREAD_LDFLAGS = -lpthread +RANLIB = ranlib +SED = /usr/bin/sed +SET_MAKE = +SHELL = /bin/sh +SSL_CFLAGS = +SSL_INCLUDE = +SSL_LDFLAGS = +SSL_LIBS = +STRIP = strip +VERSION = 4.1.6 +WARN_CFLAGS = -W -Wall -Wunused-value +Z_CFLAGS = +Z_INCLUDE = -I/include/zlib -I/include +Z_LDFLAGS = -L/usr/lib +Z_LIBS = -lz +abs_builddir = /mnt/e/webserv/siege-4.1.6/utils +abs_srcdir = /mnt/e/webserv/siege-4.1.6/utils +abs_top_builddir = /mnt/e/webserv/siege-4.1.6 +abs_top_srcdir = /mnt/e/webserv/siege-4.1.6 +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_F77 = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /mnt/e/webserv/siege-4.1.6/utils/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +AUTOMAKE_OPTIONS = foreign no-dependencies +AM_CFLAGS = $(WARN_CFLAGS) +SIEGE_UTILITIES = bombardment siege2csv.pl siege.config +DISTCLEANFILES = $(SIEGE_UTILITIES) +EXTRA_DIST = \ +bootstrap \ +config.guess \ +config.sub \ +install-sh \ +ltmain.sh \ +manifier \ +mdate-sh \ +missing \ +mkinstalldirs \ +mkstamp \ +siege.config.in \ +bombardment.in \ +siege2csv.in + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign utils/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign utils/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-exec-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags-am uninstall uninstall-am + + +install-exec-hook: + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(SIEGE_UTILITIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'| sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall: + @list='$(SIEGE_UTILITIES)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/utils/Makefile.am b/siege-4.1.6/utils/Makefile.am new file mode 100644 index 0000000..edeef0b --- /dev/null +++ b/siege-4.1.6/utils/Makefile.am @@ -0,0 +1,61 @@ +## +## utils/Makefile.am +## +## Copyright (C) 2000-2007 by +## Jeffrey Fulmer - , et al. +## This file is distributed as part of Siege +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +## + +AUTOMAKE_OPTIONS = foreign no-dependencies + +WARN_CFLAGS = @WARN_CFLAGS@ +AM_CFLAGS = $(WARN_CFLAGS) + +SIEGE_UTILITIES = bombardment siege2csv.pl siege.config + +DISTCLEANFILES = $(SIEGE_UTILITIES) + +EXTRA_DIST = \ +bootstrap \ +config.guess \ +config.sub \ +install-sh \ +ltmain.sh \ +manifier \ +mdate-sh \ +missing \ +mkinstalldirs \ +mkstamp \ +siege.config.in \ +bombardment.in \ +siege2csv.in + +install-exec-hook: + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(SIEGE_UTILITIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'| sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall: + @list='$(SIEGE_UTILITIES)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + + diff --git a/siege-4.1.6/utils/Makefile.in b/siege-4.1.6/utils/Makefile.in new file mode 100644 index 0000000..eafa563 --- /dev/null +++ b/siege-4.1.6/utils/Makefile.in @@ -0,0 +1,472 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# 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. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = utils +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + mkinstalldirs compile config.guess config.sub install-sh \ + mdate-sh missing ltmain.sh +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/utils/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +depcomp = +am__depfiles_maybe = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTHOR = @AUTHOR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CC_R = @CC_R@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATE = @DATE@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMAIL = @EMAIL@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LDL = @LDL@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PLATFORM = @PLATFORM@ +PROGRAM = @PROGRAM@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LDFLAGS = @PTHREAD_LDFLAGS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SSL_CFLAGS = @SSL_CFLAGS@ +SSL_INCLUDE = @SSL_INCLUDE@ +SSL_LDFLAGS = @SSL_LDFLAGS@ +SSL_LIBS = @SSL_LIBS@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WARN_CFLAGS = @WARN_CFLAGS@ +Z_CFLAGS = @Z_CFLAGS@ +Z_INCLUDE = @Z_INCLUDE@ +Z_LDFLAGS = @Z_LDFLAGS@ +Z_LIBS = @Z_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = foreign no-dependencies +AM_CFLAGS = $(WARN_CFLAGS) +SIEGE_UTILITIES = bombardment siege2csv.pl siege.config +DISTCLEANFILES = $(SIEGE_UTILITIES) +EXTRA_DIST = \ +bootstrap \ +config.guess \ +config.sub \ +install-sh \ +ltmain.sh \ +manifier \ +mdate-sh \ +missing \ +mkinstalldirs \ +mkstamp \ +siege.config.in \ +bombardment.in \ +siege2csv.in + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign utils/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign utils/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-exec-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags-am uninstall uninstall-am + + +install-exec-hook: + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(SIEGE_UTILITIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(LIBTOOL) --mode=install $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'| sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall: + @list='$(SIEGE_UTILITIES)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/siege-4.1.6/utils/bombardment b/siege-4.1.6/utils/bombardment new file mode 100644 index 0000000..5c55264 --- /dev/null +++ b/siege-4.1.6/utils/bombardment @@ -0,0 +1,105 @@ +#!/bin/sh +#bombardment is a script that invokes siege with an ever-increasing +#number of users. +#Copyright (C) 2001 Peter J. Hutnick + +#This program is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public License +#as published by the Free Software Foundation; either version 2 +#of the License, or (at your option) any later version. + +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with this program; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, US + +#For informaion, write the author, Peter Hutnick at phutnick@aperian.com. + + +# Display help if no options or --help specified. +if [ -z $1 ] || [ $1 = --help ] + then + echo "" + echo "usage:" + echo "bombardment [urlfile] [inital # of clients] \ +[inc value] [# of inc] [delay]" + echo "" +# echo "so \"laysiege foo.com 10 5 3\" would test \ +#http:\\\\foo.com\\index.html with 10 then 15 then 20 clients." + echo "" + exit + fi + +# Assign args to useful variables. +site=$1 +startcl=$2 +inc=$3 +numruns=$4 +delay=$5 +serial=`date '+%Y-%m-%dT%H:%M%z'` + +# This script can easily be made to overwhelm system resources (processes +# and filehandles. This bit calculates how many processes it will spawn +# on the last run, and warn if it is more than 600. + +total=$startcl +sub=`expr $inc \* $numruns` +total=$total+$sub + +if [ 600 -lt $(($total)) ] + then + echo "The options you specified will generate more than \ +600 concurrent users. This causes problems on many systems. Press \ + to abort, unless you are sure your system can handle more than \ +600 processes and more than 2048 open files, AND that your user account \ +is allowed to do so." + echo "" + echo "Siege will run with the supplied options in 10 sec." +# I would rather use something like "pause" from DOS than the sleep below, +# but I don't know of any such thing. + sleep 10 + fi + + + +# Set a default delay of 15 seconds if none is specified. +if [ -z $5 ] + then + delay=15 + fi +#echo $delay + + +# Find the number of URLs so we can set -t in siege. This deviates +# somewhat from Siege's normal mode of operation. I assume that each +# entry in the URL list should be hit once per client. + +numurls=`cat $site | grep -v "#" | wc -l` +# Debug-o-rama +#echo "the number of URLs is: " +#echo $numurls +#echo "\n" + +# Now we come to the loop that actually runs Siege. This sould be +# self-explainitory. + +currentcl=$startcl # set running count of clients to inital value + +i=1 +while [ $numruns -ge $i ] + do + echo "Starting run number" $i + /usr/local/bin/siege -f $site -c $currentcl -t $numurls -d $delay >> siege.$serial + currentcl=$(($currentcl+$inc)) + i=$(($i+1)) + #sleep 30 + done + +# Finally, we call siege2csv.pl to convert all the human-readable Siege +# output to CSV, for easy spreadsheet usage. + +siege2csv.pl siege.$serial diff --git a/siege-4.1.6/utils/bombardment.in b/siege-4.1.6/utils/bombardment.in new file mode 100644 index 0000000..b350c31 --- /dev/null +++ b/siege-4.1.6/utils/bombardment.in @@ -0,0 +1,105 @@ +#!/bin/sh +#bombardment is a script that invokes siege with an ever-increasing +#number of users. +#Copyright (C) 2001 Peter J. Hutnick + +#This program is free software; you can redistribute it and/or +#modify it under the terms of the GNU General Public License +#as published by the Free Software Foundation; either version 2 +#of the License, or (at your option) any later version. + +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with this program; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, US + +#For informaion, write the author, Peter Hutnick at phutnick@aperian.com. + + +# Display help if no options or --help specified. +if [ -z $1 ] || [ $1 = --help ] + then + echo "" + echo "usage:" + echo "bombardment [urlfile] [inital # of clients] \ +[inc value] [# of inc] [delay]" + echo "" +# echo "so \"laysiege foo.com 10 5 3\" would test \ +#http:\\\\foo.com\\index.html with 10 then 15 then 20 clients." + echo "" + exit + fi + +# Assign args to useful variables. +site=$1 +startcl=$2 +inc=$3 +numruns=$4 +delay=$5 +serial=`date '+%Y-%m-%dT%H:%M%z'` + +# This script can easily be made to overwhelm system resources (processes +# and filehandles. This bit calculates how many processes it will spawn +# on the last run, and warn if it is more than 600. + +total=$startcl +sub=`expr $inc \* $numruns` +total=$total+$sub + +if [ 600 -lt $(($total)) ] + then + echo "The options you specified will generate more than \ +600 concurrent users. This causes problems on many systems. Press \ + to abort, unless you are sure your system can handle more than \ +600 processes and more than 2048 open files, AND that your user account \ +is allowed to do so." + echo "" + echo "Siege will run with the supplied options in 10 sec." +# I would rather use something like "pause" from DOS than the sleep below, +# but I don't know of any such thing. + sleep 10 + fi + + + +# Set a default delay of 15 seconds if none is specified. +if [ -z $5 ] + then + delay=15 + fi +#echo $delay + + +# Find the number of URLs so we can set -t in siege. This deviates +# somewhat from Siege's normal mode of operation. I assume that each +# entry in the URL list should be hit once per client. + +numurls=`cat $site | grep -v "#" | wc -l` +# Debug-o-rama +#echo "the number of URLs is: " +#echo $numurls +#echo "\n" + +# Now we come to the loop that actually runs Siege. This sould be +# self-explainitory. + +currentcl=$startcl # set running count of clients to inital value + +i=1 +while [ $numruns -ge $i ] + do + echo "Starting run number" $i + %_PREFIX%/siege -f $site -c $currentcl -t $numurls -d $delay >> siege.$serial + currentcl=$(($currentcl+$inc)) + i=$(($i+1)) + #sleep 30 + done + +# Finally, we call siege2csv.pl to convert all the human-readable Siege +# output to CSV, for easy spreadsheet usage. + +siege2csv.pl siege.$serial diff --git a/siege-4.1.6/utils/bootstrap b/siege-4.1.6/utils/bootstrap new file mode 100644 index 0000000..de49f63 --- /dev/null +++ b/siege-4.1.6/utils/bootstrap @@ -0,0 +1,17 @@ +#!/bin/sh +# Jeffrey Fulmer +# Sat Jan 6 11:36:27 EST 2001 - initial creation +# Wed Feb 10 19:29:59 EST 2016 - added manifier +# +# part of siege distribution +# automates the autotools +set -x +aclocal +autoheader +automake --foreign --copy +autoconf +utils/manifier doc/siege.pod doc/siege.1.in 'Siege Load Tester' 1 +utils/manifier doc/siege.config.pod doc/siege.config.1.in 'siege.config utility' 1 +utils/manifier doc/bombardment.pod doc/bombardment.1.in 'bombardment' 1 +utils/manifier doc/bombardment.pod doc/siege2csv.1.in 'siege2csv' 1 + diff --git a/siege-4.1.6/utils/compile b/siege-4.1.6/utils/compile new file mode 100644 index 0000000..531136b --- /dev/null +++ b/siege-4.1.6/utils/compile @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/siege-4.1.6/utils/config.guess b/siege-4.1.6/utils/config.guess new file mode 100644 index 0000000..2e9ad7f --- /dev/null +++ b/siege-4.1.6/utils/config.guess @@ -0,0 +1,1462 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-10-02' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2016 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = hppa2.0w ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + mips64el:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +cat >&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/siege-4.1.6/utils/config.sub b/siege-4.1.6/utils/config.sub new file mode 100644 index 0000000..cc69b06 --- /dev/null +++ b/siege-4.1.6/utils/config.sub @@ -0,0 +1,1823 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2016 Free Software Foundation, Inc. + +timestamp='2016-09-05' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2016 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/siege-4.1.6/utils/install-sh b/siege-4.1.6/utils/install-sh new file mode 100644 index 0000000..0ae12c0 --- /dev/null +++ b/siege-4.1.6/utils/install-sh @@ -0,0 +1,401 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2005-11-07.23 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +posix_glob= +posix_mkdir= + +# Symbolic mode for testing mkdir with directories. +# It is the same as 755, but also tests that "u+" works. +test_mode=u=rwx,g=rx,o=rx,u+wx + +# Desired mode of installed file. +mode=0755 + +# Desired mode of newly created intermediate directories. +# It is empty if not known yet. +intermediate_mode= + +chmodcmd=$chmodprog +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +test -n "$dir_arg" || trap '(exit $?); exit' 1 2 13 15 + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + posix_mkdir=false + if $mkdirprog -m $test_mode -p -- / >/dev/null 2>&1; then + posix_mkdir=true + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./-m "$test_mode" ./-p ./-- 2>/dev/null + fi ;; + esac + + if + $posix_mkdir && { + + # With -d, create the new directory with the user-specified mode. + # Otherwise, create it using the same intermediate mode that + # mkdir -p would use when creating intermediate directories. + # POSIX says that this mode is "$(umask -S),u+wx", so use that + # if umask -S works. + + if test -n "$dir_arg"; then + mkdir_mode=$mode + else + case $intermediate_mode in + '') + if umask_S=`(umask -S) 2>/dev/null`; then + intermediate_mode=$umask_S,u+wx + else + intermediate_mode=$test_mode + fi ;; + esac + mkdir_mode=$intermediate_mode + fi + + $mkdirprog -m "$mkdir_mode" -p -- "$dstdir" + } + then : + else + + # mkdir does not conform to POSIX, or it failed possibly due to + # a race condition. Create the directory the slow way, step by + # step, checking for races as we go. + + case $dstdir in + /*) pathcomp=/ ;; + -*) pathcomp=./ ;; + *) pathcomp= ;; + esac + + case $posix_glob in + '') + if (set -f) 2>/dev/null; then + posix_glob=true + else + posix_glob=false + fi ;; + esac + + oIFS=$IFS + IFS=/ + $posix_glob && set -f + set fnord $dstdir + shift + $posix_glob && set +f + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # Don't fail if two instances are running concurrently. + test -d "$pathcomp" || exit 1 + fi + pathcomp=$pathcomp/ + done + obsolete_mkdir_used=true + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd "$mode" "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$mode" "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dst"; then + $doit $rmcmd -f "$dst" 2>/dev/null \ + || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ + && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ + || { + echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + } || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/siege-4.1.6/utils/ltmain.sh b/siege-4.1.6/utils/ltmain.sh new file mode 100644 index 0000000..0223495 --- /dev/null +++ b/siege-4.1.6/utils/ltmain.sh @@ -0,0 +1,6911 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.22 +TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" + +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + extracted_serial=`expr $extracted_serial + 1` + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + *.obj) xform=obj ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -pg pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ + -t[45]*|-txscale*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. +# for path in $notinst_path; do +# lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` +# deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` +# dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` +# done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + else + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \$*\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` + else + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/siege-4.1.6/utils/manifier b/siege-4.1.6/utils/manifier new file mode 100644 index 0000000..cd10a05 --- /dev/null +++ b/siege-4.1.6/utils/manifier @@ -0,0 +1,14 @@ +#!/usr/bin/perl +use Pod::Man; +my $input = $ARGV[0] or barf(); +my $output = $ARGV[1] or barf(); +my $name = $ARGV[2] or barf(); +my $section = $ARGV[3] or barf(); + +my $parser = Pod::Man->new (release => $VERSION, center => $name, section => $section, release => 'JoeDog'); +$parser->parse_from_file ($input, $output); + +sub barf() { + print "usage: $0 \n"; + exit(1); +} diff --git a/siege-4.1.6/utils/mdate-sh b/siege-4.1.6/utils/mdate-sh new file mode 100644 index 0000000..37171f2 --- /dev/null +++ b/siege-4.1.6/utils/mdate-sh @@ -0,0 +1,92 @@ +#!/bin/sh +# Get modification time of a file or directory and pretty-print it. +# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +# written by Ulrich Drepper , June 1995 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Prevent date giving response in another language. +LANG=C +export LANG +LC_ALL=C +export LC_ALL +LC_TIME=C +export LC_TIME + +# Get the extended ls output of the file or directory. +# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. +if ls -L /dev/null 1>/dev/null 2>&1; then + set - x`ls -L -l -d $1` +else + set - x`ls -l -d $1` +fi +# The month is at least the fourth argument +# (3 shifts here, the next inside the loop). +shift +shift +shift + +# Find the month. Next argument is day, followed by the year or time. +month= +until test $month +do + shift + case $1 in + Jan) month=January; nummonth=1;; + Feb) month=February; nummonth=2;; + Mar) month=March; nummonth=3;; + Apr) month=April; nummonth=4;; + May) month=May; nummonth=5;; + Jun) month=June; nummonth=6;; + Jul) month=July; nummonth=7;; + Aug) month=August; nummonth=8;; + Sep) month=September; nummonth=9;; + Oct) month=October; nummonth=10;; + Nov) month=November; nummonth=11;; + Dec) month=December; nummonth=12;; + esac +done + +day=$2 + +# Here we have to deal with the problem that the ls output gives either +# the time of day or the year. +case $3 in + *:*) set `date`; eval year=\$$# + case $2 in + Jan) nummonthtod=1;; + Feb) nummonthtod=2;; + Mar) nummonthtod=3;; + Apr) nummonthtod=4;; + May) nummonthtod=5;; + Jun) nummonthtod=6;; + Jul) nummonthtod=7;; + Aug) nummonthtod=8;; + Sep) nummonthtod=9;; + Oct) nummonthtod=10;; + Nov) nummonthtod=11;; + Dec) nummonthtod=12;; + esac + # For the first six month of the year the time notation can also + # be used for files modified in the last year. + if (expr $nummonth \> $nummonthtod) > /dev/null; + then + year=`expr $year - 1` + fi;; + *) year=$3;; +esac + +# The result. +echo $day $month $year diff --git a/siege-4.1.6/utils/missing b/siege-4.1.6/utils/missing new file mode 100644 index 0000000..db98974 --- /dev/null +++ b/siege-4.1.6/utils/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2013-10-28.13; # UTC + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/siege-4.1.6/utils/mkinstalldirs b/siege-4.1.6/utils/mkinstalldirs new file mode 100644 index 0000000..259dbfc --- /dev/null +++ b/siege-4.1.6/utils/mkinstalldirs @@ -0,0 +1,158 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2005-06-29.22 + +# Original author: Noah Friedman +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +errstatus=0 +dirmode= + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit $? + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file + shift + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp=$pathcomp/ + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/siege-4.1.6/utils/mkstamp b/siege-4.1.6/utils/mkstamp new file mode 100644 index 0000000..ccc566a --- /dev/null +++ b/siege-4.1.6/utils/mkstamp @@ -0,0 +1,9 @@ +#!/bin/sh +# mkstamp by Jeffrey Fulmer +# Sat Jan 19 16:31:45 EST 2002 + +# configure helper util which +# creates a date stamp for .siegerc + +exec date +"%B-%d-%Y" + diff --git a/siege-4.1.6/utils/siege.config b/siege-4.1.6/utils/siege.config new file mode 100644 index 0000000..598c06e --- /dev/null +++ b/siege-4.1.6/utils/siege.config @@ -0,0 +1,671 @@ +#!/bin/sh +# SCRIPT: siege.config +# AUTHOR: Jeffrey Fulmer +# DATE: Wed Nov 11 11:13:38 EST 2015 +# Moved $HOME/.siegerc to .siege/siege.conf +# DATE: Mon May 28 11:40:28 EDT 2001 +# Orignal file +# SYNOP: This script generates an $HOME/.siegerc +# file from the doc/siegerc.in template. +# Its contents are added to this script by +# configure. The siegerc file template is +# maintained once in $(top_srcdir)/doc. + +rcfile="$HOME/.siegerc" +config="$HOME/.siege/siege.conf" + +if test -f $rcfile; then + rm -f $rcfile +fi + +if test -f $config; then + echo "siege.config" + echo "usage: siege.config [no arguments]" + echo "----------------------------------" + echo "Resource file already install as $config" + echo "Use your favorite editor to change your configuration by" + echo "editing the values in that file or remove it and run this" + echo "program again." + echo "" + exit +fi +cat > $config << '_EOF_' +# Updated by Siege %_VERSION%, %_DATE% +# Copyright 2000-2016 by %_AUTHOR% +# +# Siege configuration file -- edit as necessary +# For more information about configuring and running this program, +# visit: http://www.joedog.org/ + +# +# Variable declarations. You can set variables here for use in the +# directives below. Example: +# PROXY = proxy.joedog.org +# Reference variables inside ${} or $(), example: +# proxy-host = ${PROXY} +# +# +# You can also reference ENVIRONMENT variables without actually +# declaring them, example: +# +# logfile = $(HOME)/var/siege.log + +# +# Verbose mode: With this feature enabled, siege will print the +# result of each transaction to stdout. (Enabled by default) +# +# ex: verbose = true|false +# +verbose = true + +# +# Color mode: This option works in conjunction with verbose mode. +# It tells siege whether or not it should display its output in +# color-coded output. (Enabled by default) +# +# ex: color = on | off +# +color = on + +# +# Quiet mode: With this featured enabled, siege goes mostly silent. +# It will display the opening message and the final stats but nothing +# else. If you enable quiet mode with -g/--get then siege will be +# completely silent (ideal for scripting). In order to gauge the +# success of the run, you'll have to rely on the exit status: +# +# #!/bin/sh +# +# SIEGE=/home/jdfulmer/bin/siege +# +# $SIEGE -g https://www.joedog.org/ +# if [ $? -eq 0 ] ; then +# echo "Whoo hoo!" +# else +# echo "D'oh!" +# fi +# +# This is the same as running siege with -q/--quiet +# +# Ex: quiet = true +# +quiet = false + +# +# JSON output - With this feature enabled, siege will print the final stats as +# JSON to stdout. It monopolizes stdout, superceding verbose and debug modes. +# +# The default value is false. +# +# ex: json_output = true | false +# +json_output = false + + +# +# Show logfile location. By default, siege displays the logfile +# location at the end of every run when logging. You can turn this +# message off with this directive. +# +# ex: show-logfile = false +# +show-logfile = true + +# +# Default logging status, true turns logging on. +# ex: logging = true|false +# +logging = false + +# +# Logfile, the default siege logfile is $PREFIX/var/siege.log This +# directive allows you to choose an alternative log file. Environment +# variables may be used as shown in the examples: +# +# ex: logfile = /home/jeff/var/log/siege.log +# logfile = ${HOME}/var/log/siege.log +# logfile = ${LOGFILE} +# +# logfile = + + +# +# Get method: Use this directive to select an HTTP method for siege +# when it's run in get mode, i.e., siege -g/--get URL. You may select +# GET or HEAD. The default method is HEAD. As expected HEAD prints just +# the headers and GET prints the entire page. +# +# NOTE: This only applies when siege is invoked with -g/--get. All +# other requests methods will be made on the basis of the URL. +# +# example: gmethod = GET +# +gmethod = HEAD + +# +# Parser +# This directive allows you to turn on the html parser. With this +# feature enabled, siege will harvest resources like style sheets, +# images, javascript, etc. and make additional requests for those +# items. +# +# HTML parsing was added to version 4.0.0 It is enabled by default. +# When the parser is enabled, care must be given to other features. +# For example, we allow to set accept-encoding to anything you'd like +# but if you want to parse those pages, then you MUST set the encoding +# to a supported one. +# +# With the default options set, you should be able to enable the parser +# with success. +# +# Use this feature to enable it. (true = on, false = off) +# +# Example: parser = true +# +parser = true + +# +# No-follow +# When the parser is enabled, siege will grab HTML resources within +# the page and download those elements as well. This directive allows +# you to specify hostnames to which you do NOT want to make requests. +# +# You can repeat this directive as many times as you like. Enter one +# per line with 'key = value' syntax. +# +# Example: nofollow = www.joedog.org +# +nofollow = ad.doubleclick.net +nofollow = pagead2.googlesyndication.com +nofollow = ads.pubsqrd.com +nofollow = ib.adnxs.com + +# +# CSV Verbose format: with this option, you can choose to format +# verbose output in traditional siege format or comma separated +# format. The latter will allow you to redirect output to a file +# for import into a spread sheet, i.e., siege > file.csv +# +# ex: csv = true|false (default false) +# +# csv = true + +# +# Timestamp format: with this option, you can choose to print a +# timestamp each line of output. +# +# example: timestamp = true|false (default false) +# +# [Sat, 2010-11-20 10:39:13] HTTP/1.1 200 0.12 secs: 4003 bytes ==> / +# +# timestamp = true + +# +# Full URL verbose format: By default siege displays the URL path and +# not the full URL. With this option, you can instruct siege to show +# the complete URL. +# +# ex: fullurl = true|false (default false) +# +# HTTP/1.1 301 0.34 secs: 311 bytes ==> GET https://www.joedog.org/ +# +# fullurl = true + +# +# Display id: in verbose mode, display the siege user id associated +# with the HTTP transaction information +# +# ex: display-id = true|false +# +# 100) HTTP/1.1 200 0.31 secs: 35338 bytes ==> GET /images/bbc.jpg +# +# display-id = + +# +# Limit: This directive places a cap on the number of threads siege +# will generate. The default value is 255 which corresponds with +# apache's default value. If you schedule more clients than apache is +# configured to handle, then requests will back up and you will make a +# mess. DO NOT INCREASE THIS NUMBER UNLESS YOU CONFIGURED APACHE TO +# HANDLE MORE THAN 256 SIMULTANEOUS REQUESTS. +# +# ex: limit = 1023 (default is 255) +# +limit = 255 + +# +# HTTP protocol. Options HTTP/1.1 and HTTP/1.0. Some webservers have +# broken implementation of the 1.1 protocol which skews throughput +# evaluations. If you notice some siege clients hanging for extended +# periods of time, change this to HTTP/1.0 +# +# ex: protocol = HTTP/1.1 +# protocol = HTTP/1.0 +# +protocol = HTTP/1.1 + +# +# Chunked encoding is required by HTTP/1.1 protocol but siege allows +# you to turn it off as desired. This feature is generally more useful +# to siege developers than siege users. You should probably leave it +# set to 'true' +# +# ex: chunked = true +# +chunked = true + +# +# Cache revalidation. Siege supports cache revalidation for both ETag +# and Last-modified headers. If a copy is still fresh, the server +# responds with 304. While this feature is required for HTTP/1.1, it +# may not be welcomed for load testing. We allow you to breach the +# protocol and turn off caching +# +# HTTP/1.1 200 0.00 secs: 2326 bytes ==> /apache_pb.gif +# HTTP/1.1 304 0.00 secs: 0 bytes ==> /apache_pb.gif +# HTTP/1.1 304 0.00 secs: 0 bytes ==> /apache_pb.gif +# +# Siege also supports Cache-control headers. Consider this server +# response: Cache-Control: max-age=3 +# That tells siege to cache the file for three seconds. While it +# doesn't actually store the file, it will logically grab it from +# its cache. In verbose output, it designates a cached resource +# with (c): +# +# HTTP/1.1 200 0.25 secs: 159 bytes ==> GET /expires/ +# HTTP/1.1 200 1.48 secs: 498419 bytes ==> GET /expires/Otter_in_Southwold.jpg +# HTTP/1.1 200 0.24 secs: 159 bytes ==> GET /expires/ +# HTTP/1.1 200(C) 0.00 secs: 0 bytes ==> GET /expires/Otter_in_Southwold.jpg +# +# NOTE: with color enabled, cached URLs appear in green +# +# ex: cache = true +# +cache = false + +# +# Connection directive. Options "close" and "keep-alive" Starting with +# version 2.57, siege implements persistent connections in accordance +# to RFC 2068 using both chunked encoding and content-length directives +# to determine the page size. +# +# To run siege with persistent connections set this to keep-alive. +# +# CAUTION: Use the keep-alive directive with care. +# DOUBLE CAUTION: This directive does not work well on HPUX +# TRIPLE CAUTION: We don't recommend you set this to keep-alive +# ex: connection = close +# connection = keep-alive +# +connection = close + +# +# Default number of simulated concurrent users. This feature +# corresponds with the -c NUM / --concurrent=NULL command line +# argument. The command line takes precedent over this directive. +# +# ex: concurrent = 50 +# +concurrent = 25 + +# +# Default duration of the siege. The right hand argument has a modifier +# which specifies the time units, H=hours, M=minutes, and S=seconds. If +# a modifier is not specified, then minutes are assumed. +# +# NOTE: The command line argument -t5m / --time=5m takes precedence +# over this directive +# +# ex: time = 50M +# +# time = + +# +# Repetitions. The length of siege may be specified in client reps +# rather than a time duration. Instead of specifying a time span, +# you can tell each siege instance to hit the server X number of times. +# So if you chose 'reps = 20' and you've selected 10 concurrent users, +# then siege will hit the server 200 times. +# +# NOTE: The command line argument -r 5 / --reps=5 / --reps=once takes +# precedence over this directive +# +# ex: reps = 20 +# +# reps = + +# +# URLs file: Set at configuration time, the default URLs file is +# PREFIX/etc/urls.txt So if you configured the siege build with +# --prefix=/usr/local then the urls.txt file is installed in +# /usr/local/etc/urls.txt. Use the "file = " directive to configure +# an alternative URLs file. You may use environment variables +# as shown in the examples below: +# +# ex: file = /export/home/jdfulmer/MYURLS.txt +# file = $HOME/etc/urls.txt +# file = $URLSFILE +# +# NOTE: The command line -f FILE / --file=FILE takes precedence over +# this directive +# +# file = + +# +# Default URL, this is a single URL that you want to test. This is +# usually set at the command line with the -u option. When used, this +# option overrides the urls.txt (-f FILE/--file=FILE) option. You will +# HAVE to comment this out for in order to use the urls.txt file option. +# +# NOTE: you may do the same thing by passing a URL to siege at the +# command line: +# $ siege -c10 -r10 "www.joedog.org/" +# +# Generally, it's a good idea to wrap a command line URL in quotes +# +# ex: url = https://shemp.whoohoo.com/docs/index.jsp +# +# url = + +# +# Default delay between each request by a single thread. This value +# is not included in the request time. If a thread sleeps for two +# seconds then completes a 0.5 second request, the time of the request +# is 0.5 seconds, not 2.5 seconds. +# +# NOTE: the command line -d NUM / --delay=NULL takes precedent over +# this directive +# +# ex: delay = 1.5 +# delay = 5 +# +delay = 0.0 + +# +# Connection timeout value. Set the value in seconds for socket +# connection timeouts. The default value is 30 seconds. +# +# ex: timeout = 30 +# +# timeout = + +# +# Session expiration: This directive allows you to delete all cookies +# after you pass through the URLs. This means siege will grab a new +# session with each run through its URLs. The default value is false. +# +# ex: expire-session = true +# +# expire-session = + +# +# Cookie support: by default siege accepts cookies. This directive is +# available to disable that support. Set cookies to 'false' to refuse +# cookies. Set it to 'true' to accept them. The default value is true. +# If you want to maintain state with the server, then this MUST be set +# to true. +# +# ex: cookies = false +# +# cookies = + +# +# Failures: This is the number of total connection failures allowed +# before siege aborts. Connection failures (timeouts, socket failures, +# etc.) are combined with 400 and 500 level errors in the final stats, +# but those errors do not count against the abort total. If you set +# this total to 10, then siege will abort after ten socket timeouts, +# but it will NOT abort after ten 404s. This is designed to prevent a +# run-away mess on an unattended siege. +# +# The default value is 1024 +# +# ex: failures = 50 +# +# failures = + +# +# Internet simulation. If true, siege clients will hit the URLs in the +# urls.txt file randomly, thereby simulating internet usage. If false, +# siege will run through the urls.txt file in order from first to last +# and back again. +# +# ex: internet = true +# +internet = false + +# +# Default benchmarking value, If true, there is NO delay between server requests, +# siege runs as fast as the web server and the network will let it. Set this to +# false for load testing. +# +# ex: benchmark = true +# +benchmark = false + +# +# User-agent: With this directive you can set the siege user-agent The default +# agent is: JoeDog/1.40 [en] (X11; I; Siege #.##) With this directive, you can +# mimic various browsers or you can make up something fun. Limey, our English +# bulldog, was recovering from minor surgery at the time we added this feature +# so we like to dedicate the example in his honor: +# +# ex: user-agent = Limey The Bulldog +# +# Other examples harvested from our logs: +# Chrome: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36k +# IE 6: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) +# IE 7: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30) +# IE 8: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1) +# IE 9: Mozilla/5.0 (MSIE 9.0; Windows NT 6.1; Trident/5.0) +# IE 10: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0) +# FF 3.6: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.4410) Gecko/20110902 Firefox/3.6 +# FF 9: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0 +# Safari: Mozilla/5.0 (Windows; U; Windows NT 6.1; tr-TR) AppleWebKit/533.20.25 Version/5.0.4 Safari/533.20.27 +# Opera: Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00 +# iPhone: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; en-us) Version/5.0.2 Mobile/8H7 Safari/6533.18.5 +# Android: Mozilla/5.0 (Linux; U; Android 2.3; en-us) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9 +# Kindle: Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 +# Goolge: Googlebot/2.1 (+http://www.googlebot.com/bot.html) +# Yahoo: Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp) +# +# user-agent = + +# +# Accept-encoding. This option allows you to report to the server the +# various content-encodings you support. If you're not using HTML parser +# (parser = false), then you can specify any encoding. When the parser is +# disabled, siege just reads the content then immediately discards it. +# However, if you use the parser, then you MUST set a supported content +# encoder. Currently, siege supports two: deflate and gzip. +# +# NOTE: We plan to add support for brotli and bzip2; you can hasten +# that effort by showing us some love: +# +# +# ex: accept-encoding = +# accept-encoding = gzip +# accept-encoding = deflate +# accept-encoding = gzip, deflate +accept-encoding = gzip, deflate + +# +# URL escaping was first added to version 3.0.3. It was considered +# experimental until version 3.0.9 when it was turned on by default. +# +# This feature remains in siege as a mechanism to turn off escape +# encoding. Here is an example of two URLs. The first has spaces +# included in the file name and in the second those spaces were +# encoded to %20. +# +# http://www.joedog.org/jukebox.php?band=the days of new +# http://www.joedog.org/jukebox.php?band=the%20days%20of%20the%20new +# +# ex: url-escaping = false +# +url-escaping = true + +# +# WWW-Authenticate credentials. Currently siege supports two types +# of HTTP authentication: digest and basic. It has partial support for +# Microsoft's NTLM but in practice that only works with the -g/--get +# option. (as of siege 3.1.1) +# +# When siege makes a request for a page that requires user authentication, +# it will search its logins for a matching realm. If it finds credentials +# for a realm, it will attempt to login with that username and password. +# +# If it fails to match the realm, it will use its default login credentials +# (which are designated with the keyword "all" or no specified realm. +# +# If you do not supply a realm, then it will default to "all" which instructs +# siege to send as default. +# +# You may enter many logins with each on its own separate line. The only +# limitation is memory and realm name. You can't use the same realm name +# more than once. +# +# ex: login = jdfulmer:topsecret:Admin +# login = jeff:supersecret:all +# login = jeff:supersecret +# +# login = + +# +# Login URL. This feature was designed to provide a login url in order +# to kick off a session with form-based authentication. If this directive +# has a value, then every siege client will make a request to it BEFORE it +# uses its list of URLs. +# +# NOTE: siege will only make this request once. After it's hit this URL +# it will not request it again until its next start-up. +# +# ex: login-url = http://eos.joedog.org/login.jsp POST name=jeff&pass=foo +# +# Starting with version 2.69, siege can make multiple login request on a +# thread-by-thread basis. As each thread is created it grab the next unused +# login URL in the list. If you schedule more threads than login-urls, new +# threads will wrap back around and loop back through the list. +# +# ex: login-url = http://www.haha.com/login.php?name=homer&pass=whoohoo +# login-url = http://www.haha.com/login.php?name=marge&pass=ohhomie +# login-url = http://www.haha.com/login.php?name=bart&pass=eatMyShorts +# +# login-url = + +# +# FTP login - There are two ways to login to an ftp server with siege. You +# can use this directive to set login credentials or you can set them in a +# URL in RFC-1738 format: ftp://user:pass@host.com/ink.jpg +# +# The format for this directive is USER:PASS:HOST separated by colon ':' +# The host field is optional. If you don't set a host, then siege will send +# the same user:pass to every FTP server. You may use this directive MULTIPLE +# times. Siege will store each instance in memory and send the appropriate +# credentials at login time depending on the hostname in the URL. +# +# ex: ftp-login: jdfulmer:whoohoo:ftp.joedog.org +# ftp-login: jdfulmer:password +# +# ftp-login = + +# +# FTP unique - This directive determines whether siege will upload files with +# the same name (and therefore overwrite whatever is on disk) or upload files +# each with a unique name. If true, siege will rewrite the file name with a +# timestamp in its name, i.e., p.jpg => p-3086060432.jpg +# +# The default value is true. +# +# ex: unique = false +# +unique = true + +# +# SSL-cert: This optional feature allows you to specify a path to a client +# certificate. It is not necessary to specify a certificate in order to use +# https. If you don't know why you would want one, then you probably don't need +# it. Use openssl to generate a certificate and key with the following command: +# +# $ openssl req -nodes -new -days 365 -newkey rsa:1024 -keyout key.pem -out cert.pem +# +# Specify a path to cert.pem as follows: +# ex: ssl-cert = /home/jeff/.certs/cert.pem +# +# ssl-cert = + +# +# SSL-key: Use this option to specify the key you generated with the command +# above. ex: ssl-key = /home/jeff/.certs/key.pem You may actually skip this +# option and combine both your cert and your key in a single file: +# $ cat key.pem > client.pem +# $ cat cert.pem >> client.pem +# Now set the path for ssl-cert: +# ex: ssl-cert = /home/jeff/.certs/client.pem +# (in this scenario, you comment out ssl-key) +# +# ssl-key = + +# +# SSL-timeout: This option sets a connection timeout for the ssl library +# ex: ssl-timeout = 30 +# +# ssl-timeout = + +# +# SSL-ciphers +# You can use this feature to select a specific ssl cipher for HTTPs. To +# view the ones available with your library run the following command: +# +# $ openssl ciphers +# +# ex: ssl-ciphers = EXP-RC4-MD5 +# +# ssl-ciphers = + +# +# Proxy Host: You can use siege to test a proxy server but you need to +# configure it to use one. You'll need to name a proxy host and the port +# it's listening on. The settings are proxy-host and proxy-port. The +# following example shows how to use them: +# +# ex: proxy-host = proxy.joedog.org +# proxy-port = 3123 +# +# proxy-host = +# proxy-port = + +# +# Proxy-Authenticate: When siege hits a proxy server which requires +# username and password authentication, it will this username and +# password to the server. The format is username, password and optional +# realm each separated by a colon. You may enter more than one proxy-login +# as long as each one has a different realm. If you do not enter a realm, +# then siege will send that login information to all proxy challenges. If +# you have more than one proxy-login, then scout will attempt to match the +# login to the realm. +# +# ex: proxy-login: jeff:secret:corporate +# proxy-login: jeff:whoohoo +# +# proxy-login = + +# +# Redirection support. By default, siege will follow a HTTP redirect to the +# Location provided by the server. If it's parser is enabled, then it will +# also follow and HTML META redirect. If, for some reason, you do not wish +# wish to follow redirects, then set this redirective to false. +# +# NOTE: redirect support is enabled by default. +# +# ex: follow-location = false +# +# follow-location = + +# +# end of siegerc +_EOF_ +echo "New configuration template added to $HOME/.siege" +echo "Run siege -C to view the current settings in that file" +exit + diff --git a/siege-4.1.6/utils/siege.config.in b/siege-4.1.6/utils/siege.config.in new file mode 100644 index 0000000..ae38ccf --- /dev/null +++ b/siege-4.1.6/utils/siege.config.in @@ -0,0 +1,32 @@ +#!%_SHELL% +# SCRIPT: siege.config +# AUTHOR: Jeffrey Fulmer +# DATE: Wed Nov 11 11:13:38 EST 2015 +# Moved $HOME/.siegerc to .siege/siege.conf +# DATE: Mon May 28 11:40:28 EDT 2001 +# Orignal file +# SYNOP: This script generates an $HOME/.siegerc +# file from the doc/siegerc.in template. +# Its contents are added to this script by +# configure. The siegerc file template is +# maintained once in $(top_srcdir)/doc. + +rcfile="$HOME/.siegerc" +config="$HOME/.siege/siege.conf" + +if test -f $rcfile; then + rm -f $rcfile +fi + +if test -f $config; then + echo "siege.config" + echo "usage: siege.config [no arguments]" + echo "----------------------------------" + echo "Resource file already install as $config" + echo "Use your favorite editor to change your configuration by" + echo "editing the values in that file or remove it and run this" + echo "program again." + echo "" + exit +fi +cat > $config << '_EOF_' diff --git a/siege-4.1.6/utils/siege2csv.in b/siege-4.1.6/utils/siege2csv.in new file mode 100644 index 0000000..7b8ed63 --- /dev/null +++ b/siege-4.1.6/utils/siege2csv.in @@ -0,0 +1,242 @@ +#!%_PERL% +#siege2csv.pl is a perl script that parses the output from bombardmnet.sh +#into comma separated values for easy use with spreadsheets. +#Copyright (C) 2001 Peter J. Hutnick + +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with this program; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, US + +#For information, write the author, Peter Hutnick at phutnick@aperian.com. + +open (INPUT, "< $ARGV[0]") + or die "Can't open data file or no data file specified.\n"; + +{ + +local $/ = undef; +@list = split('\n', ); # each line becomes an string in array list + +} + +close(INPUT); + +$numchunks = scalar(@list); # Find out how many strings, so we can drive + # loops + + +# This ugly thing is where all the work gets done. It maintains data +# associtivity by relying on the coinidence that all the data "just ends +# up" in order. I may try to clean this up at a future date. + +$usersub=0; +$transub=0; +$elapsub=0; +$datasub=0; +$respsub=0; +$tratesub=0; +$tputsub=0; +$consub=0; +$codesub=0; + +for ($i=0; $numchunks > $i; $i++) +{ + +# print $list[$i]; +# print "\n"; + if ($list[$i] =~ /.. Preparing \d* concurrent users.*/ ) + { +# print $list[$i]; print "\n"; + $numusers[$usersub] = $list[$i]; + $usersub++; + } + elsif ($list[$i] =~ /Transactions.*/) + { + $transactions[$transub] = $list[$i]; + $transub++; + } + elsif ($list[$i] =~ /Elapsed.*/) + { + $elapsed[$elapsub] = $list[$i]; + $elapsub++; + } + elsif ($list[$i] =~ /Data transferred.*/) + { + $data[$datasub] = $list[$i]; + $datasub++; + } + elsif ($list[$i] =~ /Response.*/) + { + $response[$respsub] = $list[$i]; + $respsub++; + } + elsif ($list[$i] =~ /Transaction rate.*/) + { + $trate[$tratesub] = $list[$i]; + $tratesub++; + } + elsif ($list[$i] =~ /Throughput.*/) + { + $tput[$tputsub] = $list[$i]; + $tputsub++; + } + elsif ($list[$i] =~ /Concurrency.*/) + { + $concurr[$consub] = $list[$i]; + $consub++; + } + elsif ($list[$i] =~ /Successful transactions.*/) + { + $code200[$codesub] = $list[$i]; + $codesub++; + } + + +} + + + +for ($i=0; $usersub > $i; $i++) +{ +# print "Number of Users\n"; + + $numusers[$i] =~ tr/a-zA-Z//d; + $numusers[$i] =~ tr/://d; + $numusers[$i] =~ tr/\.//d; + $numusers[$i] =~ tr/\*//d; + $numusers[$i] =~ tr/\t//d; + $numusers[$i] =~ tr/ //s; +# print $numusers[$i]; +} + +# These for loops _try_ to prune the strings down to the numeric +# values. The last one (code 200) does not work well because of the +# numeric elemnet of the description. + +# Also, I can't get rid of that last leading space. Doesn't seem to +# bother Excel 2000, but for neatness this should be addressed. + +# I don't know how to do perl functions. Clearly a function would be +# better here. + +for ($i=0; $transub > $i; $i++) +{ +# print "Number of Hits\n"; + + $transactions[$i] =~ tr/a-zA-Z//d; + $transactions[$i] =~ tr/://d; + $transactions[$i] =~ tr/\t//d; + $transactions[$i] =~ tr/ //s; +# print $transactions[$i]; +} + + +for ($i=0; $elapsub > $i; $i++) +{ +# print "Elapsed Time\n"; + + $elapsed[$i] =~ tr/a-zA-Z//d; + $elapsed[$i] =~ tr/://d; + $elapsed[$i] =~ tr/\t//d; + $elapsed[$i] =~ tr/ //s; +# print $elapsed[$i]; +} + + +for ($i=0; $datasub > $i; $i++) +{ +# print "Data Transferred\n"; + + $data[$i] =~ tr/a-zA-Z//d; + $data[$i] =~ tr/://d; + $data[$i] =~ tr/\t//d; + $data[$i] =~ tr/ //s; +# print $data[$i]; +} + + +for ($i=0; $respsub > $i; $i++) +{ +# print "Response Time\n"; + + $response[$i] =~ tr/a-zA-Z//d; + $response[$i] =~ tr/://d; + $response[$i] =~ tr/\t//d; + $response[$i] =~ tr/ //s; +# print $response[$i]; +} + + +for ($i=0; $tratesub > $i; $i++) +{ +# print "Transaction Rate\n"; + + $trate[$i] =~ tr/a-zA-Z//d; + $trate[$i] =~ tr/://d; + $trate[$i] =~ tr/\///d; + $trate[$i] =~ tr/\t//d; + $trate[$i] =~ tr/ //s; +# print $trate[$i]; +} + + +for ($i=0; $tputsub > $i; $i++) +{ +# print "Throughput\n"; + + $tput[$i] =~ tr/a-zA-Z//d; + $tput[$i] =~ tr/://d; + $tput[$i] =~ tr/\///d; + $tput[$i] =~ tr/\t//d; + $tput[$i] =~ tr/ //s; +# print $tput[$i]; +} + + +for ($i=0; $consub > $i; $i++) +{ +# print "Concurrency\n"; + + $concurr[$i] =~ tr/a-zA-Z//d; + $concurr[$i] =~ tr/://d; + $concurr[$i] =~ tr/\t//d; + $concurr[$i] =~ tr/ //s; +# print $concurr[$i]; +} +for ($i=0; $codesub > $i; $i++) +{ +# print "Code 200\n"; + + $code200[$i] =~ tr/a-zA-Z//d; + $code200[$i] =~ tr/200/ /d; + $code200[$i] =~ tr/\t//d; + $code200[$i] =~ tr/://d; + $code200[$i] =~ tr/ //s; +# print $code200[$i]; +} + +# Okay, data is as good as it is going to get. Let's start writing the +# output CSV file. + +open (OUTFILE, "> $ARGV[0].csv") + or die "Cannot write to designated output file: $!\n"; +# The next line sets up the colum titles. +# The leading comma in ",Transactions" causes the number of users colum to +# be titleless. I suppose it could be Users in front instead . . . +print OUTFILE ",Transactions,Elapsed Time,Data Transferred,Response Time,Transaction Rate,Throughput,Concurrency,Code 200 (note that this is horribly broken.) \n"; + +# Here we fill the data in the colums. +for ($i=0; $transub > $i; $i++) +{ + print OUTFILE $numusers[$i], ",", $transactions[$i], ",", +$elapsed[$i], ",", $data[$i], ",", $response[$i], ",", $trate[$i], ",", $tput[$i], ",", $concurr[$i], ",", $code200[$i]; + print OUTFILE "\n"; +} + + +close (OUTFILE); diff --git a/siege-4.1.6/utils/siege2csv.pl b/siege-4.1.6/utils/siege2csv.pl new file mode 100644 index 0000000..110b537 --- /dev/null +++ b/siege-4.1.6/utils/siege2csv.pl @@ -0,0 +1,242 @@ +#!/usr/bin/perl +#siege2csv.pl is a perl script that parses the output from bombardmnet.sh +#into comma separated values for easy use with spreadsheets. +#Copyright (C) 2001 Peter J. Hutnick + +#This program is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with this program; if not, write to the Free Software +#Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, US + +#For information, write the author, Peter Hutnick at phutnick@aperian.com. + +open (INPUT, "< $ARGV[0]") + or die "Can't open data file or no data file specified.\n"; + +{ + +local $/ = undef; +@list = split('\n', ); # each line becomes an string in array list + +} + +close(INPUT); + +$numchunks = scalar(@list); # Find out how many strings, so we can drive + # loops + + +# This ugly thing is where all the work gets done. It maintains data +# associtivity by relying on the coinidence that all the data "just ends +# up" in order. I may try to clean this up at a future date. + +$usersub=0; +$transub=0; +$elapsub=0; +$datasub=0; +$respsub=0; +$tratesub=0; +$tputsub=0; +$consub=0; +$codesub=0; + +for ($i=0; $numchunks > $i; $i++) +{ + +# print $list[$i]; +# print "\n"; + if ($list[$i] =~ /.. Preparing \d* concurrent users.*/ ) + { +# print $list[$i]; print "\n"; + $numusers[$usersub] = $list[$i]; + $usersub++; + } + elsif ($list[$i] =~ /Transactions.*/) + { + $transactions[$transub] = $list[$i]; + $transub++; + } + elsif ($list[$i] =~ /Elapsed.*/) + { + $elapsed[$elapsub] = $list[$i]; + $elapsub++; + } + elsif ($list[$i] =~ /Data transferred.*/) + { + $data[$datasub] = $list[$i]; + $datasub++; + } + elsif ($list[$i] =~ /Response.*/) + { + $response[$respsub] = $list[$i]; + $respsub++; + } + elsif ($list[$i] =~ /Transaction rate.*/) + { + $trate[$tratesub] = $list[$i]; + $tratesub++; + } + elsif ($list[$i] =~ /Throughput.*/) + { + $tput[$tputsub] = $list[$i]; + $tputsub++; + } + elsif ($list[$i] =~ /Concurrency.*/) + { + $concurr[$consub] = $list[$i]; + $consub++; + } + elsif ($list[$i] =~ /Successful transactions.*/) + { + $code200[$codesub] = $list[$i]; + $codesub++; + } + + +} + + + +for ($i=0; $usersub > $i; $i++) +{ +# print "Number of Users\n"; + + $numusers[$i] =~ tr/a-zA-Z//d; + $numusers[$i] =~ tr/://d; + $numusers[$i] =~ tr/\.//d; + $numusers[$i] =~ tr/\*//d; + $numusers[$i] =~ tr/\t//d; + $numusers[$i] =~ tr/ //s; +# print $numusers[$i]; +} + +# These for loops _try_ to prune the strings down to the numeric +# values. The last one (code 200) does not work well because of the +# numeric elemnet of the description. + +# Also, I can't get rid of that last leading space. Doesn't seem to +# bother Excel 2000, but for neatness this should be addressed. + +# I don't know how to do perl functions. Clearly a function would be +# better here. + +for ($i=0; $transub > $i; $i++) +{ +# print "Number of Hits\n"; + + $transactions[$i] =~ tr/a-zA-Z//d; + $transactions[$i] =~ tr/://d; + $transactions[$i] =~ tr/\t//d; + $transactions[$i] =~ tr/ //s; +# print $transactions[$i]; +} + + +for ($i=0; $elapsub > $i; $i++) +{ +# print "Elapsed Time\n"; + + $elapsed[$i] =~ tr/a-zA-Z//d; + $elapsed[$i] =~ tr/://d; + $elapsed[$i] =~ tr/\t//d; + $elapsed[$i] =~ tr/ //s; +# print $elapsed[$i]; +} + + +for ($i=0; $datasub > $i; $i++) +{ +# print "Data Transferred\n"; + + $data[$i] =~ tr/a-zA-Z//d; + $data[$i] =~ tr/://d; + $data[$i] =~ tr/\t//d; + $data[$i] =~ tr/ //s; +# print $data[$i]; +} + + +for ($i=0; $respsub > $i; $i++) +{ +# print "Response Time\n"; + + $response[$i] =~ tr/a-zA-Z//d; + $response[$i] =~ tr/://d; + $response[$i] =~ tr/\t//d; + $response[$i] =~ tr/ //s; +# print $response[$i]; +} + + +for ($i=0; $tratesub > $i; $i++) +{ +# print "Transaction Rate\n"; + + $trate[$i] =~ tr/a-zA-Z//d; + $trate[$i] =~ tr/://d; + $trate[$i] =~ tr/\///d; + $trate[$i] =~ tr/\t//d; + $trate[$i] =~ tr/ //s; +# print $trate[$i]; +} + + +for ($i=0; $tputsub > $i; $i++) +{ +# print "Throughput\n"; + + $tput[$i] =~ tr/a-zA-Z//d; + $tput[$i] =~ tr/://d; + $tput[$i] =~ tr/\///d; + $tput[$i] =~ tr/\t//d; + $tput[$i] =~ tr/ //s; +# print $tput[$i]; +} + + +for ($i=0; $consub > $i; $i++) +{ +# print "Concurrency\n"; + + $concurr[$i] =~ tr/a-zA-Z//d; + $concurr[$i] =~ tr/://d; + $concurr[$i] =~ tr/\t//d; + $concurr[$i] =~ tr/ //s; +# print $concurr[$i]; +} +for ($i=0; $codesub > $i; $i++) +{ +# print "Code 200\n"; + + $code200[$i] =~ tr/a-zA-Z//d; + $code200[$i] =~ tr/200/ /d; + $code200[$i] =~ tr/\t//d; + $code200[$i] =~ tr/://d; + $code200[$i] =~ tr/ //s; +# print $code200[$i]; +} + +# Okay, data is as good as it is going to get. Let's start writing the +# output CSV file. + +open (OUTFILE, "> $ARGV[0].csv") + or die "Cannot write to designated output file: $!\n"; +# The next line sets up the colum titles. +# The leading comma in ",Transactions" causes the number of users colum to +# be titleless. I suppose it could be Users in front instead . . . +print OUTFILE ",Transactions,Elapsed Time,Data Transferred,Response Time,Transaction Rate,Throughput,Concurrency,Code 200 (note that this is horribly broken.) \n"; + +# Here we fill the data in the colums. +for ($i=0; $transub > $i; $i++) +{ + print OUTFILE $numusers[$i], ",", $transactions[$i], ",", +$elapsed[$i], ",", $data[$i], ",", $response[$i], ",", $trate[$i], ",", $tput[$i], ",", $concurr[$i], ",", $code200[$i]; + print OUTFILE "\n"; +} + + +close (OUTFILE); diff --git a/siege-latest.tar.gz b/siege-latest.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..aec18f06111a09ccf836a07732d849537ea42915 GIT binary patch literal 527103 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%0D@>4q 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