diff --git a/src/libfcgi-1-fixes.patch b/src/libfcgi-1-fixes.patch new file mode 100644 index 00000000..63601508 --- /dev/null +++ b/src/libfcgi-1-fixes.patch @@ -0,0 +1,121 @@ +This file is part of MXE. See LICENSE.md for licensing information. + +Contains ad hoc patches for cross building. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Boris Pek +Date: Wed, 9 Jan 2019 15:57:45 +0300 +Subject: [PATCH 1/1] Fix build as static library for MS Windows using MinGW. + ++ Delete extra definitions. + +diff --git a/include/fcgi_stdio.h b/include/fcgi_stdio.h +index 1111111..2222222 100644 +--- a/include/fcgi_stdio.h ++++ b/include/fcgi_stdio.h +@@ -24,7 +24,7 @@ extern "C" { + #endif + + #ifndef DLLAPI +-#ifdef _WIN32 ++#if defined (_WIN32) && defined (_MSC_VER) + #define DLLAPI __declspec(dllimport) + #else + #define DLLAPI +diff --git a/include/fcgiapp.h b/include/fcgiapp.h +index 1111111..2222222 100644 +--- a/include/fcgiapp.h ++++ b/include/fcgiapp.h +@@ -23,7 +23,7 @@ + #endif + + #ifndef DLLAPI +-#ifdef _WIN32 ++#if defined (_WIN32) && defined (_MSC_VER) + #define DLLAPI __declspec(dllimport) + #else + #define DLLAPI +diff --git a/include/fcgio.h b/include/fcgio.h +index 1111111..2222222 100644 +--- a/include/fcgio.h ++++ b/include/fcgio.h +@@ -35,7 +35,7 @@ + #include "fcgiapp.h" + + #ifndef DLLAPI +-#ifdef _WIN32 ++#if defined (_WIN32) && defined (_MSC_VER) + #define DLLAPI __declspec(dllimport) + #else + #define DLLAPI +diff --git a/include/fcgios.h b/include/fcgios.h +index 1111111..2222222 100755 +--- a/include/fcgios.h ++++ b/include/fcgios.h +@@ -50,7 +50,7 @@ extern "C" { + #endif /* !_WIN32 */ + + #ifndef DLLAPI +-#ifdef _WIN32 ++#if defined (_WIN32) && defined (_MSC_VER) + #define DLLAPI __declspec(dllimport) + #else + #define DLLAPI +diff --git a/libfcgi/fcgi_stdio.c b/libfcgi/fcgi_stdio.c +index 1111111..2222222 100644 +--- a/libfcgi/fcgi_stdio.c ++++ b/libfcgi/fcgi_stdio.c +@@ -22,10 +22,6 @@ + #include + #endif + +-#ifdef _WIN32 +-#define DLLAPI __declspec(dllexport) +-#endif +- + #include "fcgiapp.h" + #include "fcgios.h" + #include "fcgimisc.h" +diff --git a/libfcgi/fcgiapp.c b/libfcgi/fcgiapp.c +index 1111111..2222222 100644 +--- a/libfcgi/fcgiapp.c ++++ b/libfcgi/fcgiapp.c +@@ -40,10 +40,6 @@ + #include + #endif + +-#ifdef _WIN32 +-#define DLLAPI __declspec(dllexport) +-#endif +- + #include "fcgimisc.h" + #include "fastcgi.h" + #include "fcgios.h" +diff --git a/libfcgi/fcgio.cpp b/libfcgi/fcgio.cpp +index 1111111..2222222 100644 +--- a/libfcgi/fcgio.cpp ++++ b/libfcgi/fcgio.cpp +@@ -18,10 +18,6 @@ + // implied; without even the implied warranty of MERCHANTABILITY or + // FITNESS FOR A PARTICULAR PURPOSE. + +-#ifdef _WIN32 +-#define DLLAPI __declspec(dllexport) +-#endif +- + #include + #include + #include "fcgio.h" +diff --git a/libfcgi/os_win32.c b/libfcgi/os_win32.c +index 1111111..2222222 100755 +--- a/libfcgi/os_win32.c ++++ b/libfcgi/os_win32.c +@@ -27,8 +27,6 @@ + #include + #include + +-#define DLLAPI __declspec(dllexport) +- + #include "fcgimisc.h" + #include "fcgios.h" + diff --git a/src/libfcgi-test.cpp b/src/libfcgi-test.cpp new file mode 100644 index 00000000..eea6b9dd --- /dev/null +++ b/src/libfcgi-test.cpp @@ -0,0 +1,62 @@ +/* + * This file is part of MXE. See LICENSE.md for licensing information. + */ + +#include + +#include + +using std::string; +using std::stringstream; + +void show_html(const string &); +bool ends_with(const string &, const string &); +string get_env_var(const string &); + +int main(void) +{ + unsigned long counter = 0; + while (FCGI_Accept() >= 0) { + ++counter; + + const string full_path = get_env_var("SCRIPT_NAME"); + if (ends_with(full_path, "") || ends_with(full_path, "/")) { + show_html("Hello, stranger!
\n" + "
\n" + "What are you looking for?
\n" + "
\n" + "Counter of visits may be found here
\n"); + } + else if (ends_with(full_path, "/counter") || ends_with(full_path, "/counter/")) { + stringstream counter_str; + counter_str << counter; + show_html("Counter: " + counter_str.str()); + } + else { + show_html("

This is not the page you are looking for!

\n"); + } + } + + return 0; +} + +void show_html(const string &str) +{ + printf("Content-type: text/html\n\n"); + printf("%s", str.c_str()); +} + +bool ends_with(const string &str, const string &sfx) +{ + if (sfx.size() > str.size()) + return false; + + return equal(str.begin() + str.size() - sfx.size(), str.end(), sfx.begin()); +} + +string get_env_var(const string &var) +{ + const char *ptr = getenv(var.c_str()); + return (ptr ? string(ptr) : ""); +} + diff --git a/src/libfcgi.mk b/src/libfcgi.mk new file mode 100644 index 00000000..8e7144e0 --- /dev/null +++ b/src/libfcgi.mk @@ -0,0 +1,26 @@ +# This file is part of MXE. +# See index.html for further information. + +PKG := libfcgi +$(PKG)_WEBSITE := https://github.com/FastCGI-Archives +$(PKG)_DESCR := FastCGI +$(PKG)_IGNORE := +$(PKG)_VERSION := a6ad89b +$(PKG)_CHECKSUM := c6ced2e940f662adc337a5e5dd74e3a13d7e14687d9cb71fe9c4185f36d2e57f +$(PKG)_GH_CONF := FastCGI-Archives/fcgi2/branches/master +$(PKG)_DEPS := cc + +define $(PKG)_BUILD + cd '$(SOURCE_DIR)' && autoreconf -fi + cd '$(BUILD_DIR)' && '$(SOURCE_DIR)/configure' \ + $(MXE_CONFIGURE_OPTS) + + $(MAKE) -C '$(BUILD_DIR)' -j '$(JOBS)' $(MXE_DISABLE_CRUFT) + $(MAKE) -C '$(BUILD_DIR)' -j 1 install $(MXE_DISABLE_CRUFT) + + # Test + '$(TARGET)-g++' \ + -W -Wall -Werror -std=c++0x -pedantic \ + '$(TEST_FILE)' -o '$(PREFIX)/$(TARGET)/bin/test-$(PKG).exe' \ + `'$(TARGET)-pkg-config' fcgi --cflags --libs` -lws2_32 +endef