commit 2c8c09c799a79d236069db8d4c07f2616f425712
parent e4791b96c8c3d172b25db65f15f46d086362c0f1
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Thu, 20 Feb 2014 13:17:05 +0000
add W32 dll information resources
Diffstat:
3 files changed, 68 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
@@ -21,6 +21,7 @@
#
#
AC_PREREQ(2.57)
+LT_PREREQ([2.4.0])
AC_INIT([libmicrohttpd], [0.9.33],[libmicrohttpd@gnu.org])
AM_INIT_AUTOMAKE([silent-rules] [subdir-objects])
AC_CONFIG_HEADERS([MHD_config.h])
@@ -69,10 +70,18 @@ AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_CANONICAL_HOST
AM_PROG_CC_C_O
-AC_LIBTOOL_WIN32_DLL
-AC_PROG_LIBTOOL
+LT_INIT([win32-dll])
+LT_LANG([Windows Resource])
AC_C_BIGENDIAN
+PACKAGE_VERSION_MAJOR=${PACKAGE_VERSION%.*.*}
+PACKAGE_VERSION_MINOR=${PACKAGE_VERSION%.*}; PACKAGE_VERSION_MINOR=${PACKAGE_VERSION_MINOR#*.}
+PACKAGE_VERSION_SUBMINOR=${PACKAGE_VERSION#*.*.}
+AC_SUBST([PACKAGE_VERSION_MAJOR])
+AC_SUBST([PACKAGE_VERSION_MINOR])
+AC_SUBST([PACKAGE_VERSION_SUBMINOR])
+AC_CONFIG_FILES([src/microhttpd/microhttpd_dll_res.rc])
+
AC_CHECK_MEMBER([struct sockaddr_in.sin_len],
[ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [Do we have sockaddr_in.sin_len?])
],
diff --git a/src/microhttpd/Makefile.am b/src/microhttpd/Makefile.am
@@ -73,6 +73,28 @@ libmicrohttpd_la_LDFLAGS = \
libmicrohttpd_la_LIBADD = \
$(MHD_W32_LIB)
+if HAVE_W32
+MHD_DLL_RES_SRC = microhttpd_dll_res.rc
+MHD_DLL_RES_LO = libmicrohttpd_la-$(MHD_DLL_RES_SRC:.rc=.lo)
+
+EXTRA_libmicrohttpd_la_DEPENDENCIES = $(MHD_DLL_RES_LO)
+libmicrohttpd_la_LIBADD += $(MHD_DLL_RES_LO)
+
+# General rule is not required, but keep it just in case
+.rc.lo:
+ $(LIBTOOL) $(AM_V_lt) --tag=RC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(RC) $(RCFLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $< -o $@
+
+# To add dll resource only to .dll file and exclude it form static
+# lib, a little trick was used. Allow libtool to create file.lo,
+# file.o and .libs/file.lo, .libs/file.o files, then overwrite file.o
+# by empty object generated from empty c-file. Later libtool will
+# use .libs/file.o for shared lib and empty file.o for static lib.
+# This implementation is based on trick found in liblzma.
+$(MHD_DLL_RES_LO): $(MHD_DLL_RES_SRC)
+ $(LIBTOOL) $(AM_V_lt) --tag=RC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(RC) $(RCFLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmicrohttpd_la_CPPFLAGS) $(CPPFLAGS) $< -o $@ && \
+ echo > $@-empty.c && $(CC) $(AM_CFLAGS) $(CFLAGS) -c $@-empty.c -o $(@:.lo=.o) && rm -f $@-tmp.c
+endif
+
if USE_COVERAGE
AM_CFLAGS += --coverage
endif
diff --git a/src/microhttpd/microhttpd_dll_res.rc.in b/src/microhttpd/microhttpd_dll_res.rc.in
@@ -0,0 +1,35 @@
+/* W32 resources for .dll */
+
+#include <winresrc.h>
+
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION @PACKAGE_VERSION_MAJOR@,@PACKAGE_VERSION_MINOR@,@PACKAGE_VERSION_SUBMINOR@,0
+ PRODUCTVERSION @PACKAGE_VERSION_MAJOR@,@PACKAGE_VERSION_MINOR@,@PACKAGE_VERSION_SUBMINOR@,0
+ FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
+ FILEFLAGS 0
+ FILEOS VOS_NT_WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE VFT2_UNKNOWN
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "04090000" /* Lang = US English, Charset = ASCII */
+ BEGIN
+ VALUE "ProductName", "GNU libmicrohttpd\0"
+ VALUE "ProductVersion", "@PACKAGE_VERSION@\0"
+ VALUE "FileVersion", "@PACKAGE_VERSION@\0"
+ VALUE "FileDescription", "GNU libmicrohttpd dll for Windows\0"
+ VALUE "InternalName", "libmicrohttpd\0"
+ VALUE "OriginalFilename", "libmicrohttpd.dll\0"
+ VALUE "CompanyName", "Free Software Foundation\0"
+ VALUE "LegalCopyright", "Copyright (C) 2007-2014 Christian Grothoff and project contributors\0"
+ VALUE "Comments", "http://www.gnu.org/software/libmicrohttpd/\0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 0 /* US English, ASCII */
+ END
+END
+