1## mingw/mingw64 Makefile 2# by Michal Trojnara 1998-2021 3 4# 32-bit Windows 5#win32_arch=win32 6#win32_targetcpu=i686 7#win32_mingw=mingw 8 9# 64-bit Windows 10#win32_arch=win64 11#win32_targetcpu=x86_64 12#win32_mingw=mingw64 13 14bindir = ../bin/$(win32_arch) 15objdir = ../obj/$(win32_arch) 16 17win32_ssl_dir = /opt/openssl-$(win32_mingw) 18win32_cppflags = -I$(win32_ssl_dir)/include 19win32_cflags = -g -mthreads -O2 20#win32_cflags += -fstack-protector 21win32_cflags += -Wall -Wextra -Wpedantic -Wformat=2 -Wconversion -Wno-long-long 22win32_cflags += -D_FORTIFY_SOURCE=2 -DUNICODE -D_UNICODE 23win32_ldflags = -g -mthreads 24#win32_ldflags += -fstack-protector 25# -fstack-protector is broken (at least in x86_64-w64-mingw32-gcc 8.2.0) 26 27# compiling with -D_FORTIFY_SOURCE=2 may require linking with -lssp 28win32_common_libs = -lws2_32 -lkernel32 -lssp 29win32_ssl_libs = -L$(win32_ssl_dir)/lib -lcrypto -lssl 30win32_gui_libs = $(win32_common_libs) -lgdi32 -lpsapi $(win32_ssl_libs) 31win32_cli_libs = $(win32_common_libs) $(win32_ssl_libs) 32 33common_headers = common.h prototypes.h version.h 34win32_common = tls str file client log options protocol network resolver 35win32_common += ssl ctx verify sthreads fd dhparam cron stunnel 36win32_gui = ui_win_gui resources 37win32_cli = ui_win_cli 38win32_common_objs = $(addsuffix .o, $(addprefix $(objdir)/, $(win32_common))) 39win32_gui_objs = $(addsuffix .o, $(addprefix $(objdir)/, $(win32_gui))) 40win32_cli_objs = $(addsuffix .o, $(addprefix $(objdir)/, $(win32_cli))) 41 42win32_prefix = $(win32_targetcpu)-w64-mingw32- 43win32_cc = $(win32_prefix)gcc 44win32_windres = $(win32_prefix)windres 45 46all: mkdirs $(bindir)/stunnel.exe $(bindir)/tstunnel.exe 47 48mkdirs: 49 mkdir -p $(bindir) $(objdir) 50 51$(bindir)/stunnel.exe: $(win32_common_objs) $(win32_gui_objs) 52 $(win32_cc) -mwindows $(win32_ldflags) -o $(bindir)/stunnel.exe $(win32_common_objs) $(win32_gui_objs) $(win32_gui_libs) 53 54$(bindir)/tstunnel.exe: $(win32_common_objs) $(win32_cli_objs) 55 $(win32_cc) $(win32_ldflags) -o $(bindir)/tstunnel.exe $(win32_common_objs) $(win32_cli_objs) $(win32_cli_libs) 56 57$(objdir)/%.o: $(srcdir)/%.c 58 $(win32_cc) -c $(win32_cppflags) $(win32_cflags) -o $@ $< 59 60$(objdir)/%.o: $(common_headers) 61 62$(win32_gui_objs): $(srcdir)/resources.h 63 64$(objdir)/resources.o: $(srcdir)/resources.rc 65 $(win32_windres) --include-dir $(srcdir) $< $@ 66 67$(objdir)/resources.o: $(srcdir)/version.h 68