mirror of
https://github.com/3proxy/3proxy.git
synced 2026-08-26 09:55:48 +08:00
The OpenSSL, wolfSSL, PCRE2 and PAM probes built their test program with
echo "...\n...". make runs recipes through /bin/sh, which is dash on Debian
and Ubuntu, where the builtin echo expands \n. On distributions where /bin/sh
is bash - every RPM based distribution, and macOS - it does not, so the probe
compiled
#include <openssl/ssl.h>n int main(){return 0;}
which is not valid C. Every probe therefore failed and the build silently
dropped TLS, PCRE2 and PAM support with no diagnostic.
Use printf, which expands escapes the same way everywhere.
86 lines
3.2 KiB
Makefile
86 lines
3.2 KiB
Makefile
#
|
|
# 3 proxy Makefile for GCC/windows
|
|
#
|
|
#
|
|
# ODBC support is enabled by default on Windows (-DWITH_ODBC, -lodbc32)
|
|
|
|
|
|
BUILDDIR = ../bin/
|
|
PREFIX ?= 3proxy_
|
|
CRYPT_PREFIX ?= $(PREFIX)
|
|
CC ?= gcc
|
|
CFLAGS ?= -O3 -flto
|
|
CFLAGS += -fno-strict-aliasing -c -mthreads -DWITH_WSAPOLL -DWITH_ODBC
|
|
COUT = -o
|
|
LN ?= $(CC)
|
|
LDFLAGS ?= -O3 -flto
|
|
LDFLAGS += -fno-strict-aliasing -mthreads
|
|
# Use EXTRA_CFLAGS/EXTRA_LDFLAGS to add flags from the make command line.
|
|
# Setting CFLAGS or LDFLAGS there instead overrides every assignment in this
|
|
# makefile, including the += above and the STATIC/LIBSTATIC handling below.
|
|
CFLAGS += $(EXTRA_CFLAGS)
|
|
LDFLAGS += $(EXTRA_LDFLAGS)
|
|
DLFLAGS ?= -shared
|
|
DLSUFFICS = .dll
|
|
LIBS += -lws2_32 -lodbc32 -ladvapi32 -luser32 -lbcrypt
|
|
LIBSPREFIX = -l
|
|
LIBSSUFFIX =
|
|
LNOUT = -o
|
|
EXESUFFICS = .exe
|
|
OBJSUFFICS = .o
|
|
DEFINEOPTION = -D
|
|
COMPFILES = *.tmp
|
|
REMOVECOMMAND = rm -f
|
|
TYPECOMMAND = cat
|
|
COMPATLIBS =
|
|
MAKEFILE = Makefile.win
|
|
PLUGINS := utf8tocp1251 WindowsAuthentication TrafficPlugin StringsPlugin FilePlugin
|
|
VERFILE := 3proxyres.o $(VERFILE)
|
|
VERSION := $(VERSION)
|
|
VERSIONDEP := 3proxyres.o $(VERSIONDEP)
|
|
BUILDDATE := $(BUILDDATE)
|
|
AFTERCLEAN = (find . -type f -name "*.o" -delete && find . -type f -name "*.res" -delete && find src/ -type f -name "Makefile.var" -delete && find bin/ -type f -executable -delete) || true
|
|
|
|
ifndef OPENSSL_CHECK
|
|
ifeq ($(LIBSTATIC), true)
|
|
STATIC_PREFIX = -Wl,-Bstatic
|
|
STATIC_SUFFIX = -Wl,-Bdynamic
|
|
ZLIB = -lz
|
|
endif
|
|
WOLFSSL_CHECK = $(shell printf "\#include <wolfssl/options.h>\\n\#include <wolfssl/openssl/ssl.h>\\n int main(){return 0;}" | tr -d '\\\\' | $(CC) -x c $(CFLAGS) $(LDFLAGS) $(STATIC_PREFIX) -lwolfssl $(STATIC_SUFFIX) -o testwssl - 2>/dev/null && rm testwssl && echo true||echo false)
|
|
ifeq ($(WOLFSSL_CHECK), true)
|
|
LIBS += $(STATIC_PREFIX) -lwolfssl $(STATIC_SUFFIX) -lws2_32
|
|
CFLAGS += -DWITH_SSL -DWITH_WOLFSSL
|
|
SSL_OBJS = ssllib$(OBJSUFFICS) ssl$(OBJSUFFICS)
|
|
ZLIB :=
|
|
else
|
|
OPENSSL_CHECK = $(shell printf "\#include <openssl/ssl.h>\\n int main(){return 0;}" | tr -d '\\\\' | $(CC) -x c $(CFLAGS) $(LDFLAGS) $(STATIC_PREFIX) $(ZLIB) -l crypto -l ssl $(STATIC_SUFFIX) -o testssl - 2>/dev/null && rm testssl && echo true||echo false)
|
|
ifeq ($(OPENSSL_CHECK), true)
|
|
LIBS += $(STATIC_PREFIX) $(ZLIB) -l crypto -l ssl $(STATIC_SUFFIX) -lcrypt32
|
|
CFLAGS += -DWITH_SSL
|
|
SSL_OBJS = ssllib$(OBJSUFFICS) ssl$(OBJSUFFICS)
|
|
else
|
|
ZLIB :=
|
|
endif
|
|
endif
|
|
PAM_CHECK = $(shell printf "\#include <security/pam_appl.h>\\n int main(){return 0;}" | tr -d '\\\\' | $(CC) -x c $(CFLAGS) $(LDFLAGS) -l pam -o testpam - 2>/dev/null && rm testpam && echo true||echo false)
|
|
ifeq ($(PAM_CHECK), true)
|
|
PLUGINS += PamAuth
|
|
endif
|
|
PCRE_CHECK = $(shell printf "\#define PCRE2_CODE_UNIT_WIDTH 8\\n#include <pcre2.h>\\n int main(){return 0;}" | tr -d '\\\\' | $(CC) -x c $(CFLAGS) $(LDFLAGS) $(STATIC_PREFIX) -lpcre2-8 $(STATIC_SUFFIX) -o testpcre - 2>/dev/null && rm testpcre && echo true||echo false)
|
|
ifeq ($(PCRE_CHECK), true)
|
|
CFLAGS += -DWITH_PCRE
|
|
PCRE_OBJS = pcre$(OBJSUFFICS)
|
|
PCRE_LIBS = $(STATIC_PREFIX) -lpcre2-8 $(STATIC_SUFFIX)
|
|
endif
|
|
endif
|
|
|
|
include Makefile.inc
|
|
|
|
3proxyres.o:
|
|
windres 3proxy.rc -o 3proxyres.o
|
|
|
|
allplugins:
|
|
@list='$(PLUGINS)'; for p in $$list; do cp Makefile Makefile.var plugins/$$p; cd plugins/$$p ; make ; cd ../.. ; done
|
|
|