Skip to content

Commit

Permalink
Proper Makefile for cross compiling 64 or 32 bit PGO + LTO + static W…
Browse files Browse the repository at this point in the history
…indows binaries under Linux.

No functional change

Resolves #511
  • Loading branch information
mstembera authored and zamar committed Dec 3, 2015
1 parent 5a42427 commit 5d077bb
Showing 1 changed file with 31 additions and 2 deletions.
33 changes: 31 additions & 2 deletions src/Makefile
Expand Up @@ -159,7 +159,25 @@ endif

ifeq ($(COMP),mingw)
comp=mingw
CXX=g++

ifeq ($(UNAME),Linux)
ifeq ($(bits),64)
ifeq ($(shell which x86_64-w64-mingw32-c++-posix),)
CXX=x86_64-w64-mingw32-c++
else
CXX=x86_64-w64-mingw32-c++-posix
endif
else
ifeq ($(shell which i686-w64-mingw32-c++-posix),)
CXX=i686-w64-mingw32-c++
else
CXX=i686-w64-mingw32-c++-posix
endif
endif
else
CXX=g++
endif

CXXFLAGS += -Wextra -Wshadow
LDFLAGS += -static
endif
Expand Down Expand Up @@ -307,7 +325,7 @@ ifeq ($(pext),yes)
endif
endif

### 3.11 Link Time Optimization, it works since gcc 4.5 but not on mingw.
### 3.11 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)
Expand All @@ -319,6 +337,17 @@ ifeq ($(comp),gcc)
endif
endif

ifeq ($(comp),mingw)
ifeq ($(UNAME),Linux)
ifeq ($(optimize),yes)
ifeq ($(debug),no)
CXXFLAGS += -flto
LDFLAGS += $(CXXFLAGS)
endif
endif
endif
endif

### 3.12 Android 5 can only run position independent executables. Note that this
### breaks Android 4.0 and earlier.
ifeq ($(arch),armv7)
Expand Down

0 comments on commit 5d077bb

Please sign in to comment.