Przeglądaj źródła

Merge branch 'dynamic-linking' into maint

* dynamic-linking:
  * Only link libcrypto statically if the OS supports it
  * Update docs
  * Link libcrypto statically for now until it is moved to dlopen()
  * Add 'dynamic' and 'static' targets and default to dynamic
  * Check for libdl via dlopen and rerun autotools

Conflicts:
	doc/UPDATES
Bryan Drewery 15 lat temu
rodzic
commit
cce3a4469c
4 zmienionych plików z 257 dodań i 189 usunięć
  1. 41 19
      Makefile.in
  2. 8 2
      autotools/includes/acinclude.m4
  3. 205 168
      configure
  4. 3 0
      doc/UPDATES

+ 41 - 19
Makefile.in

@@ -31,9 +31,10 @@ RESPONSESFILE = doc/responses.txt
 
 # defaults
 CXX = @CCACHE@ @DISTCC@ @CXX@ @STATIC@
-LD = @CXX@ @STATIC@
+LD_DYNAMIC = @CXX@
+LD_STATIC = @CXX@ @STATIC@
 CCDEBUG = @CCACHE@ @DISTCC@ @CXX@
-LDDEBUG = @CXX@
+LD_DEBUG = @CXX@
 STRIP = @STRIP@
 DIFF = @DIFF@
 
@@ -56,19 +57,24 @@ _CFLGS = -fno-strict-aliasing -W -Wformat \
 
 MAKEFLAGS = -s @MAKEJOBS@
 
-MAKE_BIN = $(MAKE) 'MAKE=$(MAKE)' 'CXX=$(CXX)' 'LD=$(LD)' \
+MAKE_STATIC = $(MAKE) 'MAKE=$(MAKE)' 'CXX=$(CXX)' 'LD=$(LD_STATIC)' \
 'CCDEPMODE=$(CCDEPMODE)' 'BRANCH=$(BRANCH)' 'COMMIT=$(COMMIT_SHORT)' 'BUILDTS=$(BUILDTS)' 'VERSION=$(VERSION)' \
-'STRIP=$(STRIP)' 'CFLGS=$(CFLGS)' \
+'STRIP=$(STRIP)' 'CFLGS=$(CFLGS) -DBIN_TYPE_STATIC' \
 'LIBS=$(LIBS)' 'EGGEXEC=$(BINEXEC)' 'EGGBUILD=(wraith)'
 
-MAKE_DEBUG = $(MAKE) 'MAKE=$(MAKE)' 'CXX=$(CCDEBUG)' 'LD=$(LDDEBUG) -g' \
+MAKE_DYNAMIC = $(MAKE) 'MAKE=$(MAKE)' 'CXX=$(CXX)' 'LD=$(LD_DYNAMIC)' \
 'CCDEPMODE=$(CCDEPMODE)' 'BRANCH=$(BRANCH)' 'COMMIT=$(COMMIT_SHORT)' 'BUILDTS=$(BUILDTS)' 'VERSION=$(VERSION)' \
-'STRIP=touch' 'CFLGS=$(CFLGS) $(DEBCXXFLAGS)' \
-'LIBS=$(LIBS)' 'EGGEXEC=$(BINEXEC)' 'EGGBUILD=(debug)' 
+'STRIP=$(STRIP)' 'CFLGS=$(CFLGS) -DBIN_TYPE_DYNAMIC' \
+'LIBS=$(LIBS)' 'EGGEXEC=$(BINEXEC)' 'EGGBUILD=(wraith)'
+
+MAKE_DEBUG = $(MAKE) 'MAKE=$(MAKE)' 'CXX=$(CCDEBUG)' 'LD=$(LD_DEBUG) -g' \
+'CCDEPMODE=$(CCDEPMODE)' 'BRANCH=$(BRANCH)' 'COMMIT=$(COMMIT_SHORT)' 'BUILDTS=$(BUILDTS)' 'VERSION=$(VERSION)' \
+'STRIP=touch' 'CFLGS=$(CFLGS) $(DEBCXXFLAGS) -DBIN_TYPE_DYNAMIC' \
+'LIBS=$(LIBS)' 'EGGEXEC=$(BINEXEC)' 'EGGBUILD=(debug)'
 
 MAKE_UTILS = $(MAKE) 'MAKE=$(MAKE)' 'CXX=$(CCDEBUG)' 'STRIP=touch' \
 'CCDEPMODE=$(CCDEPMODE)' \
-'CFLGS=$(CFLGS) $(DEBCXXFLAGS)' 'LIBS=$(LIBS)' 'LD=$(LDDEBUG) -g'
+'CFLGS=$(CFLGS) $(DEBCXXFLAGS)' 'LIBS=$(LIBS)' 'LD=$(LD_DEBUG) -g'
 
 MAKE_UTILS_NR = $(MAKE) 'CXX=$(CXX)' 'STRIP=touch' \
 'CCDEPMODE=$(CCDEPMODE)' \
@@ -76,9 +82,9 @@ MAKE_UTILS_NR = $(MAKE) 'CXX=$(CXX)' 'STRIP=touch' \
 
 MAKE_CONFIG = $(MAKE) 'MAKE=$(MAKE)'
 
-.PHONY: checkclean.wraith checkclean.debug lib wraith dwraith lib.debug debug check general crypto utils sorthelp makehelp makeset makeres stringfix set res help sort indent tar distrib distclean clean cleanutils test default
+.PHONY: checkclean.static checkclean.dynamic checkclean.debug lib wraith dwraith lib.debug debug check general crypto utils sorthelp makehelp makeset makeres stringfix set res help sort indent tar distrib distclean clean cleanutils test default dynamic static
 
-default: wraith
+default: dynamic
 
 test:
 
@@ -202,17 +208,24 @@ general: help res set
 
 check:
 
-.NOTPARALLEL: checkclean.wraith checkclean.debug
+.NOTPARALLEL: checkclean.static checkclean.dynamic checkclean.debug
+
+checkclean.static:
+	@(if test -f stamp.dynamic -o -f stamp.debug; then \
+	echo "[*] Cleaning up alternate build"; \
+	$(MAKE) MAKEFLAGS=-s clean; \
+	fi)
+	@touch stamp.static
 
-checkclean.wraith:
-	@(if test -f stamp.debug; then \
+checkclean.dynamic:
+	@(if test -f stamp.static -o -f stamp.debug; then \
 	echo "[*] Cleaning up alternate build"; \
 	$(MAKE) MAKEFLAGS=-s clean; \
 	fi)
-	@touch stamp.wraith
+	@touch stamp.dynamic
 
 checkclean.debug:
-	@(if test -f stamp.wraith; then \
+	@(if test -f stamp.static -o -f stamp.dynamic; then \
 	echo "[*] Cleaning up alternate build"; \
 	$(MAKE) MAKEFLAGS=-s clean; \
 	fi)
@@ -221,13 +234,22 @@ checkclean.debug:
 lib:
 	+@cd lib && $(MAKE)
 
-wraith:	checkclean.wraith lib general
+dynamic: checkclean.dynamic lib general
+	@echo ""
+	@echo "Making dynamic binary"
+	@echo ""
+	@echo ""
+	+@cd src/mod && $(MAKE_DYNAMIC) static
+	+@cd src && $(MAKE_DYNAMIC) $(BINEXEC)
+	@echo ""
+
+static: checkclean.static lib general
 	@echo ""
-	@echo "Making binary"
+	@echo "Making static binary"
 	@echo ""
 	@echo ""
-	+@cd src/mod && $(MAKE_BIN) static
-	+@cd src && $(MAKE_BIN) $(BINEXEC)
+	+@cd src/mod && $(MAKE_STATIC) static
+	+@cd src && $(MAKE_STATIC) $(BINEXEC)
 	@echo ""
 
 dwraith: debug

+ 8 - 2
autotools/includes/acinclude.m4

@@ -361,7 +361,7 @@ AC_DEFUN([EGG_CHECK_LIBS],
 [
   AC_CHECK_LIB(socket, socket)
 #  AC_CHECK_LIB(nsl, connect)
-#  AC_CHECK_LIB(dl, dlopen)
+  AC_CHECK_LIB(dl, dlopen)
 #  AC_CHECK_LIB(nsl, gethostbyname)
 #  AC_CHECK_LIB(dns, gethostbyname)
 
@@ -529,7 +529,13 @@ AC_TRY_COMPILE([#include <openssl/opensslv.h>],[
 
 CXX="$CXX $SSL_LIBS"
 AC_CHECK_LIB(crypto, AES_encrypt,
-[SSL_LIBS="$SSL_LIBS -lcrypto"],
+[
+  if test "$USE_STATIC" = "yes"; then
+    SSL_LIBS="$SSL_LIBS -Wl,-Bstatic -lcrypto -Wl,-Bdynamic"
+  else
+    SSL_LIBS="$SSL_LIBS -lcrypto"
+  fi
+],
 [
   AC_MSG_RESULT([not found.])
   AC_MSG_ERROR([Libcrypto/openssl is required.], 1)

Plik diff jest za duży
+ 205 - 168
configure


+ 3 - 0
doc/UPDATES

@@ -6,6 +6,9 @@
   * Fix 'mop' causing a mass deop when -bitch
   * Update server list, 'set -yes servers -' and 'set -yes servers6 -' to get new list.
   * Don't kick friendly bots that are desynced: op them.
+  * Wraith is now linked dynamically. This should improve binary compat.
+    Compile on the oldest OS you want to support, and ensure newer ones have
+    all necessary compat libraries.
 
 1.3.1 - http://wraith.botpack.net/milestone/1.3.1
   * Fix crash related to slowpart

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików