http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/VisualStudio/upload/upload.vcxproj ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/VisualStudio/upload/upload.vcxproj b/thirdparty/civetweb-1.10/VisualStudio/upload/upload.vcxproj new file mode 100644 index 0000000..4aec14c --- /dev/null +++ b/thirdparty/civetweb-1.10/VisualStudio/upload/upload.vcxproj @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\examples\upload\upload.c" /> + <ClCompile Include="..\..\src\civetweb.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\include\civetweb.h" /> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{882EC43C-2EEE-434B-A711-C845678D29C6}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>upload</RootNamespace> + <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v140</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>MultiByte</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <LinkIncremental>true</LinkIncremental> + <OutDir>$(SolutionDir)\$(Configuration)\$(Platform)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <LinkIncremental>true</LinkIncremental> + <OutDir>$(SolutionDir)\$(Configuration)\$(Platform)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <LinkIncremental>false</LinkIncremental> + <OutDir>$(SolutionDir)\$(Configuration)\$(Platform)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <LinkIncremental>false</LinkIncremental> + <OutDir>$(SolutionDir)\$(Configuration)\$(Platform)\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>NO_FILES;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>NO_FILES;WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>NO_FILES;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>NO_FILES;WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(ProjectDir)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/VisualStudio/upload/upload.vcxproj.filters ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/VisualStudio/upload/upload.vcxproj.filters b/thirdparty/civetweb-1.10/VisualStudio/upload/upload.vcxproj.filters new file mode 100644 index 0000000..fb2d247 --- /dev/null +++ b/thirdparty/civetweb-1.10/VisualStudio/upload/upload.vcxproj.filters @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A322342A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52E765}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AA145}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\src\civetweb.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\..\examples\upload\upload.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\include\civetweb.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> +</Project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/_config.yml ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/_config.yml b/thirdparty/civetweb-1.10/_config.yml new file mode 100644 index 0000000..259a24e --- /dev/null +++ b/thirdparty/civetweb-1.10/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-tactile \ No newline at end of file http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/appveyor.yml ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/appveyor.yml b/thirdparty/civetweb-1.10/appveyor.yml new file mode 100644 index 0000000..87455a2 --- /dev/null +++ b/thirdparty/civetweb-1.10/appveyor.yml @@ -0,0 +1,386 @@ +version: '{build}' + + +build: +# no automatic build in script mode + + +skip_commits: + # Builds just testing something on Travis CI don't need to be + # done on AppVeyor + message: /\[Travis\]/ + # Dont build, if only documentation was changed + files: + - '**/*.md' + + +environment: + enable_cxx: NO + enable_ssl_dynamic_loading: YES + enable_lua: NO + enable_lua_shared: NO + c_standard: auto + cxx_standard: auto + matrix: + # Use default values + - id: Default-x86 + compiler: msvc-19-seh + build_shared: NO + no_files: NO + enable_ipv6: NO + enable_ssl: YES + enable_websockets: NO + no_cgi: NO + no_caching: NO + configuration: Release + platform: x86 + - id: Default-x64 + compiler: msvc-19-seh + build_shared: NO + no_files: NO + enable_ipv6: NO + enable_ssl: YES + enable_websockets: NO + no_cgi: NO + no_caching: NO + configuration: Release + platform: x64 + # Use default values + - id: Full-x86 + compiler: msvc-19-seh + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Release + platform: x86 + - id: Full-x64 + compiler: msvc-19-seh + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Release + platform: x64 + # Debug builds + - id: Full-x86-Debug + compiler: msvc-19-seh + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Debug + platform: x86 + - id: Full-x64-Debug + compiler: msvc-19-seh + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Debug + platform: x64 + # Minimum settings + - id: Minimal-x86 + compiler: msvc-19-seh + build_shared: NO + no_files: YES + enable_ipv6: NO + enable_ssl: NO + enable_websockets: NO + no_cgi: YES + no_caching: YeS + configuration: Release + platform: x86 + - id: Minimal-x64 + compiler: msvc-19-seh + build_shared: NO + no_files: YES + enable_ipv6: NO + enable_ssl: NO + enable_websockets: NO + no_cgi: YES + no_caching: YeS + configuration: Release + platform: x64 + # Test shared and debug build + - id: Shared-default-x86 + compiler: msvc-19-seh + build_shared: YES + no_files: NO + enable_ipv6: NO + enable_ssl: YES + enable_websockets: NO + no_cgi: NO + no_caching: NO + configuration: Release + platform: x86 + - id: Shared-default-x64 + compiler: msvc-19-seh + build_shared: YES + no_files: NO + enable_ipv6: NO + enable_ssl: YES + enable_websockets: NO + no_cgi: NO + no_caching: NO + configuration: Release + platform: x64 + # MinGW + - id: Full-GCC-x64 + compiler: gcc-5.1.0-posix + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Release + platform: x64 + # Visual Studio 2010 + - id: Full-VS2010-x86 + compiler: msvc-16-seh + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Release + platform: x86 + # Visual Studio 2012 + - id: Full-VS2012-x86 + compiler: msvc-17-seh + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Release + platform: x86 + # Visual Studio 2013 + - id: Full-VS2013-x86 + compiler: msvc-18-seh + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Release + platform: x86 + - id: Full-VS2013-x64 + compiler: msvc-18-seh + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Release + platform: x64 + # Visual Studio 2015 is default + # Visual Studio 2017 is not yet default + - id: Full-VS2017-x86 + compiler: msvc-20-seh + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Release + platform: x86 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + - id: Full-VS2017-x64 + compiler: msvc-20-seh + build_shared: NO + no_files: NO + enable_ipv6: YES + enable_ssl: YES + enable_websockets: YES + no_cgi: NO + no_caching: NO + configuration: Release + platform: x64 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + + +install: + # Derive some extra information + - set build_type=%configuration% + - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_name=%%a") + - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_version=%%b") + - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_threading=%%c") + - if "%platform%"=="x64" (set arch=x86_64) + - if "%platform%"=="x86" (set arch=i686) + # Download the specific version of MinGW + - if "%compiler_name%"=="gcc" (@set "mingw_output_folder=C:\mingw-builds") + - if "%compiler_name%"=="gcc" ( + @for /f %%a in ( + 'call mingw.cmd + /version "%compiler_version%" + /arch "%arch%" + /threading "%compiler_threading%" + "%mingw_output_folder%"' + ) do @set "compiler_path=%%a" + ) + - if "%compiler_name%"=="gcc" (@set "mingw_log_folder=%mingw_output_folder%\logs") + - if exist "%mingw_log_folder%" @for /f %%f in ('dir /b /oD /tc "%mingw_log_folder%"') do @set "mingw_log_file=%mingw_log_folder%\%%f" + - if exist "%mingw_log_file%" powershell Push-AppveyorArtifact "%mingw_log_file%" -FileName mingw-download.log + # Get OpenSSL + # + # OpenSSL should already be installed, according to + # - http://help.appveyor.com/discussions/questions/1132-openssl-installation-issues + # - https://github.com/appveyor/ci/issues/576 + # + - cmd: set PATH=%PATH%;C:\OpenSSL-Win32;C:\OpenSSL-Win64 + - dir C:\OpenSSL-Win32 + - dir C:\OpenSSL-Win64 + - path + + +before_build: + # Remove sh.exe from the path otherwise CMake will complain: + # "sh.exe was found in your PATH, here: C:/Program Files/Git/usr/bin/sh.exe" + # and the MinGW build will not work (the Visual Studio build does not care). + # See http://help.appveyor.com/discussions/problems/3193-cmake-building-for-mingw-issue-with-git-shexe + # The entire directory containing sh.exe could be removed from the PATH environment: + # - set PATH=%PATH:C:\Program Files\Git\usr\bin;=% + # However, this will also remove all other programs in this directory from the PATH. + # In particular "patch" is still required. + # So, just rename sh.exe: + - ren "C:\Program Files\Git\usr\bin\sh.exe" _sh.exe + # Set up mingw commands + - if "%compiler_name%"=="gcc" (set "generator=MinGW Makefiles") + - if "%compiler_name%"=="gcc" (set "build=mingw32-make -j4") + - if "%compiler_name%"=="gcc" (set "test=mingw32-make test") + # MSVC specific commands + # Note: The minimum version officially supported for CivetWeb is VS2010. Older ones might work or not. + - if "%compiler_version%"=="14" (set "vs_version=8" & set "vs_year=2005") + - if "%compiler_version%"=="15" (set "vs_version=9" & set "vs_year=2008") + - if "%compiler_version%"=="16" (set "vs_version=10" & set "vs_year=2010") + - if "%compiler_version%"=="17" (set "vs_version=11" & set "vs_year=2012") + - if "%compiler_version%"=="18" (set "vs_version=12" & set "vs_year=2013") + - if "%compiler_version%"=="19" (set "vs_version=14" & set "vs_year=2015") + - if "%compiler_version%"=="20" (set "vs_version=15" & set "vs_year=2017") + - if "%compiler_name%"=="msvc" (set "generator=Visual Studio %vs_version% %vs_year%") + - if "%compiler_name%"=="msvc" ( + if "%platform%"=="x64" ( + set "generator=%generator% Win64" + ) + ) + - if %compiler_version% gtr 9 (set platform=%platform:x86=Win32%) + - if "%compiler_name%"=="msvc" (set "msbuild_opts=/clp:OnlyErrors;OnlyWarnings /nologo /m /v:m") + - if "%compiler_name%"=="msvc" (set "build=msbuild %msbuild_opts% /p:Configuration=%configuration% /p:Platform=%platform% civetweb.sln") + - if "%compiler_name%"=="msvc" (set "test=msbuild %msbuild_opts% RUN_TESTS.vcxproj") + # Add the compiler path if needed + - if not "%compiler_path%"=="" (set "PATH=%PATH%;%compiler_path%") + # git bash conflicts with MinGW makefiles + - if "%generator%"=="MinGW Makefiles" (set "PATH=%PATH:C:\Program Files (x86)\Git\bin=%") + # Useful locations + - set "source_path=%cd%" + - set "output_path=%source_path%\output" + - set "build_path=%output_path%\build" + - set "install_path=%output_path%\install" + - set "third_party_dir=C:\third-party" + # Check some settings of the build server + - ver + - cd + - dir + - ipconfig /all + # Generate the build scripts with CMake + - mkdir "%build_path%" + - cd "%build_path%" + - cmake --version + - appveyor AddMessage -Category Information "Generating '%generator%'" + - cmake + -G "%generator%" + -DCMAKE_BUILD_TYPE=%build_type% + -DBUILD_SHARED_LIBS=%build_shared% + -DCIVETWEB_SERVE_NO_FILES=%no_files% + "-DCIVETWEB_THIRD_PARTY_DIR=%third_party_dir:\=\\%" + -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES + -DCIVETWEB_ENABLE_SSL=%enable_ssl% + -DCIVETWEB_DISABLE_CGI=%no_cgi% + -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=%enable_ssl_dynamic_loading% + -DCIVETWEB_ENABLE_WEBSOCKETS=%enable_websockets% + -DCIVETWEB_ENABLE_CXX=%enable_cxx% + -DCIVETWEB_ENABLE_LUA=%enable_lua% + -DCIVETWEB_ENABLE_LUA_SHARED=%enable_lua_shared% + -DCIVETWEB_DISABLE_CACHING=%no_caching% + -DCIVETWEB_C_STANDARD=%c_standard% + -DCIVETWEB_CXX_STANDARD=%cxx_standard% + "%source_path%" + - powershell Push-AppveyorArtifact CMakeCache.txt + - cd "%source_path%" + +build_script: + - cd + - cd "%build_path%" + - appveyor AddMessage -Category Information "Build command '%build%'" + - cmd /c "%build%" + - cd "%source_path%" + +test_script: + - cd "%build_path%" + - appveyor AddMessage -Category Information "Test command '%build%'" + - set CTEST_OUTPUT_ON_FAILURE=1 + - cmd /c "%test%" + - cd "%source_path%" + + - set "output_path=%source_path%\output" + - set "build_path=%output_path%\build" + - set "install_path=%output_path%\install" + - set "third_party_dir=C:\third-party" + +after_test: + - echo "Current directory:" + - cd + - dir + - md dist + - if "%build_type%"=="Release" (cmake "-DCMAKE_INSTALL_PREFIX=%install_path%" -P "%build_path%/cmake_install.cmake") + - dir dist\ + - echo "Output directory:" + - dir %output_path% + - echo "Build directory:" + - dir %build_path% + - if "%build_type%"=="Release" (echo "Install directory:") + - if "%build_type%"=="Release" (dir %install_path%) + - if "%build_type%"=="Release" (dir %install_path%\bin) + - if "%build_type%"=="Release" (dir %install_path%\include) + - if "%build_type%"=="Release" (dir %install_path%\lib) + - if "%build_type%"=="Release" (copy "%install_path%"\include dist\) + - if "%build_type%"=="Release" (copy "%install_path%"\bin\*.exe dist\) + - echo "Dist directory:" + - dir dist\ + +matrix: + fast_finish: false + +cache: + - C:\mingw-builds -> mingw.cmd + - C:\third-party -> **\CMakeLists.txt + - C:\ssl + +artifacts: + - path: dist\* + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/build.cmd ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/build.cmd b/thirdparty/civetweb-1.10/build.cmd new file mode 100644 index 0000000..8ccf0e4 --- /dev/null +++ b/thirdparty/civetweb-1.10/build.cmd @@ -0,0 +1,866 @@ +:: Make sure the extensions are enabled +@verify other 2>nul +@setlocal EnableDelayedExpansion +@if errorlevel 1 ( + call :print_usage "Failed to enable extensions" + exit /b 1 +) + +::Change the code page to unicode +@chcp 65001 1>nul 2>nul +@if errorlevel 1 ( + call :print_usage "Failed to change the code page to unicode" + exit /b 1 +) + +:: Set up some global variables +@set project=civetweb +@set "script_name=%~nx0" +@set "script_folder=%~dp0" +@set "script_folder=%script_folder:~0,-1%" +@set "output_path=%script_folder%\output" +@set "build_path=%output_path%\build" +@set "install_path=%output_path%\install" +@set build_shared=OFF +@set build_type=Release +@set dependency_path=%TEMP%\%project%-build-dependencies + +:: Check the command line parameters +@set logging_level=1 +@set "options=%* " +@if not "!options!"=="!options:/? =!" set usage="Convenience script to build %project% with CMake" +@for %%a in (%options%) do @( + @set arg=%%~a + @set arg=!arg: =! + @set one=!arg:~0,1! + @set two=!arg:~0,2! + @if /i [!arg!] == [/q] set quiet=true + @if /i [!two!] == [/v] call :verbosity "!arg!" + @if /i [!arg!] == [/s] set build_shared=ON + @if /i [!arg!] == [/d] set build_type=Debug + @if /i not [!one!] == [/] ( + if not defined generator ( + set generator=!arg! + ) else ( + set usage="Too many generators: !method! !arg!" ^ + "There should only be one generator parameter" + ) + ) +) +@if defined quiet ( + set logging_level=0 +) +@if not defined generator ( + set generator=MSVC +) +@if /i not [%generator%] == [MinGW] ( + if /i not [%generator%] == [MSVC] ( + call :print_usage "Invalid argument: %generator%" + exit /b 1 + ) +) + +:: Set up the logging +@set log_folder=%output_path%\logs +@call :iso8601 timestamp +@set log_path=%log_folder%\%timestamp%.log +@set log_keep=10 + +:: Only keep a certain amount of logs +@set /a "log_keep=log_keep-1" +@if not exist %log_folder% @mkdir %log_folder% +@for /f "skip=%log_keep%" %%f in ('dir /b /o-D /tc %log_folder%') do @( + call :log 4 "Removing old log file %log_folder%\%%f" + del %log_folder%\%%f +) + +:: Set up some more global variables +@call :architecture arch +@call :windows_version win_ver win_ver_major win_ver_minor win_ver_rev +@call :script_source script_source +@if [%script_source%] == [explorer] ( + set /a "logging_level=logging_level+1" +) + +:: Print the usage or start the script +@set exit_code=0 +@if defined usage ( + call :print_usage %usage% +) else ( + call :main + @if errorlevel 1 ( + @call :log 0 "Failed to build the %project% project" + @set exit_code=1 + ) +) + +:: Tell the user where the built files are +@call :log 5 +@call :log 0 "The built files are available in %install_path%" + +:: Stop the script if the user double clicked +@if [%script_source%] == [explorer] ( + pause +) + +@exit /b %exit_code% +@endlocal +@goto :eof + +:: -------------------------- Functions start here ---------------------------- + +:main - Main function that performs the build +@setlocal +@call :log 6 +@call :log 2 "Welcome to the %project% build script" +@call :log 6 "------------------------------------" +@call :log 6 +@call :log 2 "This script builds the project using CMake" +@call :log 6 +@call :log 2 "Generating %generator%..." +@call :log 6 +@set methods=dependencies ^ + generate ^ + build ^ + install +@for %%m in (%methods%) do @( + call :log 3 "Excuting the '%%m' method" + call :log 8 + call :%%~m + if errorlevel 1 ( + call :log 0 "Failed to complete the '%%~m' dependency routine" + call :log 0 "View the log at %log_path%" + exit /b 1 + ) +) +@call :log 6 "------------------------------------" +@call :log 2 "Build complete" +@call :log 6 +@endlocal +@goto :eof + +:print_usage - Prints the usage of the script +:: %* - message to print, each argument on it's own line +@setlocal +@for %%a in (%*) do @echo.%%~a +@echo. +@echo.build [/?][/v[v...]^|/q][MinGW^|MSVC] +@echo. +@echo. [MinGW^|(MSVC)] +@echo. Builds the library with one of the compilers +@echo. /s Builds shared libraries +@echo. /d Builds a debug variant of the project +@echo. /v Sets the output to be more verbose +@echo. /v[v...] Extra verbosity, /vv, /vvv, etc +@echo. /q Quiets the output +@echo. /? Shows this usage message +@echo. +@endlocal +@goto :eof + +:dependencies - Installs any prerequisites for the build +@setlocal EnableDelayedExpansion +@if errorlevel 1 ( + call :log 0 "Failed to enable extensions" + exit /b 1 +) +@call :log 5 +@call :log 0 "Installing dependencies for %generator%" +@if /i [%generator%] == [MinGW] ( + call :mingw compiler_path + @if errorlevel 1 ( + @call :log 5 + @call :log 0 "Failed to find MinGW" + @exit /b 1 + ) + set "PATH=!compiler_path!;%PATH%" + @call :find_in_path gcc_executable gcc.exe + @if errorlevel 1 ( + @call :log 5 + @call :log 0 "Failed to find gcc.exe" + @exit /b 1 + ) +) +@if [%reboot_required%] equ [1] call :reboot +@endlocal & set "PATH=%PATH%" +@goto :eof + +:generate - Uses CMake to generate the build files +@setlocal EnableDelayedExpansion +@if errorlevel 1 ( + call :log 0 "Failed to enable extensions" + exit /b 1 +) +@call :log 5 +@call :log 0 "Generating CMake files for %generator%" +@call :cmake cmake_executable +@if errorlevel 1 ( + @call :log 5 + @call :log 0 "Need CMake to create the build files" + @exit /b 1 +) +@if /i [%generator%] == [MinGW] @( + @set "generator_var=-G "MinGW Makefiles^"" +) +@if /i [%generator%] == [MSVC] @( + rem We could figure out the correct MSVS generator here +) +@call :iso8601 iso8601 +@set output=%temp%\cmake-%iso8601%.log +@if not exist %build_path% mkdir %build_path% +@cd %build_path% +@"%cmake_executable%" ^ + !generator_var! ^ + -DCMAKE_BUILD_TYPE=!build_type! ^ + -DBUILD_SHARED_LIBS=!build_shared! ^ + "%script_folder%" > "%output%" +@if errorlevel 1 ( + @call :log 5 + @call :log 0 "Failed to generate build files with CMake" + @call :log_append "%output%" + @cd %script_folder% + @exit /b 1 +) +@cd %script_folder% +@endlocal +@goto :eof + +:build - Builds the library +@setlocal EnableDelayedExpansion +@if errorlevel 1 ( + call :log 0 "Failed to enable extensions" + exit /b 1 +) +@call :log 5 +@call :log 0 "Building %project% with %generator%" +@if /i [%generator%] == [MinGW] @( + @call :find_in_path mingw32_make_executable mingw32-make.exe + @if errorlevel 1 ( + @call :log 5 + @call :log 0 "Failed to find mingw32-make" + @exit /b 1 + ) + @set "build_command=^"!mingw32_make_executable!^" all test" +) +@if /i [%generator%] == [MSVC] @( + @call :msbuild msbuild_executable + @if errorlevel 1 ( + @call :log 5 + @call :log 0 "Failed to find MSBuild" + @exit /b 1 + ) + @set "build_command=^"!msbuild_executable!^" /m:4 /p:Configuration=%build_type% %project%.sln" +) +@if not defined build_command ( + @call :log 5 + @call :log 0 "No build command for %generator%" + @exit /b 1 +) +@cd %build_path% +@call :iso8601 iso8601 +@set output=%temp%\build-%iso8601%.log +@call :log 7 +@call :log 2 "Build command: %build_command:"=%" +@%build_command% > "%output%" +@if errorlevel 1 ( + @call :log_append "%output%" + @call :log 5 + @call :log 0 "Failed to complete the build" + @exit /b 1 +) +@call :log_append "%output%" +@cd %script_folder% +@endlocal +@goto :eof + +:install - Installs the built files +@setlocal +@call :log 5 +@call :log 0 "Installing built files" +@call :cmake cmake_executable +@if errorlevel 1 ( + @call :log 5 + @call :log 0 "Need CMake to install the built files" + @exit /b 1 +) +@call :iso8601 iso8601 +@set output=%temp%\install-%iso8601%.log +@"%cmake_executable%" ^ + "-DCMAKE_INSTALL_PREFIX=%install_path%" ^ + -P "%build_path%/cmake_install.cmake" ^ + > "%output%" +@if errorlevel 1 ( + @call :log_append "%output%" + @call :log 5 + @call :log 0 "Failed to install the files" + @exit /b 1 +) +@call :log_append "%output%" +@endlocal +@goto :eof + +:script_source - Determines if the script was ran from the cli or explorer +:: %1 - The return variable [cli|explorer] +@verify other 2>nul +@setlocal EnableDelayedExpansion +@if errorlevel 1 ( + call :log 0 "Failed to enable extensions" + exit /b 1 +) +@call :log 3 "Attempting to detect the script source" +@echo "The invocation command was: '%cmdcmdline%'" >> %log_path% +@for /f "tokens=1-3,*" %%a in ("%cmdcmdline%") do @( + set cmd=%%~a + set arg1=%%~b + set arg2=%%~c + set rest=%%~d +) +@set quote=" +@if "!arg2:~0,1!" equ "!quote!" ( + if "!arg2:~-1!" neq "!quote!" ( + set "arg2=!arg2:~1!" + ) +) +@call :log 4 "cmd = %cmd%" +@call :log 4 "arg1 = %arg1%" +@call :log 4 "arg2 = %arg2%" +@call :log 4 "rest = %rest%" +@call :log 4 "src = %~f0" +@if /i "%arg2%" == "call" ( + set script_source=cli +) else ( + @if /i "%arg1%" == "/c" ( + set script_source=explorer + ) else ( + set script_source=cli + ) +) +@call :log 3 "The script was invoked from %script_source%" +@endlocal & set "%~1=%script_source%" +@goto :eof + +:architecture - Finds the system architecture +:: %1 - The return variable [x86|x86_64] +@setlocal +@call :log 3 "Determining the processor architecture" +@set "key=HKLM\System\CurrentControlSet\Control\Session Manager\Environment" +@set "var=PROCESSOR_ARCHITECTURE" +@for /f "skip=2 tokens=2,*" %%a in ('reg query "%key%" /v "%var%"') do @set "arch=%%b" +@if "%arch%" == "AMD64" set arch=x86_64 +@call :log 4 "arch = %arch%" +@endlocal & set "%~1=%arch%" +@goto :eof + +:md5 - Gets the MD5 checksum for a file +:: %1 - The hash +:: %2 - The file path +@setlocal +@set var=%~1 +@set file_path=%~2 +@if [%var%] == [] exit /b 1 +@if "%file_path%" == "" exit /b 1 +@if not exist "%file_path%" exit /b 1 +@for /f "skip=3 tokens=1,*" %%a in ('powershell Get-FileHash -Algorithm MD5 "'%file_path%'"') do @set hash=%%b +@if not defined hash ( + call :log 6 + call :log 0 "Failed to get MD5 hash for %file_path%" + exit /b 1 +) +@endlocal & set "%var%=%hash: =%" +@goto :eof + +:windows_version - Checks the windows version +:: %1 - The windows version +:: %2 - The major version number return variable +:: %3 - The minor version number return variable +:: %4 - The revision version number return variable +@setlocal +@call :log 3 "Retrieving the Windows version" +@for /f "tokens=2 delims=[]" %%x in ('ver') do @set win_ver=%%x +@set win_ver=%win_ver:Version =% +@set win_ver_major=%win_ver:~0,1% +@set win_ver_minor=%win_ver:~2,1% +@set win_ver_rev=%win_ver:~4% +@call :log 4 "win_ver = %win_ver%" +@endlocal & set "%~1=%win_ver%" ^ + & set "%~2=%win_ver_major%" ^ + & set "%~3=%win_ver_minor%" ^ + & set "%~4=%win_ver_rev%" +@goto :eof + +:find_in_path - Finds a program of file in the PATH +@setlocal +@set var=%~1 +@set file=%~2 +@if [%var%] == [] exit /b 1 +@if [%file%] == [] exit /b 1 +@call :log 3 "Searching PATH for %file%" +@for %%x in ("%file%") do @set "file_path=%%~f$PATH:x" +@if not defined file_path exit /b 1 +@endlocal & set "%var%=%file_path%" +@goto :eof + +:administrator_check - Checks for administrator priviledges +@setlocal +@call :log 2 "Checking for administrator priviledges" +@set "key=HKLM\Software\VCA\Tool Chain\Admin Check" +@reg add "%key%" /v Elevated /t REG_DWORD /d 1 /f > nul 2>&1 +@if errorlevel 1 exit /b 1 +@reg delete "%key%" /va /f > nul 2>&1 +@endlocal +@goto :eof + +:log_append - Appends another file into the current logging file +:: %1 - the file_path to the file to concatenate +@setlocal +@set "file_path=%~1" +@if [%file_path%] == [] exit /b 1 +@call :log 3 "Appending to log: %file_path%" +@call :iso8601 iso8601 +@set "temp_log=%temp%\append-%iso8601%.log" +@call :log 4 "Using temp file %temp_log%" +@type "%log_path%" "%file_path%" > "%temp_log%" 2>nul +@move /y "%temp_log%" "%log_path%" 1>nul +@del "%file_path%" 2>nul +@del "%temp_log%" 2>nul +@endlocal +@goto :eof + +:iso8601 - Returns the current time in ISO8601 format +:: %1 - the return variable +:: %2 - format [extended|basic*] +:: iso8601 - contains the resulting timestamp +@setlocal +@wmic Alias /? >NUL 2>&1 || @exit /b 1 +@set "var=%~1" +@if "%var%" == "" @exit /b 1 +@set "format=%~2" +@if "%format%" == "" set format=basic +@for /F "skip=1 tokens=1-6" %%g IN ('wmic Path Win32_UTCTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') do @( + @if "%%~l"=="" goto :iso8601_done + @set "yyyy=%%l" + @set "mm=00%%j" + @set "dd=00%%g" + @set "hour=00%%h" + @set "minute=00%%i" + @set "seconds=00%%k" +) +:iso8601_done +@set mm=%mm:~-2% +@set dd=%dd:~-2% +@set hour=%hour:~-2% +@set minute=%minute:~-2% +@set seconds=%seconds:~-2% +@if /i [%format%] == [extended] ( + set iso8601=%yyyy%-%mm%-%dd%T%hour%:%minute%:%seconds%Z +) else ( + if /i [%format%] == [basic] ( + set iso8601=%yyyy%%mm%%dd%T%hour%%minute%%seconds%Z + ) else ( + @exit /b 1 + ) +) +@set iso8601=%iso8601: =0% +@endlocal & set %var%=%iso8601% +@goto :eof + +:verbosity - Processes the verbosity parameter '/v[v...] +:: %1 - verbosity given on the command line +:: logging_level - set to the number of v's +@setlocal +@set logging_level=0 +@set verbosity=%~1 +:verbosity_loop +@set verbosity=%verbosity:~1% +@if not [%verbosity%] == [] @( + set /a "logging_level=logging_level+1" + goto verbosity_loop +) +@endlocal & set logging_level=%logging_level% +@goto :eof + +:log - Logs a message, depending on verbosity +:: %1 - level +:: [0-4] for CLI logging +:: [5-9] for GUI logging +:: %2 - message to print +@setlocal +@set "level=%~1" +@set "msg=%~2" +@if "%log_folder%" == "" ( + echo Logging was used to early in the script, log_folder isn't set yet + goto :eof +) +@if "%log_path%" == "" ( + echo Logging was used to early in the script, log_path isn't set yet + goto :eof +) +@if not exist "%log_folder%" mkdir "%log_folder%" +@if not exist "%log_path%" echo. 1>nul 2>"%log_path%" +@echo.%msg% >> "%log_path%" +@if %level% geq 5 ( + @if [%script_source%] == [explorer] ( + set /a "level=level-5" + ) else ( + @goto :eof + ) +) +@if "%logging_level%" == "" ( + echo Logging was used to early in the script, logging_level isn't set yet + goto :eof +) +@if %logging_level% geq %level% echo.%msg% 1>&2 +@endlocal +@goto :eof + + +:start_browser - Opens the default browser to a URL +:: %1 - the url to open +@setlocal +@set url=%~1 +@call :log 4 "Opening default browser: %url%" +@start %url% +@endlocal +@goto :eof + +:find_cmake - Finds cmake on the command line or in the registry +:: %1 - the cmake file path +@setlocal +@set var=%~1 +@if [%var%] == [] exit /b 1 +@call :log 6 +@call :log 6 "Finding CMake" +@call :log 6 "--------------" +@call :find_in_path cmake_executable cmake.exe +@if not errorlevel 1 goto found_cmake +@for /l %%i in (5,-1,0) do @( +@for /l %%j in (9,-1,0) do @( +@for /l %%k in (9,-1,0) do @( +@for %%l in (HKCU HKLM) do @( +@for %%m in (SOFTWARE SOFTWARE\Wow6432Node) do @( + @reg query "%%l\%%m\Kitware\CMake %%i.%%j.%%k" /ve > nul 2>nul + @if not errorlevel 1 ( + @for /f "skip=2 tokens=2,*" %%a in ('reg query "%%l\%%m\Kitware\CMake %%i.%%j.%%k" /ve') do @( + @if exist "%%b\bin\cmake.exe" ( + @set "cmake_executable=%%b\bin\cmake.exe" + goto found_cmake + ) + ) + ) +))))) +@call :log 5 +@call :log 0 "Failed to find cmake" +@exit /b 1 +:found_cmake +@endlocal & set "%var%=%cmake_executable%" +@goto :eof + +:cmake - Finds cmake and installs it if necessary +:: %1 - the cmake file path +@setlocal +@set var=%~1 +@if [%var%] == [] exit /b 1 +@call :log 6 +@call :log 6 "Checking for CMake" +@call :log 6 "------------------" +@call :find_cmake cmake_executable cmake.exe +@if not errorlevel 1 goto got_cmake +@set checksum=C00267A3D3D9619A7A2E8FA4F46D7698 +@set version=3.2.2 +@call :install_nsis cmake http://www.cmake.org/files/v%version:~0,3%/cmake-%version%-win32-x86.exe %checksum% +@if errorlevel 1 ( + call :log 5 + call :log 0 "Failed to install cmake" + @exit /b 1 +) +@call :find_cmake cmake_executable cmake.exe +@if not errorlevel 1 goto got_cmake +@call :log 5 +@call :log 0 "Failed to check for cmake" +@exit /b 1 +:got_cmake +@endlocal & set "%var%=%cmake_executable%" +@goto :eof + +:mingw - Finds MinGW, installing it if needed +:: %1 - the compiler path that should be added to PATH +@setlocal EnableDelayedExpansion +@if errorlevel 1 ( + @call :log 5 + @call :log 0 "Failed to enable extensions" + @exit /b 1 +) +@set var=%~1 +@if [%var%] == [] exit /b 1 +@call :log 6 +@call :log 6 "Checking for MinGW" +@call :log 6 "------------------" +@call :find_in_path gcc_executable gcc.exe +@if not errorlevel 1 ( + @for %%a in ("%gcc_executable%") do @set "compiler_path=%%~dpa" + goto got_mingw +) +@call :log 7 +@call :log 2 "Downloading MinGW" +@if %logging_level% leq 1 set "logging=/q" +@if %logging_level% gtr 1 set "logging=/v" +@set output_path= +@for /f %%a in ('call + "%script_folder%\mingw.cmd" + %logging% + /arch "%arch%" + "%dependency_path%"' +) do @set "compiler_path=%%a\" +@if not defined compiler_path ( + @call :log_append "%output%" + @call :log 5 + @call :log 0 "Failed to download MinGW" + @exit /b 1 +) +:got_mingw +@call :log 5 +@call :log 0 "Found MinGW: %compiler_path%gcc.exe" +@endlocal & set "%var%=%compiler_path%" +@goto :eof + +:msbuild - Finds MSBuild +:: %1 - the path to MSBuild executable +@setlocal +@set var=%~1 +@if [%var%] == [] exit /b 1 +@call :find_in_path msbuild_executable msbuild.exe +@if not errorlevel 1 goto got_msbuild +@for /l %%i in (20,-1,4) do @( +@for /l %%j in (9,-1,0) do @( +@for %%k in (HKCU HKLM) do @( +@for %%l in (SOFTWARE SOFTWARE\Wow6432Node) do @( + @reg query "%%k\%%l\Microsoft\MSBuild\%%i.%%j" /v MSBuildOverrideTasksPath > nul 2>nul + @if not errorlevel 1 ( + @for /f "skip=2 tokens=2,*" %%a in ('reg query "%%k\%%l\Microsoft\MSBuild\%%i.%%j" /v MSBuildOverrideTasksPath') do @( + @if exist "%%bmsbuild.exe" ( + @set "msbuild_executable=%%bmsbuild.exe" + goto got_msbuild + ) + ) + ) +)))) +@call :log 5 +@call :log 0 "Failed to check for MSBuild" +@exit /b 1 +:got_msbuild +@endlocal & set "%var%=%msbuild_executable%" +@goto :eof + +:download - Downloads a file from the internet +:: %1 - the url of the file to download +:: %2 - the file to download to +:: %3 - the MD5 checksum of the file (optional) +@setlocal EnableDelayedExpansion +@if errorlevel 1 ( + call :print_usage "Failed to enable extensions" + exit /b 1 +) +@set url=%~1 +@set file_path=%~2 +@set checksum=%~3 +@for %%a in (%file_path%) do @set dir_path=%%~dpa +@for %%a in (%file_path%) do @set file_name=%%~nxa +@if [%url%] == [] exit /b 1 +@if [%file_path%] == [] exit /b 1 +@if [%dir_path%] == [] exit /b 1 +@if [%file_name%] == [] exit /b 1 +@if not exist "%dir_path%" mkdir "%dir_path%" +@call :log 1 "Downloading %url%" +@call :iso8601 iso8601 +@set temp_path=%temp%\download-%iso8601%-%file_name% +@call :log 3 "Using temp file %temp_path%" +@powershell Invoke-WebRequest "%url%" -OutFile %temp_path% +@if errorlevel 1 ( + call :log 0 "Failed to download %url%" + exit /b 1 +) +@if [%checksum%] neq [] ( + @call :log 4 "Checking %checksum% against %temp_path%" + @call :md5 hash "%temp_path%" + if "!hash!" neq "%checksum%" ( + call :log 0 "Failed to match checksum: %temp_path%" + call :log 0 "Hash : !hash!" + call :log 0 "Checksum: %checksum%" + exit /b 1 + ) else ( + call :log 3 "Checksum matched: %temp_path%" + call :log 3 "Hash : !hash!" + call :log 3 "Checksum: %checksum%" + ) +) +@call :log 4 "Renaming %temp_path% to %file_path%" +@move /y "%temp_path%" "%file_path%" 1>nul +@endlocal +@goto :eof + +:install_msi - Installs a dependency from an Microsoft Installer package (.msi) +:: %1 - [string] name of the project to install +:: %2 - The location of the .msi, a url must start with 'http://' or file_path +:: %3 - The checksum of the msi (optional) +@setlocal +@set name=%~1 +@set file_path=%~2 +@set checksum=%~3 +@set msi=%~nx2 +@set msi_path=%dependency_path%\%msi% +@if [%name%] == [] exit /b 1 +@if [%file_path%] == [] exit /b 1 +@if [%msi%] == [] exit /b 1 +@if [%msi_path%] == [] exit /b 1 +@for %%x in (msiexec.exe) do @set "msiexec_path=%%~f$PATH:x" +@if "msiexec_path" == "" ( + call :log 0 "Failed to find the Microsoft package installer (msiexec.exe)" + call :log 6 + call :log 0 "Please install it from the Microsoft Download center" + call :log 6 + choice /C YN /T 60 /D N /M "Would you like to go there now?" + if !errorlevel! equ 1 call :start_browser ^ + "http://search.microsoft.com/DownloadResults.aspx?q=Windows+Installer" + exit /b 1 +) +@call :log 6 +@call :log 1 "Installing the '%name%' dependency" +@call :log 6 "-------------------------------------" +@call :administrator_check +@if errorlevel 1 ( + call :log 0 "You must run %~nx0 in elevated mode to install '%name%'" + call :log 5 "Right-Click and select 'Run as Administrator' + call :log 0 "Install the dependency manually by running %file_path%" + @exit /b 740 +) +@if [%file_path:~0,4%] == [http] ( + if not exist "%msi_path%" ( + call :download "%file_path%" "%msi_path%" %checksum% + if errorlevel 1 ( + call :log 0 "Failed to download the %name% dependency" + exit /b 1 + ) + ) +) else ( + call :log 2 "Copying MSI %file_path% to %msi_path%" + call :log 7 + if not exist "%msi_path%" ( + xcopy /q /y /z "%file_path%" "%msi_path%" 1>nul + if errorlevel 1 ( + call :log 0 "Failed to copy the Microsoft Installer" + exit /b 1 + ) + ) +) +@call :log 1 "Running the %msi%" +@call :log 6 +@set msi_log=%temp%\msiexec-%timestamp%.log +@call :log 3 "Logging to: %msi_log%" +@msiexec /i "%msi_path%" /passive /log "%msi_log%" ALLUSERS=1 +@set msi_errorlevel=%errorlevel% +@call :log_append "%msi_log%" +@if %msi_errorlevel% equ 0 goto install_msi_success +@if %msi_errorlevel% equ 3010 goto install_msi_success_reboot +@if %msi_errorlevel% equ 1641 goto install_msi_success_reboot +@if %msi_errorlevel% equ 3015 goto install_msi_in_progress_reboot +@if %msi_errorlevel% equ 1615 goto install_msi_in_progress_reboot +@call :log 0 "Microsoft Installer failed: %msi_errorlevel%" +@call :log 0 "Install the dependency manually by running %msi_path%" +@exit /b 1 +:install_msi_in_progress_reboot +@call :log 0 "The installation requires a reboot to continue" +@call :log 5 +@call :reboot +@exit /b 1 +:install_msi_success_reboot +@call :log 3 "The installation requires a reboot to be fully functional" +@set reboot_required=1 +:install_msi_success +@call :log 2 "Successfully installed %name%" +@call :log 7 +@endlocal & set reboot_required=%reboot_required% +@goto :eof + +:install_nsis - Installs a dependency from an Nullsoft Installer package (.exe) +:: %1 - [string] name of the project to install +:: %2 - The location of the .exe, a url must start with 'http://' or file_path +:: %3 - The checksum of the exe (optional) +@setlocal +@set name=%~1 +@set file_path=%~2 +@set checksum=%~3 +@set exe=%~nx2 +@set exe_path=%dependency_path%\%exe% +@if [%name%] == [] exit /b 1 +@if [%file_path%] == [] exit /b 1 +@if [%exe%] == [] exit /b 1 +@if [%exe_path%] == [] exit /b 1 +@call :log 6 +@call :log 1 "Installing the '%name%' dependency" +@call :log 6 "-------------------------------------" +@call :administrator_check +@if errorlevel 1 ( + call :log 0 "You must run %~nx0 in elevated mode to install '%name%'" + call :log 5 "Right-Click and select 'Run as Administrator' + call :log 0 "Install the dependency manually by running %file_path%" + @exit /b 740 +) +@if [%file_path:~0,4%] == [http] ( + if not exist "%exe_path%" ( + call :download "%file_path%" "%exe_path%" %checksum% + if errorlevel 1 ( + call :log 0 "Failed to download the %name% dependency" + exit /b 1 + ) + ) +) else ( + call :log 2 "Copying installer %file_path% to %exe_path%" + call :log 7 + if not exist "%exe_path%" ( + xcopy /q /y /z "%file_path%" "%exe_path%" 1>nul + if errorlevel 1 ( + call :log 0 "Failed to copy the Nullsoft Installer" + exit /b 1 + ) + ) +) +@call :log 1 "Running the %exe%" +@call :log 6 +@"%exe_path%" /S +@set nsis_errorlevel=%errorlevel% +@if %nsis_errorlevel% equ 0 goto install_nsis_success +@if %nsis_errorlevel% equ 3010 goto install_nsis_success_reboot +@if %nsis_errorlevel% equ 1641 goto install_nsis_success_reboot +@if %nsis_errorlevel% equ 3015 goto install_nsis_in_progress_reboot +@if %nsis_errorlevel% equ 1615 goto install_nsis_in_progress_reboot +@call :log 0 "Nullsoft Installer failed: %nsis_errorlevel%" +@call :log 0 "Install the dependency manually by running %exe_path%" +@exit /b 1 +:install_nsis_in_progress_reboot +@call :log 0 "The installation requires a reboot to continue" +@call :log 5 +@call :reboot +@exit /b 1 +:install_nsis_success_reboot +@call :log 3 "The installation requires a reboot to be fully functional" +@set reboot_required=1 +:install_nsis_success +@call :log 2 "Successfully installed %name%" +@call :log 7 +@endlocal & set reboot_required=%reboot_required% +@goto :eof + +:reboot - Asks the user if they would like to reboot then stops the script +@setlocal +@call :log 6 "-------------------------------------------" +@choice /C YN /T 60 /D N /M "The %method% requires a reboot, reboot now?" +@set ret=%errorlevel% +@call :log 6 +@if %ret% equ 1 ( + @shutdown /r +) else ( + @call :log 0 "You will need to reboot to complete the %method%" + @call :log 5 +) +@endlocal +@goto :eof http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/ci/test/01_basic/basic_spec.lua ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/ci/test/01_basic/basic_spec.lua b/thirdparty/civetweb-1.10/ci/test/01_basic/basic_spec.lua new file mode 100644 index 0000000..cf3b300 --- /dev/null +++ b/thirdparty/civetweb-1.10/ci/test/01_basic/basic_spec.lua @@ -0,0 +1,35 @@ +civet = require "ci/test/civet" +local curl = require "cURL" + +describe("civetweb basic", function() + + setup(function() + civet.start() + end) + + teardown(function() + civet.stop() + end) + + + it("should serve a simple get request", function() + + local out = "" + function capture(str) + out = out .. str + end + + local c = curl.easy() + :setopt_url('http://localhost:' .. civet.port .. "/") + :setopt_writefunction(capture) + :perform() + :close() + + --print('rescode:' .. c.getinfo(curl.INFO_RESPONSE_CODE)) + + assert.are.equal('Index of', string.match(out, 'Index of')) + assert.are.equal('01_basic_test_dir', string.match(out, '01_basic_test_dir')) + assert.are.equal('01_basic_test_file', string.match(out, '01_basic_test_file')) + end) + +end) http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/ci/test/01_basic/docroot/01_basic_test_dir/git_keep_empty_dir ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/ci/test/01_basic/docroot/01_basic_test_dir/git_keep_empty_dir b/thirdparty/civetweb-1.10/ci/test/01_basic/docroot/01_basic_test_dir/git_keep_empty_dir new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/ci/test/01_basic/docroot/01_basic_test_file ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/ci/test/01_basic/docroot/01_basic_test_file b/thirdparty/civetweb-1.10/ci/test/01_basic/docroot/01_basic_test_file new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/ci/test/README.md ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/ci/test/README.md b/thirdparty/civetweb-1.10/ci/test/README.md new file mode 100644 index 0000000..fdbecbe --- /dev/null +++ b/thirdparty/civetweb-1.10/ci/test/README.md @@ -0,0 +1,34 @@ +== Travis CI Tests + +Travis is a service which will build your project when you commit or get pull requests on Github. + +I have fixed and extended the travis configuration to build on the new sudo-less docker infrastructure. + +=== CI Process + +* On Check-in or Pull Requests clone the repo +* Run make WITH_LUA=1 WITH_DEBUG=1 WITH_IPV6=1 WITH_WEBSOCKET=1 +* Build a standalone lua installation (seperate from civetweb or the OS) +* Build LuaRocks in standalone installation +* Install a few rocks into the standalone installation +* Start the test script + +=== test/ci_tests/01_basic/basic_spec.lua + +On the initial checkin, there is only one test which demonstrates: + +* reliably starting civetweb server on travis infrastructure +* waiting (polling) with lua.socket to establish the server is up and running +* using libcurl via lua to test that files in the specified docroot are available +* kill the civetweb server process +* waiting (polling) the server port to see that the server has freed it + +=== Adding Tests + +* Create a directory under ci_tests +* Add a spec file, so now we have ci_tests/02_my_awesome_test/awesome_spec.lua +* Any file under ci_tests which ends in _spec.lua will be automatically run +* Check out the 'busted' and lua-curl3 docs for more info +* https://github.com/Lua-cURL/Lua-cURLv3 +* http://olivinelabs.com/busted/ + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/ci/test/civet.lua ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/ci/test/civet.lua b/thirdparty/civetweb-1.10/ci/test/civet.lua new file mode 100644 index 0000000..19a6848 --- /dev/null +++ b/thirdparty/civetweb-1.10/ci/test/civet.lua @@ -0,0 +1,42 @@ +socket = require "socket" + +local civet = {} + +-- default params +civet.port=12345 +civet.max_retry=100 +civet.start_delay=0.1 + +function civet.start(docroot) + -- TODO: use a property + docroot = docroot or 'ci/test/01_basic/docroot' + assert(io.popen('./civetweb' + .. " -listening_ports " .. civet.port + .. " -document_root " .. docroot + .. " > /dev/null 2>&1 &" + )) + -- wait until the server answers + for i=1,civet.max_retry do + local s = socket.connect('127.0.0.1', civet.port) + if s then + s:close() + break + end + socket.select(nil, nil, civet.start_delay) -- sleep + end +end + +function civet.stop() + os.execute('killall civetweb') + -- wait until the server port closes + for i=1,civet.max_retry do + local s = socket.connect('127.0.0.1', civet.port) + if not s then + break + end + s:close() + socket.select(nil, nil, civet.start_delay) -- sleep + end +end + +return civet http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/ci/travis/install_rocks.sh ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/ci/travis/install_rocks.sh b/thirdparty/civetweb-1.10/ci/travis/install_rocks.sh new file mode 100755 index 0000000..739248b --- /dev/null +++ b/thirdparty/civetweb-1.10/ci/travis/install_rocks.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -ev + +source ci/travis/lua_env.sh + +# add any rocks required for ci_tests to this list +# lua-curl depends on a libcurl development package (i.e. libcurl4-openssl-dev) +ROCKS=(lua-curl busted) + +for ROCK in ${ROCKS[*]} +do + $LUAROCKS install $ROCK +done + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/ci/travis/lua_env.sh ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/ci/travis/lua_env.sh b/thirdparty/civetweb-1.10/ci/travis/lua_env.sh new file mode 100755 index 0000000..dd742e9 --- /dev/null +++ b/thirdparty/civetweb-1.10/ci/travis/lua_env.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +LUAROCKS=ci/lua/bin/luarocks +eval $($LUAROCKS path --bin) + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/ci/travis/platform.sh ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/ci/travis/platform.sh b/thirdparty/civetweb-1.10/ci/travis/platform.sh new file mode 100755 index 0000000..4a3af0d --- /dev/null +++ b/thirdparty/civetweb-1.10/ci/travis/platform.sh @@ -0,0 +1,15 @@ +if [ -z "$PLATFORM" ]; then + PLATFORM=$TRAVIS_OS_NAME; +fi + +if [ "$PLATFORM" == "osx" ]; then + PLATFORM="macosx"; +fi + +if [ -z "$PLATFORM" ]; then + if [ "$(uname)" == "Linux" ]; then + PLATFORM="linux"; + else + PLATFORM="macosx"; + fi; +fi http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/ci/travis/run_ci_tests.sh ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/ci/travis/run_ci_tests.sh b/thirdparty/civetweb-1.10/ci/travis/run_ci_tests.sh new file mode 100755 index 0000000..16c2cc0 --- /dev/null +++ b/thirdparty/civetweb-1.10/ci/travis/run_ci_tests.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -ev + +source ci/travis/lua_env.sh +busted -o TAP ci/test/ + + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/ci/travis/setup_lua.sh ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/ci/travis/setup_lua.sh b/thirdparty/civetweb-1.10/ci/travis/setup_lua.sh new file mode 100755 index 0000000..8e1b324 --- /dev/null +++ b/thirdparty/civetweb-1.10/ci/travis/setup_lua.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env /bash +set -ev + +# this script installs a lua / luarocks environment in .travis/lua +# this is necessary because travis docker architecture (the fast way) +# does not permit sudo, and does not contain a useful lua installation + +# After this script is finished, you can configure your environment to +# use it by sourcing lua_env.sh + +source ci/travis/platform.sh + +# The current versions when this script was written +LUA_VERSION=5.2.4 +LUAROCKS_VERSION=2.2.2 + +# directory where this script is located +SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) + +# civetweb base dir +PROJECT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../.. && pwd ) + +# fetch and unpack lua src +cd $SCRIPT_DIR +LUA_BASE=lua-$LUA_VERSION +rm -rf $LUA_BASE +curl http://www.lua.org/ftp/$LUA_BASE.tar.gz | tar zx + +# build lua +cd $LUA_BASE +make $PLATFORM +make local + +# mv built lua install to target Lua dir +LUA_DIR=$PROJECT_DIR/ci/lua +rm -rf $LUA_DIR +mv $SCRIPT_DIR/$LUA_BASE/install $LUA_DIR + +# add to path required by luarocks installer +export PATH=$LUA_DIR/bin:$PATH + + +# fetch and unpack luarocks +cd $SCRIPT_DIR +LUAROCKS_BASE=luarocks-$LUAROCKS_VERSION +rm -rf ${LUAROCKS_BASE} +LUAROCKS_URL=http://luarocks.org/releases/${LUAROCKS_BASE}.tar.gz +# -L because it's a 302 redirect +curl -L $LUAROCKS_URL | tar xzp +cd $LUAROCKS_BASE + +# build luarocks +./configure --prefix=$LUA_DIR +make build +make install + +# cleanup source dirs +cd $SCRIPT_DIR +rm -rf $LUAROCKS_BASE +rm -rf $LUA_BASE + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/cmake/AddCCompilerFlag.cmake ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/cmake/AddCCompilerFlag.cmake b/thirdparty/civetweb-1.10/cmake/AddCCompilerFlag.cmake new file mode 100644 index 0000000..f5550fa --- /dev/null +++ b/thirdparty/civetweb-1.10/cmake/AddCCompilerFlag.cmake @@ -0,0 +1,38 @@ +# - Adds a compiler flag if it is supported by the compiler +# +# This function checks that the supplied compiler flag is supported and then +# adds it to the corresponding compiler flags +# +# add_c_compiler_flag(<FLAG> [<VARIANT>]) +# +# - Example +# +# include(AddCCompilerFlag) +# add_c_compiler_flag(-Wall) +# add_c_compiler_flag(-no-strict-aliasing RELEASE) +# Requires CMake 2.6+ + +if(__add_c_compiler_flag) + return() +endif() +set(__add_c_compiler_flag INCLUDED) + +include(CheckCCompilerFlag) + +function(add_c_compiler_flag FLAG) + string(TOUPPER "HAVE_C_FLAG_${FLAG}" SANITIZED_FLAG) + string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG}) + string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG}) + string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG}) + set(CMAKE_REQUIRED_FLAGS "${FLAG}") + check_c_compiler_flag("" ${SANITIZED_FLAG}) + if(${SANITIZED_FLAG}) + set(VARIANT ${ARGV1}) + if(ARGV1) + string(REGEX REPLACE "[^A-Za-z_0-9]" "_" VARIANT "${VARIANT}") + string(TOUPPER "_${VARIANT}" VARIANT) + endif() + set(CMAKE_C_FLAGS${VARIANT} "${CMAKE_C_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE) + endif() +endfunction() + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/cmake/AddCXXCompilerFlag.cmake ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/cmake/AddCXXCompilerFlag.cmake b/thirdparty/civetweb-1.10/cmake/AddCXXCompilerFlag.cmake new file mode 100644 index 0000000..5e58c6d --- /dev/null +++ b/thirdparty/civetweb-1.10/cmake/AddCXXCompilerFlag.cmake @@ -0,0 +1,38 @@ +# - Adds a compiler flag if it is supported by the compiler +# +# This function checks that the supplied compiler flag is supported and then +# adds it to the corresponding compiler flags +# +# add_cxx_compiler_flag(<FLAG> [<VARIANT>]) +# +# - Example +# +# include(AddCXXCompilerFlag) +# add_cxx_compiler_flag(-Wall) +# add_cxx_compiler_flag(-no-strict-aliasing RELEASE) +# Requires CMake 2.6+ + +if(__add_cxx_compiler_flag) + return() +endif() +set(__add_cxx_compiler_flag INCLUDED) + +include(CheckCXXCompilerFlag) + +function(add_cxx_compiler_flag FLAG) + string(TOUPPER "HAVE_CXX_FLAG_${FLAG}" SANITIZED_FLAG) + string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG}) + string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG}) + string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG}) + set(CMAKE_REQUIRED_FLAGS "${FLAG}") + check_cxx_compiler_flag("" ${SANITIZED_FLAG}) + if(${SANITIZED_FLAG}) + set(VARIANT ${ARGV1}) + if(ARGV1) + string(REGEX REPLACE "[^A-Za-z_0-9]" "_" VARIANT "${VARIANT}") + string(TOUPPER "_${VARIANT}" VARIANT) + endif() + set(CMAKE_CXX_FLAGS${VARIANT} "${CMAKE_CXX_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE) + endif() +endfunction() + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/cmake/DetermineTargetArchitecture.cmake ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/cmake/DetermineTargetArchitecture.cmake b/thirdparty/civetweb-1.10/cmake/DetermineTargetArchitecture.cmake new file mode 100644 index 0000000..7d18213 --- /dev/null +++ b/thirdparty/civetweb-1.10/cmake/DetermineTargetArchitecture.cmake @@ -0,0 +1,47 @@ +# - Determines the target architecture of the compilation +# +# This function checks the architecture that will be built by the compiler +# and sets a variable to the architecture +# +# determine_target_architecture(<OUTPUT_VAR>) +# +# - Example +# +# include(DetermineTargetArchitecture) +# determine_target_architecture(PROJECT_NAME_ARCHITECTURE) + +if(__determine_target_architecture) + return() +endif() +set(__determine_target_architecture INCLUDED) + +function(determine_target_architecture FLAG) + if (MSVC) + if("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "X86") + set(ARCH "i686") + elseif("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "x64") + set(ARCH "x86_64") + elseif("${MSVC_C_ARCHITECTURE_ID}" STREQUAL "ARM") + set(ARCH "arm") + else() + message(FATAL_ERROR "Failed to determine the MSVC target architecture: ${MSVC_C_ARCHITECTURE_ID}") + endif() + else() + execute_process( + COMMAND ${CMAKE_C_COMPILER} -dumpmachine + RESULT_VARIABLE RESULT + OUTPUT_VARIABLE ARCH + ERROR_QUIET + ) + if (RESULT) + message(FATAL_ERROR "Failed to determine target architecture triplet: ${RESULT}") + endif() + string(REGEX MATCH "([^-]+).*" ARCH_MATCH ${ARCH}) + if (NOT CMAKE_MATCH_1 OR NOT ARCH_MATCH) + message(FATAL_ERROR "Failed to match the target architecture triplet: ${ARCH}") + endif() + set(ARCH ${CMAKE_MATCH_1}) + endif() + message(STATUS "Target architecture - ${ARCH}") + set(FLAG ${ARCH} PARENT_SCOPE) +endfunction() http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/cmake/FindLibDl.cmake ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/cmake/FindLibDl.cmake b/thirdparty/civetweb-1.10/cmake/FindLibDl.cmake new file mode 100644 index 0000000..c018d92 --- /dev/null +++ b/thirdparty/civetweb-1.10/cmake/FindLibDl.cmake @@ -0,0 +1,46 @@ +#.rst: +# FindLibDl +# -------- +# +# Find the native realtime includes and library. +# +# IMPORTED Targets +# ^^^^^^^^^^^^^^^^ +# +# This module defines :prop_tgt:`IMPORTED` target ``LIBDL::LIBDL``, if +# LIBDL has been found. +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# This module defines the following variables: +# +# :: +# +# LIBDL_INCLUDE_DIRS - where to find dlfcn.h, etc. +# LIBDL_LIBRARIES - List of libraries when using libdl. +# LIBDL_FOUND - True if dynamic linking library found. +# +# Hints +# ^^^^^ +# +# A user may set ``LIBDL_ROOT`` to a library installation root to tell this +# module where to look. + +find_path(LIBDL_INCLUDE_DIRS + NAMES dlfcn.h + PATHS ${LIBDL_ROOT}/include/ +) +find_library(LIBDL_LIBRARIES dl) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LibDl DEFAULT_MSG LIBDL_LIBRARIES LIBDL_INCLUDE_DIRS) +mark_as_advanced(LIBDL_INCLUDE_DIRS LIBDL_LIBRARIES) + +if(LIBDL_FOUND) + if(NOT TARGET LIBDL::LIBDL) + add_library(LIBDL::LIBDL UNKNOWN IMPORTED) + set_target_properties(LIBDL::LIBDL PROPERTIES + IMPORTED_LOCATION "${LIBDL_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBDL_INCLUDE_DIRS}") + endif() +endif() http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/cmake/FindLibM.cmake ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/cmake/FindLibM.cmake b/thirdparty/civetweb-1.10/cmake/FindLibM.cmake new file mode 100644 index 0000000..9f42aa4 --- /dev/null +++ b/thirdparty/civetweb-1.10/cmake/FindLibM.cmake @@ -0,0 +1,47 @@ +#.rst: +# FindLibM +# -------- +# +# Find the native realtime includes and library. +# +# IMPORTED Targets +# ^^^^^^^^^^^^^^^^ +# +# This module defines :prop_tgt:`IMPORTED` target ``LIBM::LIBM``, if +# LIBM has been found. +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# This module defines the following variables: +# +# :: +# +# LIBM_INCLUDE_DIRS - where to find math.h, etc. +# LIBM_LIBRARIES - List of libraries when using libm. +# LIBM_FOUND - True if math library found. +# +# Hints +# ^^^^^ +# +# A user may set ``LIBM_ROOT`` to a math library installation root to tell this +# module where to look. + +find_path(LIBM_INCLUDE_DIRS + NAMES math.h + PATHS /usr/include /usr/local/include /usr/local/bic/include + NO_DEFAULT_PATH +) +find_library(LIBM_LIBRARIES m) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LibM DEFAULT_MSG LIBM_LIBRARIES LIBM_INCLUDE_DIRS) +mark_as_advanced(LIBM_INCLUDE_DIRS LIBM_LIBRARIES) + +if(LIBM_FOUND) + if(NOT TARGET LIBM::LIBM) + add_library(LIBM::LIBM UNKNOWN IMPORTED) + set_target_properties(LIBM::LIBM PROPERTIES + IMPORTED_LOCATION "${LIBM_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBM_INCLUDE_DIRS}") + endif() +endif() http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/cmake/FindLibRt.cmake ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/cmake/FindLibRt.cmake b/thirdparty/civetweb-1.10/cmake/FindLibRt.cmake new file mode 100644 index 0000000..c496edf --- /dev/null +++ b/thirdparty/civetweb-1.10/cmake/FindLibRt.cmake @@ -0,0 +1,46 @@ +#.rst: +# FindLibRt +# -------- +# +# Find the native realtime includes and library. +# +# IMPORTED Targets +# ^^^^^^^^^^^^^^^^ +# +# This module defines :prop_tgt:`IMPORTED` target ``LIBRT::LIBRT``, if +# LIBRT has been found. +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# This module defines the following variables: +# +# :: +# +# LIBRT_INCLUDE_DIRS - where to find time.h, etc. +# LIBRT_LIBRARIES - List of libraries when using librt. +# LIBRT_FOUND - True if realtime library found. +# +# Hints +# ^^^^^ +# +# A user may set ``LIBRT_ROOT`` to a realtime installation root to tell this +# module where to look. + +find_path(LIBRT_INCLUDE_DIRS + NAMES time.h + PATHS ${LIBRT_ROOT}/include/ +) +find_library(LIBRT_LIBRARIES rt) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LibRt DEFAULT_MSG LIBRT_LIBRARIES LIBRT_INCLUDE_DIRS) +mark_as_advanced(LIBRT_INCLUDE_DIRS LIBRT_LIBRARIES) + +if(LIBRT_FOUND) + if(NOT TARGET LIBRT::LIBRT) + add_library(LIBRT::LIBRT UNKNOWN IMPORTED) + set_target_properties(LIBRT::LIBRT PROPERTIES + IMPORTED_LOCATION "${LIBRT_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${LIBRT_INCLUDE_DIRS}") + endif() +endif() http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/cmake/FindWinSock.cmake ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/cmake/FindWinSock.cmake b/thirdparty/civetweb-1.10/cmake/FindWinSock.cmake new file mode 100644 index 0000000..0bf355d --- /dev/null +++ b/thirdparty/civetweb-1.10/cmake/FindWinSock.cmake @@ -0,0 +1,102 @@ +#.rst: +# FindWinSock +# -------- +# +# Find the native realtime includes and library. +# +# IMPORTED Targets +# ^^^^^^^^^^^^^^^^ +# +# This module defines :prop_tgt:`IMPORTED` target ``WINSOCK::WINSOCK``, if +# WINSOCK has been found. +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# This module defines the following variables: +# +# :: +# +# WINSOCK_INCLUDE_DIRS - where to find winsock.h, etc. +# WINSOCK_LIBRARIES - List of libraries when using librt. +# WINSOCK_FOUND - True if realtime library found. +# +# Hints +# ^^^^^ +# +# A user may set ``WINSOCK_ROOT`` to a realtime installation root to tell this +# module where to look. + +macro(REMOVE_DUPLICATE_PATHS LIST_VAR) + set(WINSOCK_LIST "") + foreach(PATH IN LISTS ${LIST_VAR}) + get_filename_component(PATH "${PATH}" REALPATH) + list(APPEND WINSOCK_LIST "${PATH}") + endforeach(PATH) + set(${LIST_VAR} ${WINSOCK_LIST}) + list(REMOVE_DUPLICATES ${LIST_VAR}) +endmacro(REMOVE_DUPLICATE_PATHS) + +set(WINSOCK_INCLUDE_PATHS "${WINSOCK_ROOT}/include/") +if(MINGW) + execute_process( + COMMAND ${CMAKE_C_COMPILER} -xc -E -v - + RESULT_VARIABLE RESULT + INPUT_FILE nul + ERROR_VARIABLE ERR + OUTPUT_QUIET + ) + if (NOT RESULT) + string(FIND "${ERR}" "#include <...> search starts here:" START) + string(FIND "${ERR}" "End of search list." END) + if (NOT ${START} EQUAL -1 AND NOT ${END} EQUAL -1) + math(EXPR START "${START} + 36") + math(EXPR END "${END} - 1") + math(EXPR LENGTH "${END} - ${START}") + string(SUBSTRING "${ERR}" ${START} ${LENGTH} WINSOCK_INCLUDE_PATHS) + string(REPLACE "\n " ";" WINSOCK_INCLUDE_PATHS "${WINSOCK_INCLUDE_PATHS}") + list(REVERSE WINSOCK_INCLUDE_PATHS) + endif() + endif() +endif() +remove_duplicate_paths(WINSOCK_INCLUDE_PATHS) + +set(WINSOCK_LIBRARY_PATHS "${WINSOCK_ROOT}/lib/") +if(MINGW) + execute_process( + COMMAND ${CMAKE_C_COMPILER} -print-search-dirs + RESULT_VARIABLE RESULT + OUTPUT_VARIABLE OUT + ERROR_QUIET + ) + if (NOT RESULT) + string(REGEX MATCH "libraries: =([^\r\n]*)" OUT "${OUT}") + list(APPEND WINSOCK_LIBRARY_PATHS "${CMAKE_MATCH_1}") + endif() +endif() +if (${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "AMD64" AND ${CMAKE_SIZEOF_VOID_P} EQUAL 4) + list(APPEND WINSOCK_LIBRARY_PATHS "C:/Windows/SysWOW64") +endif() +list(APPEND WINSOCK_LIBRARY_PATHS "C:/Windows/System32") +remove_duplicate_paths(WINSOCK_LIBRARY_PATHS) + +find_path(WINSOCK_INCLUDE_DIRS + NAMES winsock2.h + PATHS ${WINSOCK_INCLUDE_PATHS} +) +find_library(WINSOCK_LIBRARIES ws2_32 + PATHS ${WINSOCK_LIBRARY_PATHS} + NO_DEFAULT_PATH +) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(WinSock DEFAULT_MSG WINSOCK_LIBRARIES WINSOCK_INCLUDE_DIRS) +mark_as_advanced(WINSOCK_INCLUDE_DIRS WINSOCK_LIBRARIES) + +if(WINSOCK_FOUND) + if(NOT TARGET WINSOCK::WINSOCK) + add_library(WINSOCK::WINSOCK UNKNOWN IMPORTED) + set_target_properties(WINSOCK::WINSOCK PROPERTIES + IMPORTED_LOCATION "${WINSOCK_LIBRARIES}" + INTERFACE_INCLUDE_DIRECTORIES "${WINSOCK_INCLUDE_DIRS}") + endif() +endif() http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/cmake/check/c82fe8888aacfe784476112edd3878256d2e30bc.patch ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/cmake/check/c82fe8888aacfe784476112edd3878256d2e30bc.patch b/thirdparty/civetweb-1.10/cmake/check/c82fe8888aacfe784476112edd3878256d2e30bc.patch new file mode 100644 index 0000000..e16ea1f --- /dev/null +++ b/thirdparty/civetweb-1.10/cmake/check/c82fe8888aacfe784476112edd3878256d2e30bc.patch @@ -0,0 +1,31 @@ +From c82fe8888aacfe784476112edd3878256d2e30bc Mon Sep 17 00:00:00 2001 +From: Joshua Boyd <jdboyd@Joshua-Boyds-Mac-mini.local> +Date: Wed, 23 Mar 2016 17:54:41 -0400 +Subject: [PATCH] Detect missing itimerspec on OSX. + +Set define to compiler accordingly. + +This fixes cmake on osx support. +--- + CMakeLists.txt | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index e271e31..1d413e8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -193,6 +193,14 @@ if(NOT HAVE_SYS_TIME_H) + endif(MSVC) + endif(NOT HAVE_SYS_TIME_H) + ++# OSX has sys/time.h, but it still lacks itimerspec ++if(HAVE_SYS_TIME_H) ++ check_struct_member("struct itimerspec" it_value "sys/time.h" HAVE_STRUCT_ITIMERSPEC_IT_VALUE) ++ if(NOT HAVE_STRUCT_ITIMERSPEC_IT_VALUE) ++ add_definitions(-DSTRUCT_ITIMERSPEC_DEFINITION_MISSING=1) ++ set(STRUCT_ITIMERSPEC_DEFINITION_MISSING 1) ++ endif(NOT HAVE_STRUCT_ITIMERSPEC_IT_VALUE) ++endif(HAVE_SYS_TIME_H) + + ############################################################################### + # Check for integer types http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/cmake/check/patch.cmake ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/cmake/check/patch.cmake b/thirdparty/civetweb-1.10/cmake/check/patch.cmake new file mode 100644 index 0000000..472d392 --- /dev/null +++ b/thirdparty/civetweb-1.10/cmake/check/patch.cmake @@ -0,0 +1,12 @@ +message(STATUS "Patching check ${VERSION} ${SOURCE_DIR}") + +# Patch checks for MinGW +# https://sourceforge.net/p/check/patches/53/ +set(CMAKE_LISTS_LOCATION "${SOURCE_DIR}/CMakeLists.txt") +file(READ ${CMAKE_LISTS_LOCATION} CMAKE_LISTS) +string(REGEX REPLACE + "(check_type_size\\((clock|clockid|timer)_t [A-Z_]+\\)[\r\n]+[^\r\n]+[\r\n]+[^\r\n]+[\r\n]+endif\\(NOT HAVE[A-Z_]+\\))" + "set(CMAKE_EXTRA_INCLUDE_FILES time.h)\n\\1\nunset(CMAKE_EXTRA_INCLUDE_FILES)" + CMAKE_LISTS "${CMAKE_LISTS}") +file(WRITE ${CMAKE_LISTS_LOCATION} "${CMAKE_LISTS}") +message(STATUS "Patched ${CMAKE_LISTS_LOCATION}") http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/contrib/buildroot/Config.in ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/contrib/buildroot/Config.in b/thirdparty/civetweb-1.10/contrib/buildroot/Config.in new file mode 100644 index 0000000..2334fdf --- /dev/null +++ b/thirdparty/civetweb-1.10/contrib/buildroot/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_CIVETWEB + bool "civetweb" + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Full featured embedded web server with Lua support. + + https://sourceforge.net/projects/civetweb + +if BR2_PACKAGE_CIVETWEB + +config BR2_CIVETWEB_WITH_LUA + bool "enable Lua support" + # required by the bundled Sqlite3 and Lua code + depends on BR2_LARGEFILE + help + Enable Lua support in Civetweb. Note that this will use a + version of Lua and Sqlite bundled within the Civetweb + sources, and not the packages from Buildroot. + +comment "Lua support requires largefile support in toolchain" + depends on !BR2_LARGEFILE + +endif + +comment "civetweb requires a toolchain with PTHREAD support" + depends on !BR2_TOOLCHAIN_HAS_THREADS http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/contrib/buildroot/civetweb.mk ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/contrib/buildroot/civetweb.mk b/thirdparty/civetweb-1.10/contrib/buildroot/civetweb.mk new file mode 100644 index 0000000..8b9b7de --- /dev/null +++ b/thirdparty/civetweb-1.10/contrib/buildroot/civetweb.mk @@ -0,0 +1,55 @@ +################################################################################ +# +# civetweb +# +################################################################################ + +CIVETWEB_VERSION = 1.10 +CIVETWEB_SITE = http://github.com/civetweb/civetweb/tarball/v$(CIVETWEB_VERSION) +CIVETWEB_LICENSE = MIT +CIVETWEB_LICENSE_FILES = LICENSE.md + +CIVETWEB_CONF_OPT = TARGET_OS=LINUX +CIVETWEB_COPT = $(TARGET_CFLAGS) -DHAVE_POSIX_FALLOCATE=0 +CIVETWEB_LDFLAGS = $(TARGET_LDFLAGS) +CIVETWEB_SYSCONFDIR = /etc +CIVETWEB_HTMLDIR = /var/www + +ifneq ($(BR2_LARGEFILE),y) + CIVETWEB_COPT += -DSQLITE_DISABLE_LFS +endif + +ifeq ($(BR2_INET_IPV6),y) + CIVETWEB_CONF_OPT += WITH_IPV6=1 +endif + +ifeq ($(BR2_CIVETWEB_WITH_LUA),y) + CIVETWEB_CONF_OPT += WITH_LUA=1 +endif + +ifeq ($(BR2_PACKAGE_OPENSSL),y) + CIVETWEB_COPT += -DNO_SSL_DL -lcrypt -lssl + CIVETWEB_DEPENDENCIES += openssl +else + CIVETWEB_COPT += -DNO_SSL +endif + +define CIVETWEB_BUILD_CMDS + $(MAKE) CC="$(TARGET_CC)" -C $(@D) build \ + $(CIVETWEB_CONF_OPT) \ + COPT="$(CIVETWEB_COPT)" +endef + +define CIVETWEB_INSTALL_TARGET_CMDS + $(MAKE) CC="$(TARGET_CC)" -C $(@D) install \ + DOCUMENT_ROOT="$(CIVETWEB_HTMLDIR)" \ + CONFIG_FILE2="$(CIVETWEB_SYSCONFDIR)/civetweb.conf" \ + HTMLDIR="$(TARGET_DIR)$(CIVETWEB_HTMLDIR)" \ + SYSCONFDIR="$(TARGET_DIR)$(CIVETWEB_SYSCONFDIR)" \ + PREFIX="$(TARGET_DIR)/usr" \ + $(CIVETWEB_CONF_OPT) \ + COPT='$(CIVETWEB_COPT)' +endef + +$(eval $(generic-package)) + http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/distribution/arch/PKGBUILD.git.example ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/distribution/arch/PKGBUILD.git.example b/thirdparty/civetweb-1.10/distribution/arch/PKGBUILD.git.example new file mode 100644 index 0000000..7102bcb --- /dev/null +++ b/thirdparty/civetweb-1.10/distribution/arch/PKGBUILD.git.example @@ -0,0 +1,42 @@ +# An example PKGBUILD script for Civetweb upstream, git version +# Rename to PKGBUILD to build via makepkg +_pkgname=civetweb +pkgname=$_pkgname-git +pkgver=v1.4.24.g73c40b6 +pkgrel=1 +pkgdesc="Small and quick-to-use web server; https/php/cgi support; MIT license - git development version" +arch=('i686' 'x86_64') +url="http://sourceforge.net/p/civetweb/" +license=('MIT') +groups=() +depends=() +makedepends=('git sed') +optdepends=('php-cgi: for php support') +provides=("$_pkgname") +conflicts=("$_pkgname") +backup=("etc/$_pkgname/$_pkgname.conf") +source=("$_pkgname::git+https://github.com/civetweb/civetweb.git") +md5sums=('SKIP') + +pkgver() { + cd "$srcdir/$_pkgname" + git describe --tags | sed 's|-|.|g' +} + +build() { + cd "$srcdir/$_pkgname" + make build WITH_IPV6=1 +} + +package() { + cd "$srcdir/$_pkgname" + make install PREFIX="$pkgdir/usr" SYSCONFDIR="$pkgdir/etc/local/$_pkgname" + + install -Dm644 "$srcdir/$_pkgname/distribution/arch/$_pkgname.service" "$pkgdir/usr/lib/systemd/system/$_pkgname.service" + + sed -i "s/^document_root [^\n]*/document_root \/srv\/http/g" "$pkgdir/etc/local/$_pkgname/$_pkgname.conf" + sed -i "s/^# access_log_file/access_log_file \/var\/log\/$_pkgname\/access.log/g" "$pkgdir/etc/local/$_pkgname/$_pkgname.conf" + sed -i "s/^# error_log_file/access_log_file \/var\/log\/$_pkgname\/error.log/g" "$pkgdir/etc/local/$_pkgname/$_pkgname.conf" +} + +# vim:set ts=2 sw=2 et: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/distribution/arch/civetweb.service ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/distribution/arch/civetweb.service b/thirdparty/civetweb-1.10/distribution/arch/civetweb.service new file mode 100644 index 0000000..5327b6c --- /dev/null +++ b/thirdparty/civetweb-1.10/distribution/arch/civetweb.service @@ -0,0 +1,9 @@ +[Unit] +Description=Civetweb httpd +After=syslog.target network.target remote-fs.target nss-lookup.target + +[Service] +ExecStart=/usr/local/bin/civetweb /usr/local/etc/civetweb/civetweb.conf + +[Install] +WantedBy=multi-user.target http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/df353561/thirdparty/civetweb-1.10/docs/APIReference.md ---------------------------------------------------------------------- diff --git a/thirdparty/civetweb-1.10/docs/APIReference.md b/thirdparty/civetweb-1.10/docs/APIReference.md new file mode 100644 index 0000000..58c2faf --- /dev/null +++ b/thirdparty/civetweb-1.10/docs/APIReference.md @@ -0,0 +1,134 @@ +# CivetWeb API Reference + +CivetWeb is often used as HTTP and HTTPS library inside a larger application. +A C API is available to integrate the CivetWeb functionality in a larger +codebase. A C++ wrapper is also available, although it is not guaranteed +that all functionality available through the C API can also be accessed +from C++. This document describes the public C API. Basic usage examples of +the API can be found in [Embedding.md](Embedding.md), as well as in the +examples directory. + +## Macros + +| Macro | Description | +| :--- | :--- | +| **`CIVETWEB_VERSION`** | The current version of the software as a string with the major and minor version number seperated with a dot. For version 1.9, this string will have the value "1.9", for thw first patch of this version "1.9.1". | +| **`CIVETWEB_VERSION_MAJOR`** | The current major version as number, e.g., (1) for version 1.9. | +| **`CIVETWEB_VERSION_MINOR`** | The current minor version as number, e.g., (9) for version 1.9. | +| **`CIVETWEB_VERSION_PATCH`** | The current patch version as number, e.g., (0) for version 1.9 or (1) for version 1.9.1. | + +## Handles + +* `struct mg_context *` +Handle for one instance of the HTTP(S) server. +All functions using `const struct mg_context *` as an argument do not modify a running server instance, but just query information. Functions using a non-const `struct mg_context *` as an argument may modify a server instance (e.g., register a new URI, stop the server, ...). + +* `struct mg_connection *` +Handle for one individual client-server connection. +Functions working with `const struct mg_connection *` operate on data already known to the server without reading data from or sending data to the client. Callbacks using a `const struct mg_connection *` argument are supposed to not call functions from the `mg_read()` and `mg_write()` family. To support a correct application, reading and writing functions require a non-const `struct mg_connection *` connection handle. + +The content of both structures is not defined in the interface - they are only used as opaque pointers (handles). + +## Structures + +* [`struct mg_client_cert;`](api/mg_client_cert.md) +* [`struct mg_client_options;`](api/mg_client_options.md) +* [`struct mg_callbacks;`](api/mg_callbacks.md) +* [`struct mg_form_data_handler;`](api/mg_form_data_handler.md) +* [`struct mg_header;`](api/mg_header.md) +* [`struct mg_option;`](api/mg_option.md) +* [`struct mg_request_info;`](api/mg_request_info.md) +* [`struct mg_server_ports;`](api/mg_server_ports.md) + + +## Library API Functions + +* [`mg_init_library( feature );`](api/mg_init_library.md) +* [`mg_exit_library( feature );`](api/mg_exit_library.md) + +* [`mg_check_feature( feature );`](api/mg_check_feature.md) +* [`mg_version();`](api/mg_version.md) + + +## Server API Functions + +* [`mg_start( callbacks, user_data, options );`](api/mg_start.md) +* [`mg_stop( ctx );`](api/mg_stop.md) + +* [`mg_get_builtin_mime_type( file_name );`](api/mg_get_builtin_mime_type.md) +* [`mg_get_option( ctx, name );`](api/mg_get_option.md) +* [`mg_get_server_ports( ctx, size, ports );`](api/mg_get_server_ports.md) +* [`mg_get_user_data( ctx );`](api/mg_get_user_data.md) +* [`mg_set_auth_handler( ctx, uri, handler, cbdata );`](api/mg_set_auth_handler.md) +* [`mg_set_request_handler( ctx, uri, handler, cbdata );`](api/mg_set_request_handler.md) +* [`mg_set_websocket_handler( ctx, uri, connect_handler, ready_handler, data_handler, close_handler, cbdata );`](api/mg_set_websocket_handler.md) + +* [`mg_lock_context( ctx );`](api/mg_lock_context.md) +* [`mg_unlock_context( ctx );`](api/mg_unlock_context.md) + +* [`mg_get_context( conn );`](api/mg_get_context.md) + +* [`mg_send_http_error( conn, status_code, fmt, ... );`](api/mg_send_http_error.md) + +* [`mg_send_digest_access_authentication_request( conn, realm );`](api/mg_send_digest_access_authentication_request.md) +* [`mg_check_digest_access_authentication( conn, realm, filename );`](api/mg_check_digest_access_authentication.md) +* [`mg_modify_passwords_file( passwords_file_name, realm, user, password );`](api/mg_modify_passwords_file.md) + + +## Client API Functions + +* [`mg_connect_client( host, port, use_ssl, error_buffer, error_buffer_size );`](api/mg_connect_client.md) +* [`mg_connect_websocket_client( host, port, use_ssl, error_buffer, error_buffer_size, path, origin, data_func, close_func, user_data);`](api/mg_connect_websocket_client.md) +* [`mg_websocket_client_write( conn, opcode, data, data_len );`](api/mg_websocket_client_write.md) + +* [`mg_download( host, port, use_ssl, error_buffer, error_buffer_size, fmt, ... );`](api/mg_download.md) + + +## Common API Functions + +* [`mg_close_connection( conn );`](api/mg_close_connection.md) +* [`mg_cry( conn, fmt, ... );`](api/mg_cry.md) + +* [`mg_get_cookie( cookie, var_name, buf, buf_len );`](api/mg_get_cookie.md) +* [`mg_get_header( conn, name );`](api/mg_get_header.md) +* [`mg_get_request_info( conn );`](api/mg_get_request_info.md) +* [`mg_get_response( conn, ebuf, ebuf_len, timeout );`](api/mg_get_response.md) +* [`mg_get_response_code_text( conn, response_code );`](api/mg_get_response_code_text.md) +* [`mg_get_user_connection_data( conn );`](api/mg_get_user_connection_data.md) +* [`mg_get_valid_options();`](api/mg_get_valid_options.md) +* [`mg_get_var( data, data_len, var_name, dst, dst_len );`](api/mg_get_var.md) +* [`mg_get_var2( data, data_len, var_name, dst, dst_len, occurrence );`](api/mg_get_var2.md) +* [`mg_handle_form_request( conn, fdh );`](api/mg_handle_form_request.md) +* [`mg_lock_connection( conn );`](api/mg_lock_connection.md) +* [`mg_md5( buf, ... );`](api/mg_md5.md) +* [`mg_printf( conn, fmt, ... );`](api/mg_printf.md) +* [`mg_read( conn, buf, len );`](api/mg_read.md) +* [`mg_send_chunk( conn, buf, len );`](api/mg_send_chunk.md) +* [`mg_send_file( conn, path );`](api/mg_send_file.md) +* [`mg_send_mime_file( conn, path, mime_type );`](api/mg_send_mime_file.md) +* [`mg_send_mime_file2( conn, path, mime_type, additional_headers );`](api/mg_send_mime_file2.md) +* [`mg_set_user_connection_data( conn, data );`](api/mg_set_user_connection_data.md) +* [`mg_start_thread( f, p );`](api/mg_start_thread.md) +* [`mg_store_body( conn, path );`](api/mg_store_body.md) +* [`mg_strcasecmp( s1, s2 );`](api/mg_strcasecmp.md) +* [`mg_strncasecmp( s1, s2, len );`](api/mg_strncasecmp.md) +* [`mg_unlock_connection( conn );`](api/mg_unlock_connection.md) +* [`mg_url_decode( src, src_len, dst, dst_len, is_form_url_encoded );`](api/mg_url_decode.md) +* [`mg_url_encode( src, dst, dst_len );`](api/mg_url_encode.md) +* [`mg_websocket_write( conn, opcode, data, data_len );`](api/mg_websocket_write.md) +* [`mg_write( conn, buf, len );`](api/mg_write.md) + + +## Diagnosis Functions + +* [`mg_get_system_info( buffer, buf_len );`](api/mg_get_system_info.md) +* [`mg_get_context_info( ctx, buffer, buf_len );`](api/mg_get_context_info.md) +* [`mg_get_connection_info( ctx, idx, buffer, buf_len );`](api/mg_get_context_info.md) + + +## Deprecated: + +* [~~`mg_get_valid_option_names();`~~](api/mg_get_valid_option_names.md) +* [~~`mg_upload( conn, destination_dir );`~~](api/mg_upload.md) + +