Skip to content

Commit 1c3924d

Browse files
committed
Merge pull request #2311 from gavinandresen/master
Pass compiler flags to leveldb make
2 parents dbac381 + 1d83141 commit 1c3924d

File tree

6 files changed

+37
-30
lines changed

6 files changed

+37
-30
lines changed

bitcoin-qt.pro

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,19 @@ contains(RELEASE, 1) {
2929

3030
!win32:!macx {
3131
# Linux: static link
32-
LIBS += -Wl,-Bstatic
32+
LIBS += -Wl,-Bstatic -Wl,-z,relro -Wl,-z,now
33+
# for extra security (see: https://wiki.debian.org/Hardening)
34+
QMAKE_CXXFLAGS *= -D_FORTIFY_SOURCE=2
3335
}
3436
}
3537

3638
!win32 {
37-
# for extra security against potential buffer overflows: enable GCCs Stack Smashing Protection
38-
QMAKE_CXXFLAGS *= -fstack-protector-all
39-
QMAKE_LFLAGS *= -fstack-protector-all
40-
# We need to exclude this for Windows cross compile with MinGW 4.2.x, as it will result in a non-working executable!
41-
# This can be enabled for Windows, when we switch to MinGW >= 4.4.x.
39+
# for extra security against potential buffer overflows: enable GCCs Stack Smashing Protection
40+
QMAKE_CXXFLAGS *= -fstack-protector-all
41+
QMAKE_LFLAGS *= -fstack-protector-all
42+
# Exclude on Windows cross compile with MinGW 4.2.x, as it will result in a non-working executable!
43+
# This can be enabled for Windows, when we switch to MinGW >= 4.4.x.
4244
}
43-
# for extra security (see: https://wiki.debian.org/Hardening)
44-
QMAKE_CXXFLAGS *= -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wl,-z,now
4545
# for extra security on Windows: enable ASLR and DEP via GCC linker flags
4646
win32:QMAKE_LFLAGS *= -Wl,--dynamicbase -Wl,--nxcompat
4747
# on Windows: enable GCC large address aware linker flag
@@ -99,14 +99,14 @@ contains(BITCOIN_NEED_QT_PLUGINS, 1) {
9999
INCLUDEPATH += src/leveldb/include src/leveldb/helpers
100100
LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a
101101
!win32 {
102-
genleveldb.commands = cd $$PWD/src/leveldb && $(MAKE) libleveldb.a libmemenv.a
102+
genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS\" libleveldb.a libmemenv.a
103103
} else {
104104
# make an educated guess about what the ranlib command is called
105105
isEmpty(QMAKE_RANLIB) {
106106
QMAKE_RANLIB = $$replace(QMAKE_STRIP, strip, ranlib)
107107
}
108108
LIBS += -lshlwapi
109-
genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a
109+
genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a
110110
}
111111
genleveldb.target = $$PWD/src/leveldb/libleveldb.a
112112
genleveldb.depends = FORCE

contrib/gitian-descriptors/gitian-win32.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ script: |
2424
cd $HOME/qt
2525
unzip ../build/qt-win32-4.8.3-gitian-r1.zip
2626
cd $HOME/build/
27-
export PATH=$PATH:$HOME/qt/bin/
27+
export PATH=$HOME/qt/bin/:$PATH
2828
#
2929
mkdir boost_1_50_0
3030
cd boost_1_50_0
@@ -51,7 +51,7 @@ script: |
5151
export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
5252
export FAKETIME=$REFERENCE_DATETIME
5353
export TZ=UTC
54-
$HOME/qt/src/bin/qmake -spec unsupported/win32-g++-cross MINIUPNPC_LIB_PATH=$HOME/build/miniupnpc MINIUPNPC_INCLUDE_PATH=$HOME/build/ BDB_LIB_PATH=$HOME/build/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=$HOME/build/db-4.8.30.NC/build_unix BOOST_LIB_PATH=$HOME/build/boost_1_50_0/stage/lib BOOST_INCLUDE_PATH=$HOME/build/boost_1_50_0 BOOST_LIB_SUFFIX=-mt-s BOOST_THREAD_LIB_SUFFIX=_win32-mt-s OPENSSL_LIB_PATH=$HOME/build/openssl-1.0.1c OPENSSL_INCLUDE_PATH=$HOME/build/openssl-1.0.1c/include QRENCODE_LIB_PATH=$HOME/build/qrencode-3.2.0/.libs QRENCODE_INCLUDE_PATH=$HOME/build/qrencode-3.2.0 USE_QRCODE=1 INCLUDEPATH=$HOME/build DEFINES=BOOST_THREAD_USE_LIB BITCOIN_NEED_QT_PLUGINS=1 QMAKE_LRELEASE=lrelease QMAKE_CXXFLAGS=-frandom-seed=bitcoin QMAKE_LFLAGS=-frandom-seed=bitcoin USE_BUILD_INFO=1
54+
$HOME/qt/src/bin/qmake -spec unsupported/win32-g++-cross MINIUPNPC_LIB_PATH=$HOME/build/miniupnpc MINIUPNPC_INCLUDE_PATH=$HOME/build/ BDB_LIB_PATH=$HOME/build/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=$HOME/build/db-4.8.30.NC/build_unix BOOST_LIB_PATH=$HOME/build/boost_1_50_0/stage/lib BOOST_INCLUDE_PATH=$HOME/build/boost_1_50_0 BOOST_LIB_SUFFIX=-mt-s BOOST_THREAD_LIB_SUFFIX=_win32-mt-s OPENSSL_LIB_PATH=$HOME/build/openssl-1.0.1c OPENSSL_INCLUDE_PATH=$HOME/build/openssl-1.0.1c/include QRENCODE_LIB_PATH=$HOME/build/qrencode-3.2.0/.libs QRENCODE_INCLUDE_PATH=$HOME/build/qrencode-3.2.0 USE_QRCODE=1 INCLUDEPATH=$HOME/build DEFINES=BOOST_THREAD_USE_LIB BITCOIN_NEED_QT_PLUGINS=1 QMAKE_LRELEASE=lrelease QMAKE_CXXFLAGS=-frandom-seed=bitcoin USE_BUILD_INFO=1
5555
make $MAKEOPTS
5656
cp release/bitcoin-qt.exe $OUTDIR/
5757
#

src/makefile.linux-mingw

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
DEPSDIR:=/usr/i586-mingw32msvc
66

7+
CC ?= i586-mingw32msvc-gcc
8+
CXX ?= i586-mingw32msvc-g++
9+
710
USE_UPNP:=0
811
USE_IPV6:=1
912

@@ -58,6 +61,7 @@ LIBS += -l mingwthrd -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l w
5861
HEADERS = $(wildcard *.h)
5962

6063
OBJS= \
64+
leveldb/libleveldb.a \
6165
obj/alert.o \
6266
obj/version.o \
6367
obj/checkpoints.o \
@@ -95,27 +99,26 @@ all: bitcoind.exe
9599
DEFS += -I"$(CURDIR)/leveldb/include"
96100
DEFS += -I"$(CURDIR)/leveldb/helpers"
97101
leveldb/libleveldb.a:
98-
@echo "Building LevelDB ..." && cd leveldb && CC=i586-mingw32msvc-gcc CXX=i586-mingw32msvc-g++ TARGET_OS=OS_WINDOWS_CROSSCOMPILE CXXFLAGS="$(INCLUDEPATHS)" LDFLAGS="$(LIBPATHS)" $(MAKE) libleveldb.a libmemenv.a && i586-mingw32msvc-ranlib libleveldb.a && i586-mingw32msvc-ranlib libmemenv.a && cd ..
99-
obj/leveldb.o: leveldb/libleveldb.a
102+
@echo "Building LevelDB ..." && cd leveldb && TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(CFLAGS)" libleveldb.a libmemenv.a && i586-mingw32msvc-ranlib libleveldb.a && i586-mingw32msvc-ranlib libmemenv.a && cd ..
100103

101104
obj/build.h: FORCE
102105
/bin/sh ../share/genbuild.sh obj/build.h
103106
version.cpp: obj/build.h
104107
DEFS += -DHAVE_BUILD_INFO
105108

106109
obj/%.o: %.cpp $(HEADERS)
107-
i586-mingw32msvc-g++ -c $(CFLAGS) -o $@ $<
110+
$(CXX) -c $(CFLAGS) -o $@ $<
108111

109112
bitcoind.exe: $(OBJS:obj/%=obj/%)
110-
i586-mingw32msvc-g++ $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
113+
$(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
111114

112115
TESTOBJS := $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp))
113116

114117
obj-test/%.o: test/%.cpp $(HEADERS)
115-
i586-mingw32msvc-g++ -c $(TESTDEFS) $(CFLAGS) -o $@ $<
118+
$(CXX) -c $(TESTDEFS) $(CFLAGS) -o $@ $<
116119

117120
test_bitcoin.exe: $(TESTOBJS) $(filter-out obj/init.o,$(OBJS:obj/%=obj/%))
118-
i586-mingw32msvc-g++ $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ -lboost_unit_test_framework-mt-s $(LIBS)
121+
$(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ -lboost_unit_test_framework-mt-s $(LIBS)
119122

120123

121124
clean:

src/makefile.mingw

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
# 'make clean' assumes it is running inside a MSYS shell, and uses 'rm'
1616
# to remove files.
1717

18+
CXX ?= g++
19+
1820
USE_UPNP:=-
1921
USE_IPV6:=1
2022

@@ -67,6 +69,7 @@ LIBS += -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell
6769
HEADERS = $(wildcard *.h)
6870

6971
OBJS= \
72+
leveldb/libleveldb.a \
7073
obj/alert.o \
7174
obj/version.o \
7275
obj/checkpoints.o \
@@ -112,23 +115,21 @@ DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
112115
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
113116

114117
leveldb/libleveldb.a:
115-
cd leveldb && $(MAKE) OPT="$(DEBUGFLAGS)" TARGET_OS=NATIVE_WINDOWS libleveldb.a libmemenv.a && cd ..
116-
117-
obj/leveldb.o: leveldb/libleveldb.a
118+
cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(CFLAGS)" TARGET_OS=NATIVE_WINDOWS libleveldb.a libmemenv.a && cd ..
118119

119120
obj/%.o: %.cpp $(HEADERS)
120-
g++ -c $(CFLAGS) -o $@ $<
121+
$(CXX) -c $(CFLAGS) -o $@ $<
121122

122123
bitcoind.exe: $(OBJS:obj/%=obj/%)
123-
g++ $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
124+
$(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
124125

125126
TESTOBJS := $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp))
126127

127128
obj-test/%.o: test/%.cpp $(HEADERS)
128-
g++ -c $(TESTDEFS) $(CFLAGS) -o $@ $<
129+
$(CXX) -c $(TESTDEFS) $(CFLAGS) -o $@ $<
129130

130131
test_bitcoin.exe: $(TESTOBJS) $(filter-out obj/init.o,$(OBJS:obj/%=obj/%))
131-
g++ $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ -lboost_unit_test_framework$(BOOST_SUFFIX) $(LIBS)
132+
$(CXX) $(CFLAGS) $(LDFLAGS) -o $@ $(LIBPATHS) $^ -lboost_unit_test_framework$(BOOST_SUFFIX) $(LIBS)
132133

133134
clean:
134135
rm -f bitcoind.exe test_bitcoin.exe

src/makefile.osx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,15 @@ ifdef RELEASE
6262
# the same way.
6363
CFLAGS = -mmacosx-version-min=10.5 -arch i386 -O3
6464
else
65-
CFLAGS = -g
65+
DEBUGFLAGS = -g
6666
endif
6767

6868
# ppc doesn't work because we don't support big-endian
6969
CFLAGS += -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter \
7070
$(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
7171

7272
OBJS= \
73+
leveldb/libleveldb.a \
7374
obj/alert.o \
7475
obj/version.o \
7576
obj/checkpoints.o \
@@ -130,8 +131,7 @@ LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
130131
DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
131132
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
132133
leveldb/libleveldb.a:
133-
@echo "Building LevelDB ..." && cd leveldb && $(MAKE) libleveldb.a libmemenv.a && cd ..
134-
obj/leveldb.o: leveldb/libleveldb.a
134+
@echo "Building LevelDB ..." && cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(CFLAGS)" libleveldb.a libmemenv.a && cd ..
135135

136136
# auto-generated dependencies:
137137
-include obj/*.P
@@ -171,5 +171,6 @@ clean:
171171
-rm -f obj/*.P
172172
-rm -f obj-test/*.P
173173
-rm -f obj/build.h
174+
-cd leveldb && $(MAKE) clean || true
174175

175176
FORCE:

src/makefile.unix

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ xCXXFLAGS=-O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-para
101101
xLDFLAGS=$(LDHARDENING) $(LDFLAGS)
102102

103103
OBJS= \
104+
leveldb/libleveldb.a \
104105
obj/alert.o \
105106
obj/version.o \
106107
obj/checkpoints.o \
@@ -142,12 +143,12 @@ test check: test_bitcoin FORCE
142143
#
143144
# LevelDB support
144145
#
146+
MAKEOVERRIDES =
145147
LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
146148
DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
147149
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
148150
leveldb/libleveldb.a:
149-
@echo "Building LevelDB ..." && cd leveldb && $(MAKE) libleveldb.a libmemenv.a && cd ..
150-
obj/leveldb.o: leveldb/libleveldb.a
151+
@echo "Building LevelDB ..." && cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(xCXXFLAGS)" libleveldb.a libmemenv.a && cd ..
151152

152153
# auto-generated dependencies:
153154
-include obj/*.P
@@ -187,5 +188,6 @@ clean:
187188
-rm -f obj/*.P
188189
-rm -f obj-test/*.P
189190
-rm -f obj/build.h
191+
-cd leveldb && $(MAKE) clean || true
190192

191193
FORCE:

0 commit comments

Comments
 (0)