diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2021-09-07 14:53:04 -0400 |
---|---|---|
committer | Glenn Strauss <gstrauss@gluelogic.com> | 2023-05-03 23:11:34 -0400 |
commit | c2540871fb1260388771feb244a6eceafd705443 (patch) | |
tree | 9d474cf7fa9704d2e499ff485ef00aa33367f428 | |
parent | b86d4117be115bf1aa556130a823bdcd233bd726 (diff) | |
download | lighttpd-git-c2540871fb1260388771feb244a6eceafd705443.tar.gz |
[build] _WIN32 mingw build
use -lws2_32 instead of -lwsock32
-rw-r--r-- | configure.ac | 32 | ||||
-rw-r--r-- | src/CMakeLists.txt | 8 | ||||
-rw-r--r-- | src/Makefile.am | 10 | ||||
-rw-r--r-- | src/fdevent_impl.h | 3 | ||||
-rw-r--r-- | src/sys-socket.h | 3 | ||||
-rw-r--r-- | tests/Makefile.am | 2 |
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 \ |