ソースを参照

makerelease-osx: Enable lto for selected libraries and aria2

Nils Maier 11 年 前
コミット
1da3af8869
1 ファイル変更15 行追加8 行削除
  1. 15 8
      makerelease-osx.mk

+ 15 - 8
makerelease-osx.mk

@@ -66,7 +66,6 @@
 # Note: The convoluted way to create separate arch builds and later merge them
 # with lipo is because of two things:
 #  1) Avoid patching c-ares, which hardcodes some sizes in its headers.
-#  2) Make it easy in the future to enable -flto (currently, -flto builds crash)
 #
 # Note: This Makefile uses resources from osx-package when creating the
 # *.pkg and *.dmg targets
@@ -104,6 +103,7 @@ export CXXFLAGS
 LDFLAGS ?= -Wl,-dead_strip
 export LDFLAGS
 
+LTO_FLAGS = -flto -ffunction-sections -fdata-sections
 
 # Dependency versions
 zlib_version = 1.2.8
@@ -113,15 +113,21 @@ zlib_url = http://zlib.net/zlib-$(zlib_version).tar.gz
 expat_version = 2.1.0
 expat_hash = b08197d146930a5543a7b99e871cba3da614f6f0
 expat_url = http://sourceforge.net/projects/expat/files/expat/$(expat_version)/expat-$(expat_version).tar.gz
+expat_cflags=$(LTO_FLAGS)
+expat_ldflags=$(CFLAGS) $(LTO_FLAGS)
 
 cares_version = 1.10.0
 cares_hash = e44e6575d5af99cb3a38461486e1ee8b49810eb5
 cares_url = http://c-ares.haxx.se/download/c-ares-$(cares_version).tar.gz
 cares_confflags = "--enable-optimize=$(OPTFLAGS)"
+cares_cflags=$(LTO_FLAGS)
+cares_ldflags=$(CFLAGS) $(LTO_FLAGS)
 
 sqlite_version = autoconf-3080500
 sqlite_hash = 7f667e10ccebc26ab2086b8a30cb0a600ca0acae
 sqlite_url = http://sqlite.org/2014/sqlite-$(sqlite_version).tar.gz
+sqlite_cflags=$(LTO_FLAGS)
+sqlite_ldflags=$(CFLAGS) $(LTO_FLAGS)
 
 gmp_version = 5.1.3
 gmp_hash = b35928e2927b272711fdfbf71b7cfd5f86a6b165
@@ -282,8 +288,8 @@ zlib.%.build: zlib.stamp
 	( cd $(DEST) && ./configure \
 		--static --prefix=$(PWD)/$(ARCH) \
 		)
-	$(MAKE) -C $(DEST) -sj$(CPUS) CFLAGS="$(CFLAGS) -arch $(ARCH)"
-	$(MAKE) -C $(DEST) -sj$(CPUS) CFLAGS="$(CFLAGS) -arch $(ARCH)" check
+	$(MAKE) -C $(DEST) -sj$(CPUS) CFLAGS="$(CFLAGS) $(LTO_FLAGS) -arch $(ARCH)"
+	$(MAKE) -C $(DEST) -sj$(CPUS) CFLAGS="$(CFLAGS) $(LTO_FLAGS) -arch $(ARCH)" check
 	$(MAKE) -C $(DEST) -s install
 	touch $@
 
@@ -301,8 +307,9 @@ $(1).%.build: $(1).stamp
 		--enable-static --disable-shared \
 		--prefix=$$(PWD)/$$(ARCH) \
 		$$($(1)_confflags) $$($(1)_confflags_$$(ARCH)) \
-		CFLAGS="$$(CFLAGS) -arch $$(ARCH)" \
-		CXXFLAGS="$$(CXXFLAGS) -arch $$(ARCH) -stdlib=libc++ -std=c++11" \
+		CFLAGS="$$(CFLAGS) $$($(1)_cflags) -arch $$(ARCH)" \
+		CXXFLAGS="$$(CXXFLAGS) $$($(1)_cxxflags) -arch $$(ARCH) -stdlib=libc++ -std=c++11" \
+		LDFLAGS="$(LDFLAGS) $$($(1)_ldflags)" \
 		)
 	$$(MAKE) -C $$(DEST) -sj$(CPUS)
 	$$(MAKE) -C $$(DEST) -sj$(CPUS) check
@@ -331,9 +338,9 @@ aria2.%.build: zlib.%.build expat.%.build gmp.%.build cares.%.build sqlite.%.bui
 		--sysconfdir=/etc \
 		--with-cppunit-prefix=$(PWD)/$(ARCH) \
 		$(ARIA2_CONFFLAGS) \
-		CFLAGS="$(CFLAGS) -arch $(ARCH) -I$(PWD)/$(ARCH)/include" \
-		CXXFLAGS="$(CXXFLAGS) -arch $(ARCH) -I$(PWD)/$(ARCH)/include" \
-		LDFLAGS="$(LDFLAGS) -L$(PWD)/$(ARCH)/lib" \
+		CFLAGS="$(CFLAGS) $(LTO_FLAGS) -arch $(ARCH) -I$(PWD)/$(ARCH)/include" \
+		CXXFLAGS="$(CXXFLAGS) $(LTO_FLAGS) -arch $(ARCH) -I$(PWD)/$(ARCH)/include" \
+		LDFLAGS="$(LDFLAGS) $(CXXFLAGS) $(LTO_FLAGS) -L$(PWD)/$(ARCH)/lib" \
 		PKG_CONFIG_PATH=$(PWD)/$(ARCH)/lib/pkgconfig \
 		)
 	$(MAKE) -C $(DEST) -sj$(CPUS)