http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/libminifi/src/ListenHTTP.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/ListenHTTP.cpp b/libminifi/src/ListenHTTP.cpp new file mode 100644 index 0000000..b86dad6 --- /dev/null +++ b/libminifi/src/ListenHTTP.cpp @@ -0,0 +1,395 @@ +/** + * @file ListenHTTP.cpp + * ListenHTTP class implementation + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include <sstream> +#include <stdio.h> +#include <string> +#include <iostream> +#include <fstream> +#include <uuid/uuid.h> + +#include <CivetServer.h> + +#include "ListenHTTP.h" + +#include "TimeUtil.h" +#include "ProcessContext.h" +#include "ProcessSession.h" +#include "ProcessSessionFactory.h" + +const std::string ListenHTTP::ProcessorName("ListenHTTP"); + +Property ListenHTTP::BasePath("Base Path", "Base path for incoming connections", "contentListener"); +Property ListenHTTP::Port("Listening Port", "The Port to listen on for incoming connections", ""); +Property ListenHTTP::AuthorizedDNPattern("Authorized DN Pattern", "A Regular Expression to apply against the Distinguished Name of incoming connections. If the Pattern does not match the DN, the connection will be refused.", ".*"); +Property ListenHTTP::SSLCertificate("SSL Certificate", "File containing PEM-formatted file including TLS/SSL certificate and key", ""); +Property ListenHTTP::SSLCertificateAuthority("SSL Certificate Authority", "File containing trusted PEM-formatted certificates", ""); +Property ListenHTTP::SSLVerifyPeer("SSL Verify Peer", "Whether or not to verify the client's certificate (yes/no)", "no"); +Property ListenHTTP::SSLMinimumVersion("SSL Minimum Version", "Minimum TLS/SSL version allowed (SSL2, SSL3, TLS1.0, TLS1.1, TLS1.2)", "SSL2"); +Property ListenHTTP::HeadersAsAttributesRegex("HTTP Headers to receive as Attributes (Regex)", "Specifies the Regular Expression that determines the names of HTTP Headers that should be passed along as FlowFile attributes", ""); + +Relationship ListenHTTP::Success("success", "All files are routed to success"); + +void ListenHTTP::initialize() +{ + _logger->log_info("Initializing ListenHTTP"); + + //! Set the supported properties + std::set<Property> properties; + properties.insert(BasePath); + properties.insert(Port); + properties.insert(AuthorizedDNPattern); + properties.insert(SSLCertificate); + properties.insert(SSLCertificateAuthority); + properties.insert(SSLVerifyPeer); + properties.insert(SSLMinimumVersion); + properties.insert(HeadersAsAttributesRegex); + setSupportedProperties(properties); + //! Set the supported relationships + std::set<Relationship> relationships; + relationships.insert(Success); + setSupportedRelationships(relationships); +} + +void ListenHTTP::onSchedule(ProcessContext *context, ProcessSessionFactory *sessionFactory) +{ + + std::string basePath; + + if (!context->getProperty(BasePath.getName(), basePath)) + { + _logger->log_info("%s attribute is missing, so default value of %s will be used", + BasePath.getName().c_str(), + BasePath.getValue().c_str()); + basePath = BasePath.getValue(); + } + + basePath.insert(0, "/"); + + std::string listeningPort; + + if (!context->getProperty(Port.getName(), listeningPort)) + { + _logger->log_error("%s attribute is missing or invalid", + Port.getName().c_str()); + return; + } + + std::string authDNPattern; + + if (context->getProperty(AuthorizedDNPattern.getName(), authDNPattern) && !authDNPattern.empty()) + { + _logger->log_info("ListenHTTP using %s: %s", + AuthorizedDNPattern.getName().c_str(), + authDNPattern.c_str()); + } + + std::string sslCertFile; + + if (context->getProperty(SSLCertificate.getName(), sslCertFile) && !sslCertFile.empty()) + { + _logger->log_info("ListenHTTP using %s: %s", + SSLCertificate.getName().c_str(), + sslCertFile.c_str()); + } + + // Read further TLS/SSL options only if TLS/SSL usage is implied by virtue of certificate value being set + std::string sslCertAuthorityFile; + std::string sslVerifyPeer; + std::string sslMinVer; + + if (!sslCertFile.empty()) + { + if (context->getProperty(SSLCertificateAuthority.getName(), sslCertAuthorityFile) + && !sslCertAuthorityFile.empty()) + { + _logger->log_info("ListenHTTP using %s: %s", + SSLCertificateAuthority.getName().c_str(), + sslCertAuthorityFile.c_str()); + } + + if (context->getProperty(SSLVerifyPeer.getName(), sslVerifyPeer)) + { + if (sslVerifyPeer.empty() || sslVerifyPeer.compare("no") == 0) + { + _logger->log_info("ListenHTTP will not verify peers"); + } + else + { + _logger->log_info("ListenHTTP will verify peers"); + } + } + else + { + _logger->log_info("ListenHTTP will not verify peers"); + } + + if (context->getProperty(SSLMinimumVersion.getName(), sslMinVer)) + { + _logger->log_info("ListenHTTP using %s: %s", + SSLMinimumVersion.getName().c_str(), + sslMinVer.c_str()); + } + } + + std::string headersAsAttributesPattern; + + if (context->getProperty(HeadersAsAttributesRegex.getName(),headersAsAttributesPattern) + && !headersAsAttributesPattern.empty()) + { + _logger->log_info("ListenHTTP using %s: %s", + HeadersAsAttributesRegex.getName().c_str(), + headersAsAttributesPattern.c_str()); + } + + auto numThreads = getMaxConcurrentTasks(); + + _logger->log_info("ListenHTTP starting HTTP server on port %s and path %s with %d threads", + listeningPort.c_str(), + basePath.c_str(), + numThreads); + + // Initialize web server + std::vector<std::string> options; + options.push_back("enable_keep_alive"); + options.push_back("yes"); + options.push_back("keep_alive_timeout_ms"); + options.push_back("15000"); + options.push_back("num_threads"); + options.push_back(std::to_string(numThreads)); + + if (sslCertFile.empty()) + { + options.push_back("listening_ports"); + options.push_back(listeningPort); + } + else + { + listeningPort += "s"; + options.push_back("listening_ports"); + options.push_back(listeningPort); + + options.push_back("ssl_certificate"); + options.push_back(sslCertFile); + + if (!sslCertAuthorityFile.empty()) + { + options.push_back("ssl_ca_file"); + options.push_back(sslCertAuthorityFile); + } + + if (sslVerifyPeer.empty() || sslVerifyPeer.compare("no") == 0) + { + options.push_back("ssl_verify_peer"); + options.push_back("no"); + } + else + { + options.push_back("ssl_verify_peer"); + options.push_back("yes"); + } + + if (sslMinVer.compare("SSL2") == 0) + { + options.push_back("ssl_protocol_version"); + options.push_back(std::to_string(0)); + } + else if (sslMinVer.compare("SSL3") == 0) + { + options.push_back("ssl_protocol_version"); + options.push_back(std::to_string(1)); + } + else if (sslMinVer.compare("TLS1.0") == 0) + { + options.push_back("ssl_protocol_version"); + options.push_back(std::to_string(2)); + } + else if (sslMinVer.compare("TLS1.1") == 0) + { + options.push_back("ssl_protocol_version"); + options.push_back(std::to_string(3)); + } + else + { + options.push_back("ssl_protocol_version"); + options.push_back(std::to_string(4)); + } + } + + _server.reset(new CivetServer(options)); + _handler.reset(new Handler(context, + sessionFactory, + std::move(authDNPattern), + std::move(headersAsAttributesPattern))); + _server->addHandler(basePath, _handler.get()); +} + +void ListenHTTP::onTrigger(ProcessContext *context, ProcessSession *session) +{ + + FlowFileRecord *flowFile = session->get(); + + // Do nothing if there are no incoming files + if (!flowFile) + { + return; + } +} + +ListenHTTP::Handler::Handler(ProcessContext *context, + ProcessSessionFactory *sessionFactory, + std::string &&authDNPattern, + std::string &&headersAsAttributesPattern) +: _authDNRegex(std::move(authDNPattern)) +, _headersAsAttributesRegex(std::move(headersAsAttributesPattern)) +{ + _processContext = context; + _processSessionFactory = sessionFactory; +} + +void ListenHTTP::Handler::sendErrorResponse(struct mg_connection *conn) +{ + mg_printf(conn, + "HTTP/1.1 500 Internal Server Error\r\n" + "Content-Type: text/html\r\n" + "Content-Length: 0\r\n\r\n"); +} + +bool ListenHTTP::Handler::handlePost(CivetServer *server, struct mg_connection *conn) +{ + _logger = Logger::getLogger(); + + auto req_info = mg_get_request_info(conn); + _logger->log_info("ListenHTTP handling POST request of length %d", req_info->content_length); + + // If this is a two-way TLS connection, authorize the peer against the configured pattern + if (req_info->is_ssl && req_info->client_cert != nullptr) + { + if (!std::regex_match(req_info->client_cert->subject, _authDNRegex)) + { + mg_printf(conn, + "HTTP/1.1 403 Forbidden\r\n" + "Content-Type: text/html\r\n" + "Content-Length: 0\r\n\r\n"); + _logger->log_warn("ListenHTTP client DN not authorized: %s", req_info->client_cert->subject); + return true; + } + } + + // Always send 100 Continue, as allowed per standard to minimize client delay (https://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html) + mg_printf(conn, "HTTP/1.1 100 Continue\r\n\r\n"); + + auto session = _processSessionFactory->createSession(); + ListenHTTP::WriteCallback callback(conn, req_info); + auto flowFile = session->create(); + + if (!flowFile) + { + sendErrorResponse(conn); + return true; + } + + try + { + session->write(flowFile, &callback); + + // Add filename from "filename" header value (and pattern headers) + for (int i = 0; i < req_info->num_headers; i++) + { + auto header = &req_info->http_headers[i]; + + if (strcmp("filename", header->name) == 0) + { + if (!flowFile->updateAttribute("filename", header->value)) + { + flowFile->addAttribute("filename", header->value); + } + } + else if (std::regex_match(header->name, _headersAsAttributesRegex)) + { + if (!flowFile->updateAttribute(header->name, header->value)) + { + flowFile->addAttribute(header->name, header->value); + } + } + } + + session->transfer(flowFile, Success); + session->commit(); + } + catch (std::exception &exception) + { + _logger->log_debug("ListenHTTP Caught Exception %s", exception.what()); + sendErrorResponse(conn); + session->rollback(); + throw; + } + catch (...) + { + _logger->log_debug("ListenHTTP Caught Exception Processor::onTrigger"); + sendErrorResponse(conn); + session->rollback(); + throw; + } + + mg_printf(conn, + "HTTP/1.1 200 OK\r\n" + "Content-Type: text/html\r\n" + "Content-Length: 0\r\n\r\n"); + + return true; +} + +ListenHTTP::WriteCallback::WriteCallback(struct mg_connection *conn, const struct mg_request_info *reqInfo) +{ + _logger = Logger::getLogger(); + _conn = conn; + _reqInfo = reqInfo; +} + +void ListenHTTP::WriteCallback::process(std::ofstream *stream) +{ + long long rlen; + long long nlen = 0; + long long tlen = _reqInfo->content_length; + char buf[16384]; + + while (nlen < tlen) + { + rlen = tlen - nlen; + + if (rlen > sizeof(buf)) + { + rlen = sizeof(buf); + } + + // Read a buffer of data from client + rlen = mg_read(_conn, &buf[0], (size_t)rlen); + + if (rlen <= 0) + { + break; + } + + // Transfer buffer data to the output stream + stream->write(&buf[0], rlen); + + nlen += rlen; + } +}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/libminifi/src/ProcessSessionFactory.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/ProcessSessionFactory.cpp b/libminifi/src/ProcessSessionFactory.cpp new file mode 100644 index 0000000..a105b1c --- /dev/null +++ b/libminifi/src/ProcessSessionFactory.cpp @@ -0,0 +1,28 @@ +/** + * @file ProcessSessionFactory.cpp + * ProcessSessionFactory class implementation + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ProcessSessionFactory.h" + +#include <memory> + +std::unique_ptr<ProcessSession> ProcessSessionFactory::createSession() +{ + return std::unique_ptr<ProcessSession>(new ProcessSession(_processContext)); +} http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/libminifi/src/Processor.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/Processor.cpp b/libminifi/src/Processor.cpp index 5f071b2..a683e4b 100644 --- a/libminifi/src/Processor.cpp +++ b/libminifi/src/Processor.cpp @@ -25,10 +25,13 @@ #include <time.h> #include <chrono> #include <thread> +#include <memory> +#include <functional> #include "Processor.h" #include "ProcessContext.h" #include "ProcessSession.h" +#include "ProcessSessionFactory.h" Processor::Processor(std::string name, uuid_t uuid) : _name(name) @@ -70,6 +73,11 @@ bool Processor::isRunning() return (_state == RUNNING && _activeTasks > 0); } +void Processor::setScheduledState(ScheduledState state) +{ + _state = state; +} + bool Processor::setSupportedProperties(std::set<Property> properties) { if (isRunning()) @@ -439,31 +447,25 @@ bool Processor::flowFilesOutGoingFull() return false; } -void Processor::onTrigger() +void Processor::onTrigger(ProcessContext *context, ProcessSessionFactory *sessionFactory) { - ProcessContext *context = new ProcessContext(this); - ProcessSession *session = new ProcessSession(context); + auto session = sessionFactory->createSession(); + try { - // Call the child onTrigger function - this->onTrigger(context, session); + // Call the virtual trigger function + onTrigger(context, session.get()); session->commit(); - delete session; - delete context; } catch (std::exception &exception) { _logger->log_debug("Caught Exception %s", exception.what()); session->rollback(); - delete session; - delete context; throw; } catch (...) { _logger->log_debug("Caught Exception Processor::onTrigger"); session->rollback(); - delete session; - delete context; throw; } } http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/libminifi/src/SchedulingAgent.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/SchedulingAgent.cpp b/libminifi/src/SchedulingAgent.cpp index a81cd55..8e6249c 100644 --- a/libminifi/src/SchedulingAgent.cpp +++ b/libminifi/src/SchedulingAgent.cpp @@ -38,7 +38,7 @@ bool SchedulingAgent::hasTooMuchOutGoing(Processor *processor) return processor->flowFilesOutGoingFull(); } -bool SchedulingAgent::onTrigger(Processor *processor) +bool SchedulingAgent::onTrigger(Processor *processor, ProcessContext *processContext, ProcessSessionFactory *sessionFactory) { if (processor->isYield()) return false; @@ -59,7 +59,7 @@ bool SchedulingAgent::onTrigger(Processor *processor) processor->incrementActiveTasks(); try { - processor->onTrigger(); + processor->onTrigger(processContext, sessionFactory); processor->decrementActiveTask(); } catch (Exception &exception) http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/libminifi/src/ThreadedSchedulingAgent.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/ThreadedSchedulingAgent.cpp b/libminifi/src/ThreadedSchedulingAgent.cpp index 0338019..f7f1dbb 100644 --- a/libminifi/src/ThreadedSchedulingAgent.cpp +++ b/libminifi/src/ThreadedSchedulingAgent.cpp @@ -22,6 +22,10 @@ #include "ThreadedSchedulingAgent.h" +#include "ProcessContext.h" +#include "ProcessSession.h" +#include "ProcessSessionFactory.h" + void ThreadedSchedulingAgent::schedule(Processor *processor) { std::lock_guard<std::mutex> lock(_mtx); @@ -64,11 +68,18 @@ void ThreadedSchedulingAgent::schedule(Processor *processor) return; } + auto processContext = std::make_shared<ProcessContext>(processor); + auto sessionFactory = std::make_shared<ProcessSessionFactory>(processContext.get()); + + processor->onSchedule(processContext.get(), sessionFactory.get()); + std::vector<std::thread *> threads; for (int i = 0; i < processor->getMaxConcurrentTasks(); i++) { ThreadedSchedulingAgent *agent = this; - std::thread *thread = new std::thread([agent, processor] () { agent->run(processor); }); + std::thread *thread = new std::thread([agent, processor, processContext, sessionFactory] () { + agent->run(processor, processContext.get(), sessionFactory.get()); + }); thread->detach(); threads.push_back(thread); _logger->log_info("Scheduled thread %d running for process %s", thread->get_id(), @@ -82,7 +93,7 @@ void ThreadedSchedulingAgent::schedule(Processor *processor) void ThreadedSchedulingAgent::unschedule(Processor *processor) { std::lock_guard<std::mutex> lock(_mtx); - + _logger->log_info("Shutting down threads for processor %s/%s", processor->getName().c_str(), processor->getUUIDStr().c_str()); http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/libminifi/src/TimerDrivenSchedulingAgent.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/TimerDrivenSchedulingAgent.cpp b/libminifi/src/TimerDrivenSchedulingAgent.cpp index 09b7ed6..30dc96c 100644 --- a/libminifi/src/TimerDrivenSchedulingAgent.cpp +++ b/libminifi/src/TimerDrivenSchedulingAgent.cpp @@ -23,11 +23,11 @@ #include "Property.h" #include "TimerDrivenSchedulingAgent.h" -void TimerDrivenSchedulingAgent::run(Processor *processor) +void TimerDrivenSchedulingAgent::run(Processor *processor, ProcessContext *processContext, ProcessSessionFactory *sessionFactory) { while (this->_running) { - bool shouldYield = this->onTrigger(processor); + bool shouldYield = this->onTrigger(processor, processContext, sessionFactory); if (processor->isYield()) { http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/main/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index e27974b..126411b 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -23,7 +23,7 @@ IF(POLICY CMP0048) CMAKE_POLICY(SET CMP0048 OLD) ENDIF(POLICY CMP0048) -include_directories(../include ../libminifi/include ../thirdparty/yaml-cpp-yaml-cpp-0.5.3/include ../thirdparty/leveldb-1.18/include ../thirdparty/) +include_directories(../include ../libminifi/include ../thirdparty/yaml-cpp-yaml-cpp-0.5.3/include ../thirdparty/civetweb-1.9.1/include ../thirdparty/leveldb-1.18/include ../thirdparty/) find_package(Boost REQUIRED) include_directories(${Boost_INCLUDE_DIRS}) @@ -39,12 +39,12 @@ endif() # Include UUID find_package(UUID REQUIRED) -# Include OpenSSL +# Include OpenSSL find_package(OpenSSL REQUIRED) include_directories(${OPENSSL_INCLUDE_DIR}) -# Link against minifi, yaml-cpp, uuid, and leveldb -target_link_libraries(minifiexe minifi yaml-cpp ${UUID_LIBRARIES} ${LEVELDB_LIBRARIES} ${OPENSSL_LIBRARIES}) +# Link against minifi, yaml-cpp, civetweb-cpp, uuid, openssl, and leveldb +target_link_libraries(minifiexe minifi yaml-cpp c-library civetweb-cpp ${UUID_LIBRARIES} ${LEVELDB_LIBRARIES} ${OPENSSL_LIBRARIES}) set_target_properties(minifiexe PROPERTIES OUTPUT_NAME minifi) http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/thirdparty/civetweb-1.9.1/.clang-format ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.9.1/.clang-format b/thirdparty/civetweb-1.9.1/.clang-format new file mode 100644 index 0000000..37a80d9 --- /dev/null +++ b/thirdparty/civetweb-1.9.1/.clang-format @@ -0,0 +1,32 @@ +# http://clang.llvm.org/docs/ClangFormatStyleOptions.html + +BasedOnStyle: LLVM + +IndentWidth: 4 +TabWidth: 4 +UseTab: ForIndentation +ColumnLimit: 80 + +Language: Cpp + +AlignAfterOpenBracket: true +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: true +BinPackArguments: false +BinPackParameters: false +BreakBeforeBinaryOperators: NonAssignment +BreakBeforeBraces: Linux +DerivePointerAlignment: false +MaxEmptyLinesToKeep: 2 +PenaltyBreakBeforeFirstCallParameter: 100 + +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesInSquareBrackets: false + +DisableFormat: false http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/thirdparty/civetweb-1.9.1/.gitattributes ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.9.1/.gitattributes b/thirdparty/civetweb-1.9.1/.gitattributes new file mode 100644 index 0000000..5c52867 --- /dev/null +++ b/thirdparty/civetweb-1.9.1/.gitattributes @@ -0,0 +1,33 @@ +# Auto detect text files and perform LF normalization +* -text + +# Custom for Visual Studio +*.cs diff=csharp +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain + +# Preserver Windows specfic lines endings +*.cmd text eol=crlf + + +# Settings for github syntax highlighting +# see https://github.com/github/linguist/blob/master/README.md +docs/* linguist-documentation +*.inl linguist-language=C +*.h linguist-language=C +include/CivetServer.h linguist-language=C++ http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/thirdparty/civetweb-1.9.1/.gitignore ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.9.1/.gitignore b/thirdparty/civetweb-1.9.1/.gitignore new file mode 100644 index 0000000..7b27e8e --- /dev/null +++ b/thirdparty/civetweb-1.9.1/.gitignore @@ -0,0 +1,266 @@ + +civetweb +civetweb_test +libcivetweb.a +libcivetweb.so +*-cache +out +*.dmg +*.msi +*.exe +*.zip +[oO]utput +[tT]esting + +*.o + +################# +## CMake +################# +/CMakeCache.txt +/CMakeFiles +/mingw-builds + +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Text-mode IDE tools +cscope.out +tags + +# Build results + +[Dd]ebug/ +[Dd]ebug CONSOLE/ +[Rr]elease/ +x64/ +[Bb]in/ +[Oo]bj/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.Publish.xml +*.pubxml + +# NuGet Packages Directory +## TODO: If you have NuGet Package Restore enabled, uncomment the next line +#packages/ + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + +############# +## Windows detritus +############# + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac crap +.DS_Store + + +############# +## Python +############# + +*.py[co] + +# Packages +*.egg +*.egg-info +dist/ +eggs/ +parts/ +var/ +sdist/ +develop-eggs/ +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg + + +########################## +## Files created by tests +########################## +requests.db + +########################## +## Files created by ctags +########################## +?tags +?tags? + +########################## +## Files created by autotools +########################## +*.lo +.libs + +########################## +## Travis Build Dir +########################## +ci/lua + + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/thirdparty/civetweb-1.9.1/.travis.yml ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.9.1/.travis.yml b/thirdparty/civetweb-1.9.1/.travis.yml new file mode 100644 index 0000000..4f42ac2 --- /dev/null +++ b/thirdparty/civetweb-1.9.1/.travis.yml @@ -0,0 +1,1240 @@ +language: c + +sudo: false + +cache: + directories: + - $HOME/third-party + + + +osx_image: xcode8 + +addons: + apt: + packages: + - cmake + - openssl + - libssl-dev + sources: + - kubuntu-backports + +before_install: + - cmake --version + +install: + - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then + PATH=~/.local/bin:${PATH}; + pip install --user --upgrade pip; + pip install --user cpp-coveralls; + fi + +before_script: + # Check some settings of the build server + - uname -a + - pwd + # Generate the build scripts with CMake + - mkdir output + - gcc test/cgi_test.c -o output/cgi_test.cgi + - cd output + - cmake --version + - cmake + -G "Unix Makefiles" + -DCMAKE_BUILD_TYPE=${BUILD_TYPE} + -DBUILD_SHARED_LIBS=${BUILD_SHARED} + "-DCIVETWEB_THIRD_PARTY_DIR=${HOME}/third-party" + -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES + -DCIVETWEB_ENABLE_SSL=${ENABLE_SSL} + -DCIVETWEB_DISABLE_CGI=${NO_CGI} + -DCIVETWEB_SERVE_NO_FILES=${NO_FILES} + -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=${ENABLE_SSL_DYNAMIC_LOADING} + -DCIVETWEB_ENABLE_WEBSOCKETS=${ENABLE_WEBSOCKETS} + -DCIVETWEB_ENABLE_CXX=${ENABLE_CXX} + -DCIVETWEB_ENABLE_IPV6=${ENABLE_IPV6} + -DCIVETWEB_ENABLE_LUA=${ENABLE_LUA} + -DCIVETWEB_ENABLE_LUA_SHARED=${ENABLE_LUA_SHARED} + -DCIVETWEB_ENABLE_DUKTAPE=${ENABLE_DUKTAPE} + -DCIVETWEB_DISABLE_CACHING=${NO_CACHING} + -DCIVETWEB_C_STANDARD=${C_STANDARD} + -DCIVETWEB_CXX_STANDARD=${CXX_STANDARD} + .. + - ls -la + +script: + - if [ "${MACOSX_PACKAGE}" == "1" ]; then + cd "${TRAVIS_BUILD_DIR}"; + make -f Makefile.osx package; + else + CTEST_OUTPUT_ON_FAILURE=1 make all test; + fi + +# Coveralls options: https://github.com/eddyxu/cpp-coveralls/blob/master/README.md +after_success: + - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then + coveralls --include src --exclude src/main.c --exclude src/third_party --include include --gcov-options '\-lp' --root .. --build-root .; + fi + + +################################### + +matrix: + fast_finish: false + include: + + - + os: linux + compiler: clang + env: + N=ClangLinuxMinimal + BUILD_TYPE=Debug + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=0 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: gcc + env: + N=GCCLinuxMinimal + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=0 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: osx + compiler: clang + env: + N=ClangOSXMinimal + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=0 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=ClangLinuxMinNoCache + BUILD_TYPE=Debug + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=0 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=YES + + - + os: linux + compiler: clang + env: + N=ClangLinuxMax + BUILD_TYPE=Coverage + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=31 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=YES + + - + os: linux + compiler: gcc + env: + N=GCCLinuxMax + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=31 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=YES + + - + os: osx + compiler: clang + env: + N=ClangOSXMax + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=31 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=YES + + - + os: linux + compiler: clang + env: + N=ClangLinuxDefault + BUILD_TYPE=Debug + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=7 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: gcc + env: + N=GCCLinuxDefault + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=7 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: osx + compiler: clang + env: + N=ClangOSXDefault + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=7 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=ClangLinuxDefaultShared + BUILD_TYPE=Debug + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=7 + BUILD_SHARED=YES + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: gcc + env: + N=GCCLinuxDefaultShared + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=7 + BUILD_SHARED=YES + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: osx + compiler: clang + env: + N=ClangOSXDefaultShared + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=7 + BUILD_SHARED=YES + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: osx + compiler: clang + env: + N=OSX_Package + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=31 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + MACOSX_PACKAGE=1 + + +#### Now all define combinations, but only for Linux clang +##### Generated with Lua: +# +# function YN(i,b) +# local bits = {} +# while (i > 0.5) do +# i = math.floor(i) +# bits[#bits+1] = (math.mod(i, 2) == 1) +# i = i/2 +# end +# if (bits[b]) then +# return "YES" +# end +# return "NO" +# end +# function INV(t) +# if t=="YES" then +# return "NO" +# elseif t=="NO" then +# return "YES" +# else +# assert("ERROR in INV!") +# end +# end +# for i=0,31 do +# if true then -- (i~=0) and (i~=7) and (i~=31) then +# print(" -") +# print(" os: linux") +# print(" compiler: clang") +# print(" env:") +# print(" N=C" .. tostring(i) .. "_") +# print(" BUILD_TYPE=Release") +# print(" ENABLE_SSL_DYNAMIC_LOADING=YES") +# print(" ENABLE_CXX=NO") +# print(" C_STANDARD=auto") +# print(" CXX_STANDARD=auto") +# print(" ENABLE_LUA_SHARED=NO") +# print(" FEATURES=" .. tostring(i)) +# print(" BUILD_SHARED=NO") +# print(" NO_FILES=" .. INV(YN(i, 1))) +# print(" ENABLE_SSL=" .. YN(i, 2)) +# print(" NO_CGI=" .. INV(YN(i, 3))) +# print(" ENABLE_IPV6=" .. YN(i, 4)) +# print(" ENABLE_WEBSOCKETS=" .. YN(i, 5)) +# print(" ENABLE_LUA=" .. YN(i, 6)) +# print(" ENABLE_DUKTAPE=" .. YN(i, 7)) +# print(" NO_CACHING=NO") +# print("") +# end +# end +# + + - + os: linux + compiler: clang + env: + N=C0_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=0 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C1_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=1 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C2_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=2 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=YES + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C3_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=3 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C4_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=4 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C5_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=5 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=NO + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C6_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=6 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C7_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=7 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C8_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=8 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C9_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=9 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C10_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=10 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=YES + NO_CGI=YES + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C11_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=11 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=YES + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C12_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=12 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C13_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=13 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=NO + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C14_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=14 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C15_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=15 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C16_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=16 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C17_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=17 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C18_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=18 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=YES + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C19_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=19 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=YES + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C20_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=20 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C21_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=21 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=NO + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C22_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=22 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C23_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=23 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C24_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=24 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C25_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=25 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=NO + NO_CGI=YES + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C26_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=26 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=YES + NO_CGI=YES + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C27_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=27 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=YES + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C28_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=28 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=NO + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C29_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=29 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=NO + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C30_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=30 + BUILD_SHARED=NO + NO_FILES=YES + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: clang + env: + N=C31_ + BUILD_TYPE=Release + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + C_STANDARD=auto + CXX_STANDARD=auto + ENABLE_LUA_SHARED=NO + FEATURES=31 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=YES + ENABLE_WEBSOCKETS=YES + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + +### Test all build types: +# According to CMakeLists, options are: +# None Debug Release RelWithDebInfo MinSizeRel Coverage + + - + os: linux + compiler: gcc + env: + N=GCCLinuxDefault_Debug + BUILD_TYPE=Debug + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=7 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: gcc + env: + N=GCCLinuxDefault_RelWithDebInfo + BUILD_TYPE=RelWithDebInfo + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=7 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: gcc + env: + N=GCCLinuxDefault_MinSizeRel + BUILD_TYPE=MinSizeRel + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=7 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO + + - + os: linux + compiler: gcc + env: + N=GCCLinuxDefault_None + BUILD_TYPE=None + ENABLE_SSL_DYNAMIC_LOADING=YES + ENABLE_CXX=NO + ENABLE_LUA_SHARED=NO + C_STANDARD=auto + CXX_STANDARD=auto + FEATURES=7 + BUILD_SHARED=NO + NO_FILES=NO + ENABLE_SSL=YES + NO_CGI=NO + ENABLE_IPV6=NO + ENABLE_WEBSOCKETS=NO + ENABLE_LUA=NO + ENABLE_DUKTAPE=NO + NO_CACHING=NO http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/thirdparty/civetweb-1.9.1/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.9.1/CMakeLists.txt b/thirdparty/civetweb-1.9.1/CMakeLists.txt new file mode 100644 index 0000000..d03c6cd --- /dev/null +++ b/thirdparty/civetweb-1.9.1/CMakeLists.txt @@ -0,0 +1,461 @@ +# Determines what CMake APIs we can rely on +cmake_minimum_required (VERSION 2.8.11) +if (${CMAKE_VERSION} VERSION_GREATER 3.2.2) + cmake_policy(VERSION 3.2.2) +endif() +if (${CMAKE_VERSION} VERSION_GREATER 3.1 OR + ${CMAKE_VERSION} VERSION_EQUAL 3.1) + cmake_policy(SET CMP0054 NEW) +endif() + +# Do not allow in source builds +set(CMAKE_DISABLE_SOURCE_CHANGES ON) +set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) + +# Make sure we can import out CMake functions +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +# Load in the needed CMake modules +include(CheckIncludeFiles) +include(CheckCCompilerFlag) +include(CheckCXXCompilerFlag) +include(AddCCompilerFlag) +include(AddCXXCompilerFlag) +include(DetermineTargetArchitecture) +include(CMakeDependentOption) + +# Set up the project +project (civetweb) +set(CIVETWEB_VERSION "1.9.1" CACHE STRING "The version of the civetweb library") +string(REGEX MATCH "([0-9]+)\\.([0-9]+)\\.([0-9]+)" CIVETWEB_VERSION_MATCH "${CIVETWEB_VERSION}") +if ("${CIVETWEB_VERSION_MATCH}" STREQUAL "") + message(FATAL_ERROR "Must specify a semantic version: major.minor.patch") +endif() +set(CIVETWEB_VERSION_MAJOR "${CMAKE_MATCH_1}") +set(CIVETWEB_VERSION_MINOR "${CMAKE_MATCH_2}") +set(CIVETWEB_VERSION_PATCH "${CMAKE_MATCH_3}") +determine_target_architecture(CIVETWEB_ARCHITECTURE) + +# Detect the platform reliably +if(NOT MACOSX AND ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + SET(DARWIN YES) +elseif(NOT BSD AND ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") + SET(FREEBSD YES) +elseif(NOT LINUX AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux") + SET(LINUX YES) +endif() + +# C++ wrappers +option(CIVETWEB_ENABLE_THIRD_PARTY_OUTPUT "Shows the output of third party dependency processing" OFF) + +# Max Request Size +set(CIVETWEB_MAX_REQUEST_SIZE 16384 CACHE STRING + "The largest amount of content bytes allowed in a request") +set_property(CACHE CIVETWEB_MAX_REQUEST_SIZE PROPERTY VALUE ${CIVETWEB_MAX_REQUEST_SIZE}) +message(STATUS "Max Request Size - ${CIVETWEB_MAX_REQUEST_SIZE}") + +# Thread Stack Size +set(CIVETWEB_THREAD_STACK_SIZE 102400 CACHE STRING + "The stack size in bytes for each thread created") +set_property(CACHE CIVETWEB_THREAD_STACK_SIZE PROPERTY VALUE ${CIVETWEB_THREAD_STACK_SIZE}) +message(STATUS "Thread Stack Size - ${CIVETWEB_THREAD_STACK_SIZE}") + +# Serve no files from the web server +option(CIVETWEB_SERVE_NO_FILES "Configures the server to serve no static files" OFF) +message(STATUS "Serve no static files - ${CIVETWEB_SERVE_NO_FILES}") + +# Serve no files from the web server +option(CIVETWEB_DISABLE_CGI "Disables CGI, so theserver will not execute CGI scripts" OFF) +message(STATUS "Disable CGI support - ${CIVETWEB_DISABLE_CGI}") + +# Disable caching +option(CIVETWEB_DISABLE_CACHING "Disables caching, so that no timegm is used." OFF) +message(STATUS "Disable caching support - ${CIVETWEB_DISABLE_CACHING}") + +# C++ wrappers +option(CIVETWEB_ENABLE_CXX "Enables the C++ wrapper library" OFF) +message(STATUS "C++ wrappers - ${CIVETWEB_ENABLE_CXX}") + +# IP Version 6 +option(CIVETWEB_ENABLE_IPV6 "Enables the IP version 6 support" OFF) +message(STATUS "IP Version 6 - ${CIVETWEB_ENABLE_IPV6}") + +# Websocket support +option(CIVETWEB_ENABLE_WEBSOCKETS "Enable websockets connections" OFF) +message(STATUS "Websockets support - ${CIVETWEB_ENABLE_WEBSOCKETS}") + +# Memory debugging +option(CIVETWEB_ENABLE_MEMORY_DEBUGGING "Enable the memory debugging features" OFF) +message(STATUS "Memory Debugging - ${CIVETWEB_ENABLE_MEMORY_DEBUGGING}") + +# LUA CGI support +option(CIVETWEB_ENABLE_LUA "Enable Lua CGIs" OFF) +message(STATUS "Lua CGI support - ${CIVETWEB_ENABLE_LUA}") + +# Allow builds to complete with warnings (do not set -Werror) +if (LINUX) +# CivetWeb Linux support is stable: Builds must be free from warnings. + option(CIVETWEB_ALLOW_WARNINGS "Do not stop build if there are warnings" OFF) +else() +# CivetWeb Linux support for other systems is in a setup phase. + option(CIVETWEB_ALLOW_WARNINGS "Do not stop build if there are warnings" ON) +endif() +message(STATUS "Build if there are warnings - ${CIVETWEB_ALLOW_WARNINGS}") + +# Link to the shared LUA library +cmake_dependent_option( + CIVETWEB_ENABLE_LUA_SHARED "Link to the shared LUA system library" OFF + CIVETWEB_ENABLE_LUA OFF) +if (CIVETWEB_ENABLE_LUA) + message(STATUS "Linking shared Lua library - ${CIVETWEB_ENABLE_LUA_SHARED}") +endif() + +# Lua Third Party Settings +if (CIVETWEB_ENABLE_LUA) + if (NOT CIVETWEB_ENABLE_LUA_SHARED) + # Lua Version + set(CIVETWEB_LUA_VERSION 5.2.4 CACHE STRING + "The version of Lua to build and include statically") + set_property(CACHE CIVETWEB_LUA_VERSION PROPERTY VALUE ${CIVETWEB_LUA_VERSION}) + message(STATUS "Lua Version - ${CIVETWEB_LUA_VERSION}") + mark_as_advanced(CIVETWEB_LUA_VERSION) + + # Lua Verification Hash + set(CIVETWEB_LUA_MD5_HASH 913fdb32207046b273fdb17aad70be13 CACHE STRING + "The hash of Lua archive to be downloaded") + set_property(CACHE CIVETWEB_LUA_MD5_HASH PROPERTY VALUE ${CIVETWEB_LUA_MD5_HASH}) + mark_as_advanced(CIVETWEB_LUA_MD5_HASH) + endif() + + # Lua Filesystem Version + set(CIVETWEB_LUA_FILESYSTEM_VERSION 1.6.3 CACHE STRING + "The version of Lua Filesystem to build and include statically") + set_property(CACHE CIVETWEB_LUA_FILESYSTEM_VERSION PROPERTY VALUE ${CIVETWEB_LUA_FILESYSTEM_VERSION}) + message(STATUS "Lua Filesystem Version - ${CIVETWEB_LUA_FILESYSTEM_VERSION}") + mark_as_advanced(CIVETWEB_LUA_FILESYSTEM_VERSION) + + # Lua Filesystem Verification Hash + set(CIVETWEB_LUA_FILESYSTEM_MD5_HASH d0552c7e5a082f5bb2865af63fb9dc95 CACHE STRING + "The hash of Lua Filesystem archive to be downloaded") + set_property(CACHE CIVETWEB_LUA_FILESYSTEM_MD5_HASH PROPERTY VALUE ${CIVETWEB_LUA_FILESYSTEM_MD5_HASH}) + mark_as_advanced(CIVETWEB_LUA_FILESYSTEM_MD5_HASH) + + # Lua SQLite Version + set(CIVETWEB_LUA_SQLITE_VERSION 0.9.3 CACHE STRING + "The version of Lua SQLite to build and include statically") + set_property(CACHE CIVETWEB_LUA_SQLITE_VERSION PROPERTY VALUE ${CIVETWEB_LUA_SQLITE_VERSION}) + message(STATUS "Lua SQLite Version - ${CIVETWEB_LUA_SQLITE_VERSION}") + mark_as_advanced(CIVETWEB_LUA_SQLITE_VERSION) + + # Lua SQLite Verification Hash + set(CIVETWEB_LUA_SQLITE_MD5_HASH 43234ae08197dfce6da02482ed14ec92 CACHE STRING + "The hash of Lua SQLite archive to be downloaded") + set_property(CACHE CIVETWEB_LUA_SQLITE_MD5_HASH PROPERTY VALUE ${CIVETWEB_LUA_SQLITE_MD5_HASH}) + mark_as_advanced(CIVETWEB_LUA_SQLITE_MD5_HASH) + + # Lua XML Version + set(CIVETWEB_LUA_XML_VERSION 1.8.0 CACHE STRING + "The version of Lua XML to build and include statically") + set_property(CACHE CIVETWEB_LUA_XML_VERSION PROPERTY VALUE ${CIVETWEB_LUA_XML_VERSION}) + message(STATUS "Lua XML Version - ${CIVETWEB_LUA_XML_VERSION}") + mark_as_advanced(CIVETWEB_LUA_XML_VERSION) + + # Lua XML Verification Hash + set(CIVETWEB_LUA_XML_MD5_HASH 25e4c276c5d8716af1de0c7853aec2b4 CACHE STRING + "The hash of Lua XML archive to be downloaded") + set_property(CACHE CIVETWEB_LUA_XML_MD5_HASH PROPERTY VALUE ${CIVETWEB_LUA_XML_MD5_HASH}) + mark_as_advanced(CIVETWEB_LUA_XML_MD5_HASH) + + # SQLite Version + set(CIVETWEB_SQLITE_VERSION 3.8.9 CACHE STRING + "The version of SQLite to build and include statically") + set_property(CACHE CIVETWEB_SQLITE_VERSION PROPERTY VALUE ${CIVETWEB_SQLITE_VERSION}) + message(STATUS "SQLite Version - ${CIVETWEB_SQLITE_VERSION}") + mark_as_advanced(CIVETWEB_SQLITE_VERSION) + + # SQLite Verification Hash + set(CIVETWEB_SQLITE_MD5_HASH 02e9c3a6daa8b8587cf6bef828c2e33f CACHE STRING + "The hash of SQLite archive to be downloaded") + set_property(CACHE CIVETWEB_SQLITE_MD5_HASH PROPERTY VALUE ${CIVETWEB_SQLITE_MD5_HASH}) + mark_as_advanced(CIVETWEB_SQLITE_MD5_HASH) +endif() + +# Duktape CGI support +option(CIVETWEB_ENABLE_DUKTAPE "Enable Duktape CGIs" OFF) +message(STATUS "Duktape CGI support - ${CIVETWEB_ENABLE_DUKTAPE}") + +# SSL support +option(CIVETWEB_ENABLE_SSL "Enables the secure socket layer" ON) +message(STATUS "SSL support - ${CIVETWEB_ENABLE_SSL}") + +# Dynamically load or link the SSL libraries +cmake_dependent_option( + CIVETWEB_ENABLE_SSL_DYNAMIC_LOADING "Dynamically loads the SSL library rather than linking it" ON + CIVETWEB_ENABLE_SSL OFF) +if (CIVETWEB_ENABLE_SSL) + message(STATUS "Dynamically load SSL libraries - ${CIVETWEB_ENABLE_SSL_DYNAMIC_LOADING}") +endif() + +# Third Party Download location +set(CIVETWEB_THIRD_PARTY_DIR "${CMAKE_BINARY_DIR}/third_party" CACHE STRING + "The location that third party code is downloaded, built and installed") +set_property(CACHE CIVETWEB_THIRD_PARTY_DIR PROPERTY VALUE ${CIVETWEB_THIRD_PARTY_DIR}) + +# Unix systems can define the dynamic library names to load +if (CIVETWEB_ENABLE_SSL_DYNAMIC_LOADING AND NOT DARWIN AND UNIX) + # SSL library name + set(CIVETWEB_SSL_SSL_LIB "libssl.so" CACHE STRING + "The name of the SSL library to load") + set_property(CACHE CIVETWEB_SSL_SSL_LIB PROPERTY VALUE ${CIVETWEB_SSL_SSL_LIB}) + message(STATUS "SSL Library Name - ${CIVETWEB_SSL_SSL_LIB}") + + # Crytography library name + set(CIVETWEB_SSL_CRYPTO_LIB "libcrypto.so" CACHE STRING + "The name of the SSL Cryptography library to load") + set_property(CACHE CIVETWEB_SSL_CRYPTO_LIB PROPERTY VALUE ${CIVETWEB_SSL_CRYPTO_LIB}) + message(STATUS "SSL Cryptography Library Name - ${CIVETWEB_SSL_CRYPTO_LIB}") +endif() + +# Allow warnings in 3rd party components +if (CIVETWEB_ENABLE_LUA OR CIVETWEB_ENABLE_DUKTAPE) +SET(CIVETWEB_ALLOW_WARNINGS YES) +endif() + +# The C and C++ standards to use +set(CIVETWEB_C_STANDARD auto CACHE STRING + "The C standard to use; auto determines the latest supported by the compiler") +set_property(CACHE CIVETWEB_C_STANDARD PROPERTY STRINGS auto c11 c99 c89) +set(CIVETWEB_CXX_STANDARD auto CACHE STRING + "The C++ standard to use; auto determines the latest supported by the compiler") +set_property(CACHE CIVETWEB_CXX_STANDARD PROPERTY STRINGS auto c++14 c++11 c++98) + +# Configure the linker +if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + find_program(GCC_AR gcc-ar) + if (GCC_AR) + set(CMAKE_AR ${GCC_AR}) + endif() + find_program(GCC_RANLIB gcc-ranlib) + if (GCC_RANLIB) + set(CMAKE_RANLIB ${GCC_RANLIB}) + endif() +endif() + +# Configure the C compiler +message(STATUS "Configuring C Compiler") +if ("${CIVETWEB_C_STANDARD}" STREQUAL "auto") + add_c_compiler_flag(-std=c11) + if (NOT HAVE_C_FLAG_STD_C11) + add_c_compiler_flag(-std=c99) + if (NOT HAVE_C_FLAG_STD_C99) + add_c_compiler_flag(-std=c89) + endif() + endif() +else() + add_c_compiler_flag(-std=${CIVETWEB_C_STANDARD}) +endif() +add_c_compiler_flag(-Wall) +add_c_compiler_flag(-Wextra) +add_c_compiler_flag(-Wshadow) +add_c_compiler_flag(-Wconversion) +add_c_compiler_flag(-Wmissing-prototypes) +add_c_compiler_flag(-Weverything) +add_c_compiler_flag(/W4) +add_c_compiler_flag(-Wno-padded) +add_c_compiler_flag(/Wd4820) # padding +add_c_compiler_flag(-Wno-unused-macros) +add_c_compiler_flag(-Wno-format-nonliteral) +add_c_compiler_flag(-Wparentheses) +if (MINGW) + add_c_compiler_flag(-Wno-format) +endif() +if (NOT CIVETWEB_ALLOW_WARNINGS) + add_c_compiler_flag(-Werror) +endif() +add_c_compiler_flag(/WX) +add_c_compiler_flag(-pedantic-errors) +add_c_compiler_flag(-fvisibility=hidden) +add_c_compiler_flag(-fstack-protector-strong RELEASE) +add_c_compiler_flag(-flto RELEASE) +add_c_compiler_flag(-fsanitize=undefined DEBUG) +add_c_compiler_flag(-fsanitize=address DEBUG) +if (HAVE_C_FLAG_FSANITIZE_ADDRESS) + add_c_compiler_flag(-static-asan DEBUG) +endif() +add_c_compiler_flag(-fstack-protector-all DEBUG) +if (MINGW) + add_c_compiler_flag(-mwindows) +endif() + +# Coverage build type +set(CMAKE_C_FLAGS_COVERAGE "${CMAKE_C_FLAGS_DEBUG}" CACHE STRING + "Flags used by the C compiler during coverage builds." + FORCE) +set(CMAKE_EXE_LINKER_FLAGS_COVERAGE + "${CMAKE_EXE_LINKER_FLAGS_DEBUG}" CACHE STRING + "Flags used for linking binaries during coverage builds." + FORCE) +set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE + "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE STRING + "Flags used by the shared libraries linker during coverage builds." + FORCE) +mark_as_advanced( + CMAKE_CXX_FLAGS_COVERAGE + CMAKE_C_FLAGS_COVERAGE + CMAKE_EXE_LINKER_FLAGS_COVERAGE + CMAKE_SHARED_LINKER_FLAGS_COVERAGE) +set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING + "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Coverage." + FORCE) +add_c_compiler_flag(--coverage COVERAGE) + +# Configure the C++ compiler +if (CIVETWEB_ENABLE_CXX) + message(STATUS "Configuring C++ Compiler") + if ("${CIVETWEB_CXX_STANDARD}" STREQUAL "auto") + add_cxx_compiler_flag(-std=c++14) + if (NOT HAVE_CXX_FLAG_STD_CXX14) + add_cxx_compiler_flag(-std=c++11) + if (NOT HAVE_CXX_FLAG_STD_CXX11) + add_cxx_compiler_flag(-std=c++98) + endif() + endif() + else() + add_cxx_compiler_flag(-std=${CIVETWEB_CXX_STANDARD}) + endif() + add_cxx_compiler_flag(-Wall) + add_cxx_compiler_flag(-Wextra) + add_cxx_compiler_flag(-Wshadow) + add_cxx_compiler_flag(-Wmissing-prototypes) + add_cxx_compiler_flag(-Weverything) + add_cxx_compiler_flag(/W4) + add_cxx_compiler_flag(-Wno-padded) + add_cxx_compiler_flag(/Wd4820) # padding + add_cxx_compiler_flag(-Wno-unused-macros) + add_cxx_compiler_flag(-Wno-format-nonliteral) + if (MINGW) + add_cxx_compiler_flag(-Wno-format) + endif() + if (NOT CIVETWEB_ALLOW_WARNINGS) + add_cxx_compiler_flag(-Werror) + endif() + add_cxx_compiler_flag(/WX) + add_cxx_compiler_flag(-pedantic-errors) + add_cxx_compiler_flag(-fvisibility=hidden) + add_cxx_compiler_flag(-fstack-protector-strong RELEASE) + add_cxx_compiler_flag(-flto RELEASE) + add_cxx_compiler_flag(-fsanitize=undefined DEBUG) + add_cxx_compiler_flag(-fsanitize=address DEBUG) + if (HAVE_CXX_FLAG_FSANITIZE_ADDRESS) + add_cxx_compiler_flag(-static-asan DEBUG) + endif() + add_cxx_compiler_flag(-fstack-protector-all DEBUG) + if (MINGW) + add_cxx_compiler_flag(-mwindows) + endif() + set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING + "Flags used by the C++ compiler during coverage builds." + FORCE) + add_cxx_compiler_flag(--coverage COVERAGE) +endif() + +# Set up the definitions +if (${CMAKE_BUILD_TYPE} MATCHES "[Dd]ebug") + add_definitions(-DDEBUG) +endif() +if (CIVETWEB_ENABLE_IPV6) + add_definitions(-DUSE_IPV6) +endif() +if (CIVETWEB_ENABLE_WEBSOCKETS) + add_definitions(-DUSE_WEBSOCKET) +endif() +if (CIVETWEB_SERVE_NO_FILES) + add_definitions(-DNO_FILES) +endif() +if (CIVETWEB_DISABLE_CGI) + add_definitions(-DNO_CGI) +endif() +if (CIVETWEB_DISABLE_CACHING) + add_definitions(-DNO_CACHING) +endif() +if (CIVETWEB_ENABLE_LUA) + add_definitions(-DUSE_LUA) +endif() +if (CIVETWEB_ENABLE_DUKTAPE) + add_definitions(-DUSE_DUKTAPE) +endif() +if (CIVETWEB_ENABLE_MEMORY_DEBUGGING) + add_definitions(-DMEMORY_DEBUGGING) +endif() +if (NOT CIVETWEB_ENABLE_SSL) + add_definitions(-DNO_SSL) +elseif (NOT CIVETWEB_ENABLE_SSL_DYNAMIC_LOADING) + add_definitions(-DNO_SSL_DL) +else() + if(CIVETWEB_SSL_SSL_LIB) + add_definitions(-DSSL_LIB="${CIVETWEB_SSL_SSL_LIB}") + endif() + if(CIVETWEB_SSL_CRYPTO_LIB) + add_definitions(-DCRYPTO_LIB="${CIVETWEB_SSL_CRYPTO_LIB}") + endif() +endif() +add_definitions(-DUSE_STACK_SIZE=${CIVETWEB_THREAD_STACK_SIZE}) +add_definitions(-DMAX_REQUEST_SIZE=${CIVETWEB_MAX_REQUEST_SIZE}) + +# Build the targets +add_subdirectory(src) + +# Enable the testing of the library/executable +include(CTest) +if (BUILD_TESTING) + # Check unit testing framework Version + set(CIVETWEB_CHECK_VERSION 0.11.0 CACHE STRING + "The version of Check unit testing framework to build and include statically") + set_property(CACHE CIVETWEB_CHECK_VERSION PROPERTY VALUE ${CIVETWEB_CHECK_VERSION}) + message(STATUS "Check Unit Testing Framework Version - ${CIVETWEB_CHECK_VERSION}") + mark_as_advanced(CIVETWEB_CHECK_VERSION) + + # Check unit testing framework Verification Hash + # Hash for Check 0.10.0: 67a34c40b5bc888737f4e5ae82e9939f + # Hash for Check 0.11.0: 1b14ee307dca8e954a8219c34484d7c4 + set(CIVETWEB_CHECK_MD5_HASH 1b14ee307dca8e954a8219c34484d7c4 CACHE STRING + "The hash of Check unit testing framework archive to be downloaded") + set_property(CACHE CIVETWEB_CHECK_MD5_HASH PROPERTY VALUE ${CIVETWEB_CHECK_MD5_HASH}) + mark_as_advanced(CIVETWEB_CHECK_MD5_HASH) + + # Build the testing + add_subdirectory(test) +endif() + +# Set up CPack +include(InstallRequiredSystemLibraries) +set(CPACK_PACKAGE_VENDOR "civetweb Contributors") +set(CPACK_PACKAGE_CONTACT "[email protected]") +set(CPACK_PACKAGE_VERSION_MAJOR "${CIVETWEB_VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${CIVETWEB_VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${CIVETWEB_VERSION_PATCH}") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A HTTP library and server") +set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md") +set(CPACK_STRIP_FILES TRUE) +set(CPACK_PACKAGE_DEPENDS "openssl") +if (CIVETWEB_ENABLE_LUA_SHARED) + set(CPACK_PACKAGE_DEPENDS "lua, ${CPACK_PACKAGE_DEPENDS}") +endif() + +# RPM Packaging +set(CPACK_RPM_PACKAGE_GROUP "Development/Libraries") +set(CPACK_RPM_PACKAGE_LICENSE "MIT") +set(CPACK_RPM_PACKAGE_ARCHITECTURE "${CIVETWEB_ARCHITECTURE}") +set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_PACKAGE_DEPENDS}") + +# Debian Packaging +set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${CIVETWEB_ARCHITECTURE}") +set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/civetweb/civetweb") +set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_PACKAGE_DEPENDS}") + +# WiX Packaging +# TODO: www.cmake.org/cmake/help/v3.0/module/CPackWIX.html + +# Finalize CPack settings +include(CPack) http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/thirdparty/civetweb-1.9.1/CREDITS.md ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.9.1/CREDITS.md b/thirdparty/civetweb-1.9.1/CREDITS.md new file mode 100644 index 0000000..b71f30a --- /dev/null +++ b/thirdparty/civetweb-1.9.1/CREDITS.md @@ -0,0 +1,143 @@ +# Civetweb Contributors + +* Alex Kozlov +* bel2125 +* Ben M. Ward +* brett +* Bjoern Petri +* Brian Lambert +* Brian Spratke +* cdbishop +* celeron55 +* Charles Olivi +* Christian Mauderer +* Christopher Galas +* cjh +* Daniel Oaks +* Daniel Rempel +* Danny Al-Gaaf +* Dave Brower +* David Arnold +* David Loffredo +* Dialga +* ehlertjd +* Eric Tsau +* Erik Beran +* F-Secure Corporation +* feneuilflo +* Fernando G. Aranda +* Grahack +* grenclave +* hansipie +* HariKamath Kamath +* Jack +* Jacob Skillin +* Jan Willem Janssen +* Jeremy Lin +* Jim Evans +* jmc- +* Jochen Scheib +* Joe Mucchiello +* Joel Gallant +* Johan De Taeye +* Jordan +* Jordan Shelley +* Joshua Boyd +* Joshua D. Boyd +* kalphamon +* Keith Kyzivat +* Kevin Wojniak +* Kimmo Mustonen +* Lammert Bies +* Lawrence +* Li Peng +* Lianghui +* Maarten Fremouw +* makrsmark +* Mark Lakata +* Martin Gaida +* Mateusz Gralka +* Matt Clarkson +* mingodad +* Morgan McGuire +* Neil Jensen +* Nick Hildebrant +* Nigel Stewart +* nihildeb +* No Face Press +* Patrick Trinkle +* Paul Sokolovsky +* Perttu Ahola +* Peter Foerster +* Philipp Friedenberger +* Philipp Hasper +* Red54 +* Richard Screene +* Sage Weil +* Sangwhan Moon +* Saumitra Vikram +* Scott Nations +* shantanugadgil +* SpaceLord +* sunfch +* thewaterymoon +* Thomas Davis +* tnoho +* Toni Wilk +* Ulrich Hertlein +* Walt Steverson +* William Greathouse +* xtne6f +* Yehuda Sadeh + +# Mongoose Contributors +Civetweb is based on the Mongoose code. The following users contributed to the original Mongoose release between 2010 and 2013. This list was generated from the Mongoose GIT logs. It does not contain contributions from the Mongoose mailing list. There is no record for contributors prior to 2010. + +* Sergey Lyubka +* Arnout Vandecappelle (Essensium/Mind) +* Benoît Amiaux +* Cody Hanson +* Colin Leitner +* Daniel Oaks +* Eric Bakan +* Erik Oomen +* Filipp Kovalev +* Ger Hobbelt +* Hendrik Polczynski +* Henrique Mendonça +* Igor Okulist +* Jay +* Joe Mucchiello +* John Safranek +* Joseph Mainwaring +* José Miguel Gonçalves +* KIU Shueng Chuan +* Katerina Blinova +* Konstantin Sorokin +* Marin Atanasov Nikolov +* Matt Healy +* Miguel Morales +* Mikhail Nikalyukin +* MikieMorales +* Mitch Hendrickson +* Nigel Stewart +* Pavel +* Pavel Khlebovich +* Rogerz Zhang +* Sebastian Reinhard +* Stefan Doehla +* Thileepan +* abadc0de +* arvidn +* bick +* ff.feng +* jmucchiello +* jwang +* lsm +* migal +* mlamb +* nullable.type +* shantanugadgil +* tayS +* test +* valenok http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/a9485aeb/thirdparty/civetweb-1.9.1/LICENSE.md ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.9.1/LICENSE.md b/thirdparty/civetweb-1.9.1/LICENSE.md new file mode 100644 index 0000000..263690e --- /dev/null +++ b/thirdparty/civetweb-1.9.1/LICENSE.md @@ -0,0 +1,210 @@ +ALL LICENSES +===== + +This document includes several copyright licenses for different +aspects of the software. Not all licenses may apply depending +on the features chosen. + + +Civetweb License +----- + +### Included with all features. + +> Copyright (c) 2013-2015 The CivetWeb developers ([CREDITS.md](https://github.com/civetweb/civetweb/blob/master/CREDITS.md)) +> +> Copyright (c) 2004-2013 Sergey Lyubka +> +> Copyright (c) 2013 No Face Press, LLC (Thomas Davis) +> +> Copyright (c) 2013 F-Secure Corporation +> +> 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 +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + + +Lua License +------ + +### Included only if built with Lua support. + +http://www.lua.org/license.html + +> Copyright (C) 1994-2015 Lua.org, PUC-Rio. +> +> 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 +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + + +SQLite3 License +------ + +### Included only if built with Lua and SQLite support. + +http://www.sqlite.org/copyright.html + +> 2001 September 15 +> +> The author disclaims copyright to this source code. In place of +> a legal notice, here is a blessing: +> +> May you do good and not evil. +> May you find forgiveness for yourself and forgive others. +> May you share freely, never taking more than you give. + + +lsqlite3 License +------ + +### Included only if built with Lua and SQLite support. + +> Copyright (C) 2002-2013 Tiago Dionizio, Doug Currie +> All rights reserved. +> Author : Tiago Dionizio <[email protected]> +> Author : Doug Currie <[email protected]> +> Library : lsqlite3 - a SQLite 3 database binding for Lua 5 +> +> 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 +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + + +Lua File System License +------ + +### Included only if built with Lua support. + +http://keplerproject.github.io/luafilesystem/license.html + +> Copyright © 2003 Kepler Project. +> +> 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 +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + + +LuaXML License +------ + +### Included only if built with Lua and LuaXML support. + +> LuaXML License +> +> LuaXml is licensed under the terms of the MIT license reproduced below, +> the same as Lua itself. This means that LuaXml is free software and can be +> used for both academic and commercial purposes at absolutely no cost. +> +> Copyright (C) 2007-2013 Gerald Franz, eludi.net +> +> 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 +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + + +Duktape License +------ + +### Included only if built with Duktape support. + +https://github.com/svaarala/duktape/blob/master/LICENSE.txt + +> =============== +> Duktape license +> =============== +> +> (http://opensource.org/licenses/MIT) +> +> Copyright (c) 2013-2015 by Duktape authors (see AUTHORS.rst) +> +> 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 +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + + +
