blob: 3d43dbece16d873410132c594d88ce9fb3bd05e4 [file] [log] [blame]
## Process this file with automake to produce Makefile.in
# File lists
common_headers = common.h prototypes.h version.h
common_sources = tls.c str.c file.c client.c log.c options.c protocol.c
common_sources += network.c resolver.c ssl.c ctx.c verify.c sthreads.c
common_sources += fd.c dhparam.c cron.c stunnel.c
unix_sources = pty.c libwrap.c ui_unix.c
shared_sources = env.c
win32_gui_sources = ui_win_gui.c resources.h resources.rc
win32_gui_sources += stunnel.ico active.ico error.ico idle.ico
win32_cli_sources = ui_win_cli.c
# Unix executables
bin_PROGRAMS = stunnel
stunnel_SOURCES = $(common_headers) $(common_sources) $(unix_sources)
bin_SCRIPTS = stunnel3
EXTRA_DIST = stunnel3.in
CLEANFILES = stunnel3
# Unix shared library
pkglib_LTLIBRARIES = libstunnel.la
libstunnel_la_SOURCES = $(shared_sources)
libstunnel_la_LDFLAGS = -avoid-version
# Red Hat "by design" bug #82369
stunnel_CPPFLAGS = -I/usr/kerberos/include
# Additional preprocesor definitions
stunnel_CPPFLAGS += -I$(SSLDIR)/include
stunnel_CPPFLAGS += -DLIBDIR='"$(pkglibdir)"'
stunnel_CPPFLAGS += -DCONFDIR='"$(sysconfdir)/stunnel"'
# Generate a new set of DH parameters for each version
dhparam.c: version.h
echo '#include "common.h"' >dhparam.c
echo '#ifndef OPENSSL_NO_DH' >>dhparam.c
echo '#define DN_new DH_new' >>dhparam.c
openssl dhparam -noout -C 2048 >>dhparam.c
echo '#endif /* OPENSSL_NO_DH */' >>dhparam.c
# SSL library
stunnel_LDFLAGS = -L$(SSLDIR)/lib64 -L$(SSLDIR)/lib -lssl -lcrypto
# Win32 executables
if AUTHOR_TESTS
# Just check if the programs can be built, don't perform any actual tests
check_PROGRAMS = stunnel.exe tstunnel.exe
endif
stunnel_exe_SOURCES = $(common_headers) $(common_sources) $(win32_gui_sources)
tstunnel_exe_SOURCES = $(common_headers) $(common_sources) $(win32_cli_sources)
# Remaining files to be included
# EXTRA_PROGRAMS = stunnel.exe tstunnel.exe
# EXTRA_DIST += $(win32_gui_sources) $(win32_cli_sources)
EXTRA_DIST += make.bat makece.bat makew32.bat
EXTRA_DIST += mingw.mak evc.mak vc.mak os2.mak
# win32_ssl_dir = /usr/src/openssl-0.9.8u-fips
# win32_cppflags = -I$(win32_ssl_dir)/inc32
win32_ssl_dir = /usr/src/openssl-1.0.2d-i686
win32_cppflags = -I$(win32_ssl_dir)/include
win32_cflags = -mthreads -fstack-protector -O2
win32_cflags += -Wall -Wextra -Wpedantic -Wformat=2 -Wconversion -Wno-long-long
win32_cflags += -D_FORTIFY_SOURCE=2 -DUNICODE -D_UNICODE
win32_ldflags = -mthreads -fstack-protector -s
win32_common_libs = -lws2_32
win32_ssl_libs = -L$(win32_ssl_dir) -lcrypto -lssl
win32_gui_libs = $(win32_common_libs) -lgdi32 -lpsapi $(win32_ssl_libs)
win32_cli_libs = $(win32_common_libs) $(win32_ssl_libs)
win32_common_objs = tls.obj str.obj file.obj client.obj log.obj options.obj
win32_common_objs += protocol.obj network.obj resolver.obj ssl.obj ctx.obj
win32_common_objs += verify.obj sthreads.obj fd.obj dhparam.obj cron.obj
win32_common_objs += stunnel.obj
win32_gui_objs = ui_win_gui.obj resources.obj
win32_cli_objs = ui_win_cli.obj
win32_prefix = i686-w64-mingw32-
win32_cc = $(win32_prefix)gcc
win32_windres = $(win32_prefix)windres
MOSTLYCLEANFILES = $(win32_common_objs) $(win32_gui_objs) $(win32_cli_objs)
CLEANFILES += stunnel.exe tstunnel.exe
# dist-hook: stunnel.exe tstunnel.exe
# SUFFIXES = .c .rc .obj
stunnel.exe: $(win32_common_objs) $(win32_gui_objs)
$(win32_cc) -mwindows $(win32_ldflags) -o stunnel.exe $(win32_common_objs) $(win32_gui_objs) $(win32_gui_libs)
tstunnel.exe: $(win32_common_objs) $(win32_cli_objs)
$(win32_cc) $(win32_ldflags) -o tstunnel.exe $(win32_common_objs) $(win32_cli_objs) $(win32_cli_libs)
%.obj: %.c $(common_headers)
$(win32_cc) -c $(win32_cppflags) $(win32_cflags) -o $@ $<
resources.obj: resources.rc resources.h version.h
$(win32_windres) --include-dir $(srcdir) $< $@
edit = sed \
-e 's|@bindir[@]|$(bindir)|g'
stunnel3: Makefile
$(edit) '$(srcdir)/$@.in' >$@
stunnel3: $(srcdir)/stunnel3.in