summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2021-09-07 14:53:04 -0400
committerGlenn Strauss <gstrauss@gluelogic.com>2023-05-03 23:11:34 -0400
commitc2540871fb1260388771feb244a6eceafd705443 (patch)
tree9d474cf7fa9704d2e499ff485ef00aa33367f428
parentb86d4117be115bf1aa556130a823bdcd233bd726 (diff)
downloadlighttpd-git-c2540871fb1260388771feb244a6eceafd705443.tar.gz
[build] _WIN32 mingw build
use -lws2_32 instead of -lwsock32
-rw-r--r--configure.ac32
-rw-r--r--src/CMakeLists.txt8
-rw-r--r--src/Makefile.am10
-rw-r--r--src/fdevent_impl.h3
-rw-r--r--src/sys-socket.h3
-rw-r--r--tests/Makefile.am2
6 files changed, 50 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac
index 32e0734a..02b1cdf6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -90,6 +90,14 @@ LT_INIT([dlopen disable-static shared])
dnl for solaris
CPPFLAGS="${CPPFLAGS} -D_REENTRANT"
+case "$host_os" in
+ *mingw*)
+ WS2_32_LIB="-lws2_32"
+ AC_SUBST([WS2_32_LIB])
+ ;;
+ *);;
+esac
+
dnl Checks for header files.
dnl checks for sys/wait.h => HAVE_SYS_WAIT_H
@@ -127,6 +135,9 @@ AC_CHECK_MEMBER([struct tm.tm_gmtoff],
[],
[#include <time.h>]
)
+case "$host_os" in
+ *mingw*) AC_DEFINE([HAVE_SOCKLEN_T], [1]) ;;
+ *)
AC_CHECK_TYPES([socklen_t],
[], dnl defines HAVE_SOCKLEN_T
[],
@@ -135,6 +146,8 @@ AC_CHECK_TYPES([socklen_t],
#include <sys/socket.h>
]
)
+;;
+esac
dnl solaris needs -lsocket -lnsl
dnl Haiku needs -lnetwork
@@ -1417,8 +1430,12 @@ esac
AC_MSG_NOTICE([----------------------------------------])
case "$host_os" in
-*mingw* ) LIBS="$LIBS -lwsock32" ;;
-* ) ;;
+ *mingw*)
+ # (-lws2_32 needed to detect inet_pton() and select() on _WIN32)
+ save_LIBS=$LIBS
+ LIBS="$LIBS $WS2_32_LIB"
+ ;;
+ *);;
esac
AC_CHECK_FUNCS([\
@@ -1468,6 +1485,13 @@ if test "$ac_cv_func_poll" = no; then
fi
case "$host_os" in
+ *mingw*)
+ LIBS=$save_LIBS
+ ;;
+ *);;
+esac
+
+case "$host_os" in
*sunos*|*solaris* )
AC_CHECK_HEADERS([priv.h], [AC_CHECK_FUNCS([setpflags])])
AC_CHECK_HEADERS([port.h], [AC_CHECK_FUNCS([port_create])])
@@ -1573,6 +1597,10 @@ if test "$ipv6" = true; then
[ac_cv_ipv6_support=no]
)
])
+ case "$host_os" in
+ *mingw*) ac_cv_ipv6_support=yes ;;
+ *) ;;
+ esac
if test "$ac_cv_ipv6_support" = yes; then
AC_DEFINE([HAVE_IPV6], [1], [Whether to enable IPv6 support])
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index fa07cc36..b8cce9c9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -144,6 +144,9 @@ check_function_exists(crypt HAVE_CRYPT)
set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
check_type_size(socklen_t HAVE_SOCKLEN_T)
set(CMAKE_EXTRA_INCLUDE_FILES)
+if(WIN32)
+set(HAVE_SOCKLEN_T 1)
+endif()
check_include_files(malloc.h HAVE_MALLOC_H)
if(HAVE_MALLOC_H)
@@ -271,6 +274,9 @@ check_c_source_compiles("
struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;
return 0;
}" HAVE_IPV6)
+if(WIN32)
+set(HAVE_IPV6 1)
+endif()
if(CMAKE_SYSTEM_NAME MATCHES "SunOS")
set(CMAKE_REQUIRED_LIBRARIES)
endif()
@@ -1109,7 +1115,7 @@ if(CMAKE_C_COMPILER_ID MATCHES "GNU" OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_WITHDEBINFO} -O2")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${WARN_LDFLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${WARN_LDFLAGS}")
- if((NOT APPLE) AND (NOT CMAKE_SYSTEM_NAME MATCHES "SunOS"))
+ if(NOT APPLE AND NOT WIN32 AND NOT CMAKE_SYSTEM_NAME MATCHES "SunOS")
add_target_properties(lighttpd LINK_FLAGS "-Wl,-export-dynamic")
endif()
endif()
diff --git a/src/Makefile.am b/src/Makefile.am
index 4ab4e3a4..8cefde69 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -109,7 +109,7 @@ lib_LTLIBRARIES += liblightcomp.la
liblightcomp_la_SOURCES=$(common_src)
liblightcomp_la_CFLAGS=$(AM_CFLAGS) $(LIBEV_CFLAGS)
liblightcomp_la_LDFLAGS = $(common_ldflags)
-liblightcomp_la_LIBADD = $(PCRE_LIB) $(CRYPTO_LIB) $(FAM_LIBS) $(LIBEV_LIBS) $(ATTR_LIB)
+liblightcomp_la_LIBADD = $(PCRE_LIB) $(CRYPTO_LIB) $(FAM_LIBS) $(LIBEV_LIBS) $(ATTR_LIB) $(WS2_32_LIB)
common_libadd = liblightcomp.la
if !LIGHTTPD_STATIC
common_src += mod_auth_api.c mod_vhostdb_api.c
@@ -497,7 +497,7 @@ else
## default lighttpd server
lighttpd_SOURCES = $(src)
lighttpd_CPPFLAGS = $(FAM_CFLAGS) $(LIBEV_CFLAGS)
-lighttpd_LDADD = $(PCRE_LIB) $(DL_LIB) $(SENDFILE_LIB) $(ATTR_LIB) $(common_libadd) $(CRYPTO_LIB) $(XXHASH_LIBS) $(FAM_LIBS) $(LIBEV_LIBS) $(LIBUNWIND_LIBS)
+lighttpd_LDADD = $(common_libadd) $(PCRE_LIB) $(DL_LIB) $(SENDFILE_LIB) $(ATTR_LIB) $(CRYPTO_LIB) $(XXHASH_LIBS) $(FAM_LIBS) $(LIBEV_LIBS) $(LIBUNWIND_LIBS) $(WS2_32_LIB)
lighttpd_LDFLAGS = -export-dynamic
endif
@@ -515,10 +515,10 @@ t_test_common_SOURCES = t/test_common.c \
fdlog.c \
sock_addr.c \
ck.c
-t_test_common_LDADD = $(LIBUNWIND_LIBS) $(PCRE_LIB)
+t_test_common_LDADD = $(LIBUNWIND_LIBS) $(PCRE_LIB) $(WS2_32_LIB)
t_test_configfile_SOURCES = t/test_configfile.c buffer.c array.c data_config.c http_header.c http_kv.c log.c fdlog.c sock_addr.c ck.c
-t_test_configfile_LDADD = $(PCRE_LIB) $(LIBUNWIND_LIBS)
+t_test_configfile_LDADD = $(PCRE_LIB) $(LIBUNWIND_LIBS) $(WS2_32_LIB)
t_test_mod_SOURCES = $(common_src) t/test_mod.c \
t/test_mod_access.c \
@@ -530,7 +530,7 @@ t_test_mod_SOURCES = $(common_src) t/test_mod.c \
t/test_mod_staticfile.c \
t/test_mod_userdir.c
t_test_mod_CFLAGS = $(AM_CFLAGS) $(LIBEV_CFLAGS)
-t_test_mod_LDADD = $(LIBUNWIND_LIBS) $(PCRE_LIB) $(CRYPTO_LIB) $(DL_LIB) $(FAM_LIBS) $(LIBEV_LIBS) $(ATTR_LIB)
+t_test_mod_LDADD = $(LIBUNWIND_LIBS) $(PCRE_LIB) $(CRYPTO_LIB) $(DL_LIB) $(FAM_LIBS) $(LIBEV_LIBS) $(ATTR_LIB) $(WS2_32_LIB)
noinst_HEADERS = $(hdr)
EXTRA_DIST = \
diff --git a/src/fdevent_impl.h b/src/fdevent_impl.h
index 7f63a233..b6ffef4c 100644
--- a/src/fdevent_impl.h
+++ b/src/fdevent_impl.h
@@ -26,6 +26,9 @@ struct pollfd; /* declaration */
#ifndef FDEVENT_USE_POLL
#if defined HAVE_SELECT
# ifdef _WIN32
+# ifdef _MSC_VER
+# pragma comment(lib, "ws2_32.lib")
+# endif
# include <winsock2.h>
# endif
# define FDEVENT_USE_SELECT
diff --git a/src/sys-socket.h b/src/sys-socket.h
index 1a4b9e32..f0c74746 100644
--- a/src/sys-socket.h
+++ b/src/sys-socket.h
@@ -4,6 +4,9 @@
#ifdef _WIN32
+#ifdef _MSC_VER
+#pragma comment(lib, "ws2_32.lib")
+#endif
#include <winsock2.h>
/* https://docs.microsoft.com/en-us/windows/win32/winsock/sockaddr-2 */
#include <ws2tcpip.h>
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 3ae5dc62..9f866093 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -4,7 +4,9 @@ testdir=$(srcdir)/tmp/lighttpd/
check_PROGRAMS=fcgi-responder scgi-responder
fcgi_responder_SOURCES=fcgi-responder.c
+fcgi_responder_LDADD=$(WS2_32_LIB)
scgi_responder_SOURCES=scgi-responder.c
+scgi_responder_LDADD=$(WS2_32_LIB)
TESTS=\
prepare.sh \