From ef618863325a34c7bcbd56930184b5a3d9aed74a Mon Sep 17 00:00:00 2001 From: syzygy1 <3028851+syzygy1@users.noreply.github.com> Date: Tue, 6 Feb 2018 00:43:29 +0100 Subject: [PATCH] Enable LTO for clang Enable link-time optimization in the Makefile when compiling with clang. Also update travis.yml to use clang++-5.0 and llvm-5.0-dev. No functional change. --- .travis.yml | 7 ++++--- src/Makefile | 16 +++++----------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8586921a..7a0b111f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,11 +18,12 @@ matrix: compiler: clang addons: apt: - sources: ['ubuntu-toolchain-r-test'] - packages: ['clang', 'g++-multilib', 'valgrind', 'expect'] + sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0'] + packages: ['clang-5.0', 'llvm-5.0-dev', 'g++-multilib', 'valgrind', 'expect'] env: - - COMPILER=clang++ + - COMPILER=clang++-5.0 - COMP=clang + - LDFLAGS=-fuse-ld=gold - os: osx compiler: gcc diff --git a/src/Makefile b/src/Makefile index 72afcc35..f6f36727 100644 --- a/src/Makefile +++ b/src/Makefile @@ -302,8 +302,6 @@ ifeq ($(optimize),yes) ifeq ($(comp),clang) ifeq ($(KERNEL),Darwin) - CXXFLAGS += -flto - LDFLAGS += $(CXXFLAGS) ifeq ($(arch),i386) CXXFLAGS += -mdynamic-no-pic endif @@ -349,24 +347,20 @@ endif ### 3.8 Link Time Optimization, it works since gcc 4.5 but not on mingw under Windows. ### This is a mix of compile and link time options because the lto link phase ### needs access to the optimization flags. -ifeq ($(comp),gcc) - ifeq ($(optimize),yes) - ifeq ($(debug),no) +ifeq ($(optimize),yes) +ifeq ($(debug), no) + ifeq ($(comp),$(filter $(comp),gcc clang)) CXXFLAGS += -flto LDFLAGS += $(CXXFLAGS) endif - endif -endif -ifeq ($(comp),mingw) + ifeq ($(comp),mingw) ifeq ($(KERNEL),Linux) - ifeq ($(optimize),yes) - ifeq ($(debug),no) CXXFLAGS += -flto LDFLAGS += $(CXXFLAGS) endif endif - endif +endif endif ### 3.9 Android 5 can only run position independent executables. Note that this -- 2.39.2