Skip to content

Commit 744a2bd

Browse files
committed
fix building of openvpnsrvmsg.dll from eventmsg.mc in mingw builds
commit 06919a6 introduces .mc files that need to be compiled to .h and .bin by the windows "mc.exe" tool, and from there into a new .dll. This worked for MSVC builds, did nothing for cmake/mingw builds, and broke compilation on autoconf/mingw builds. This patch consists of two parts: 1. add building of openvpnsrvmsg.dll to autoconf/mingw builds Add logic to configure.ac to find the "windmc" binary in the linux or mingw variants, add rules to src/openvpnserv/Makefile.am so make knows what to do. Libtool is getting in the way when "openvpnsrvmsg.dll" is created as anything listed in ...BIN or ...LIB, so decare it as "DATA" and make the necessary rules explicit. 2. fix building of openvpnsrvmsg.dll on cmake/mingw builds Fix "find_program()" invocation to avoid using "midnight commander" binary (mc) on Linux (called "windmc" there). Change from "-Wl,--noentry" to linker invocation that works. See also: https://learn.microsoft.com/en-us/cpp/build/creating-a-resource-only-dll?view=msvc-170 Change-Id: I071e8190dac28f429257b8af1c6f9e68f8896bc0 Signed-off-by: Gert Doering <gert@greenie.muc.de> Acked-by: Frank Lichtenheld <frank@lichtenheld.com> Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1197 Message-Id: <20250919112424.24728-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg33083.html Signed-off-by: Gert Doering <gert@greenie.muc.de>
1 parent 06919a6 commit 744a2bd

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

configure.ac

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ AC_DEFINE_UNQUOTED([IFCONFIG_PATH], ["$IFCONFIG"], [Path to ifconfig tool])
441441
AC_DEFINE_UNQUOTED([IPROUTE_PATH], ["$IPROUTE"], [Path to iproute tool])
442442
AC_DEFINE_UNQUOTED([ROUTE_PATH], ["$ROUTE"], [Path to route tool])
443443
AC_DEFINE_UNQUOTED([SYSTEMD_ASK_PASSWORD_PATH], ["$SYSTEMD_ASK_PASSWORD"], [Path to systemd-ask-password tool])
444+
AC_CHECK_TOOLS([WINDMC], [windmc mc.exe],[no])
444445

445446
#
446447
# man page generation - based on python-docutils

src/openvpnserv/CMakeLists.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ endif ()
4141
file(MAKE_DIRECTORY ${MC_GEN_DIR})
4242
set(MC_FILE ${CMAKE_CURRENT_SOURCE_DIR}/eventmsg.mc)
4343

44-
find_program(MC_COMPILER NAMES mc mc.exe x86_64-w64-mingw32-windmc i686-w64-mingw32-windmc windmc)
44+
find_program(MC_COMPILER NAMES mc.exe x86_64-w64-mingw32-windmc i686-w64-mingw32-windmc windmc)
4545

4646
if (NOT MC_COMPILER)
4747
message(FATAL_ERROR "No message compiler found.")
@@ -58,12 +58,17 @@ add_custom_command(
5858
add_custom_target(msg_mc_gen ALL DEPENDS ${MC_GEN_DIR}/eventmsg.rc ${MC_GEN_DIR}/eventmsg.h)
5959

6060
add_library(openvpnservmsg SHARED ${MC_GEN_DIR}/eventmsg.rc)
61+
add_dependencies(openvpnservmsg msg_mc_gen)
6162

6263
if (MSVC)
6364
set_target_properties(openvpnservmsg PROPERTIES LINK_FLAGS "/NOENTRY")
6465
else()
65-
target_link_options(openvpnservmsg PRIVATE "-Wl,--no-entry")
66+
set_target_properties(openvpnservmsg PROPERTIES LINKER_LANGUAGE C OUTPUT_NAME "openvpnservmsg")
67+
target_link_options(openvpnservmsg PRIVATE
68+
-Wl,--entry=0
69+
-nostdlib
70+
-nostartfiles
71+
)
6672
endif()
6773

68-
add_dependencies(openvpnservmsg msg_mc_gen)
6974
add_dependencies(openvpnserv msg_mc_gen)

src/openvpnserv/Makefile.am

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ openvpnserv_CFLAGS = \
2828
openvpnserv_LDADD = \
2929
-ladvapi32 -luserenv -liphlpapi -lfwpuclnt -lrpcrt4 \
3030
-lshlwapi -lnetapi32 -lws2_32 -lntdll -lole32
31+
noinst_DATA = \
32+
MSG00409.bin eventmsg.h eventmsg.rc openvpnservmsg.dll
33+
BUILT_SOURCES = \
34+
eventmsg.h
3135
endif
3236

3337
openvpnserv_SOURCES = \
@@ -37,3 +41,11 @@ openvpnserv_SOURCES = \
3741
validate.c validate.h \
3842
$(top_srcdir)/src/openvpn/wfp_block.c $(top_srcdir)/src/openvpn/wfp_block.h \
3943
openvpnserv_resources.rc
44+
45+
openvpnservmsg.dll: eventmsg.o
46+
$(CC) -shared -Wl,--entry=0 -nostdlib -nostartfiles -o $@ $<
47+
48+
eventmsg.o: eventmsg.rc
49+
50+
eventmsg.h: eventmsg.mc
51+
$(WINDMC) -U $<

0 commit comments

Comments
 (0)