Merge branch 'Mac'

Mac only specific changes.
This commit is contained in:
Alan Westbrook 2014-01-26 15:46:22 -08:00
parent 794627fdc6
commit 6844db1741
5 changed files with 116 additions and 57 deletions

View File

@ -27,11 +27,8 @@ UI_DIR = build
# use: qmake "RELEASE=1"
contains(RELEASE, 1) {
# Mac: compile for maximum compatibility (10.5, 32-bit)
macx:QMAKE_CXXFLAGS += -mmacosx-version-min=10.5 -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk
macx:QMAKE_CFLAGS += -mmacosx-version-min=10.5 -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk
macx:QMAKE_OBJECTIVE_CFLAGS += -mmacosx-version-min=10.5 -arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk
# Mac: compile for maximum compatibility (10.6, 64-bit)
macx:QMAKE_MACOSX_DEPLOYMENT_TARGET=10.6
!win32:!macx {
# Linux: static link and extra security (see: https://wiki.debian.org/Hardening)
LIBS += -Wl,-Bstatic -Wl,-z,relro -Wl,-z,now
@ -69,7 +66,6 @@ contains(USE_QRCODE, 1) {
contains(USE_UPNP, -) {
message(Building without UPNP support)
} else {
message(Building with UPNP support)
count(USE_UPNP, 0) {
USE_UPNP=1
}
@ -103,11 +99,62 @@ contains(BITCOIN_NEED_QT_PLUGINS, 1) {
QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs qtaccessiblewidgets
}
macx: {
isEmpty(DEPSDIR) {
check_dir = /usr/local/Cellar
exists($$check_dir) {
DEPSDIR = /usr/local
}
!exists($$check_dir) {
DEPSDIR = /opt/local
}
}
isEmpty(BOOST_LIB_PATH) {
BOOST_LIB_PATH = $$DEPSDIR/lib
}
isEmpty(BOOST_INCLUDE_PATH) {
BOOST_INCLUDE_PATH = $$DEPSDIR/include
}
isEmpty(BDB_LIB_PATH) {
BDB_LIB_PATH = $$DEPSDIR/lib
}
isEmpty(BDB_INCLUDE_PATH) {
BDB_INCLUDE_PATH = $$DEPSDIR/include
}
HEADERS += src/qt/macdockiconhandler.h src/qt/macnotificationhandler.h
OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm src/qt/macnotificationhandler.mm
LIBS += -framework Foundation -framework ApplicationServices -framework AppKit -framework CoreServices \
$$BDB_LIB_PATH/libdb_cxx.a \
$$BOOST_LIB_PATH/libboost_system-mt.a \
$$BOOST_LIB_PATH/libboost_filesystem-mt.a \
$$BOOST_LIB_PATH/libboost_program_options-mt.a \
$$BOOST_LIB_PATH/libboost_thread-mt.a \
$$BOOST_LIB_PATH/libboost_chrono-mt.a
DEFINES += MAC_OSX
ICON = src/mac/artwork/Dogecoin.icns
QMAKE_INFO_PLIST=src/mac/Info.plist
# osx 10.9 has changed the stdlib default to libc++. To prevent some link error, you may need to use libstdc++
QMAKE_CXXFLAGS += -stdlib=libstdc++
#one of these is unnecessary, perhaps all
QMAKE_CFLAGS_THREAD += -pthread
QMAKE_LFLAGS_THREAD += -pthread
QMAKE_CXXFLAGS_THREAD += -pthread
}
INCLUDEPATH += src/leveldb/include src/leveldb/helpers
LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a
!win32 {
# we use QMAKE_CXXFLAGS_RELEASE even without RELEASE=1 because we use RELEASE to indicate linking preferences not -O preferences
genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a
genleveldb.commands = cd $$PWD/src/leveldb && chmod +x build_detect_platform && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a
} else {
# make an educated guess about what the ranlib command is called
isEmpty(QMAKE_RANLIB) {
@ -366,11 +413,12 @@ OTHER_FILES += README.md \
src/test/*.cpp \
src/test/*.h \
src/qt/test/*.cpp \
src/qt/test/*.h
src/qt/test/*.h \
src/mac/Info.plist
# platform specific defaults, if not overridden on command line
isEmpty(BOOST_LIB_SUFFIX) {
macx:BOOST_LIB_SUFFIX = -mt
macx:BOOST_LIB_SUFFIX = -mt.a
win32:BOOST_LIB_SUFFIX = -mgw44-mt-s-1_50
}
@ -378,26 +426,6 @@ isEmpty(BOOST_THREAD_LIB_SUFFIX) {
BOOST_THREAD_LIB_SUFFIX = $$BOOST_LIB_SUFFIX
}
isEmpty(BDB_LIB_PATH) {
macx:BDB_LIB_PATH = /opt/local/lib/db48
}
isEmpty(BDB_LIB_SUFFIX) {
macx:BDB_LIB_SUFFIX = -4.8
}
isEmpty(BDB_INCLUDE_PATH) {
macx:BDB_INCLUDE_PATH = /opt/local/include/db48
}
isEmpty(BOOST_LIB_PATH) {
macx:BOOST_LIB_PATH = /opt/local/lib
}
isEmpty(BOOST_INCLUDE_PATH) {
macx:BOOST_INCLUDE_PATH = /opt/local/include
}
win32:DEFINES += WIN32 WIN32_LEAN_AND_MEAN
win32:RC_FILE = src/qt/res/bitcoin-qt.rc
@ -419,25 +447,20 @@ win32:!contains(MINGW_THREAD_BUGFIX, 0) {
DEFINES += _FILE_OFFSET_BITS=64
}
macx:HEADERS += src/qt/macdockiconhandler.h src/qt/macnotificationhandler.h
macx:OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm src/qt/macnotificationhandler.mm
macx:LIBS += -framework Foundation -framework ApplicationServices -framework AppKit -framework CoreServices
macx:DEFINES += MAC_OSX MSG_NOSIGNAL=0
macx:ICON = src/qt/res/icons/litecoin.icns
macx:QMAKE_CFLAGS_THREAD += -pthread
macx:QMAKE_LFLAGS_THREAD += -pthread
macx:QMAKE_CXXFLAGS_THREAD += -pthread
macx:QMAKE_INFO_PLIST = share/qt/Info.plist
# Set libraries and includes at end, to use platform-defined defaults if not overridden
INCLUDEPATH += $$BOOST_INCLUDE_PATH $$BDB_INCLUDE_PATH $$OPENSSL_INCLUDE_PATH $$QRENCODE_INCLUDE_PATH
LIBS += $$join(BOOST_LIB_PATH,,-L,) $$join(BDB_LIB_PATH,,-L,) $$join(OPENSSL_LIB_PATH,,-L,) $$join(QRENCODE_LIB_PATH,,-L,)
LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX
LIBS += -lssl -lcrypto
# -lgdi32 has to happen after -lcrypto (see #681)
win32:LIBS += -lws2_32 -lshlwapi -lmswsock -lole32 -loleaut32 -luuid -lgdi32
LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread$$BOOST_THREAD_LIB_SUFFIX
win32:LIBS += -lboost_chrono$$BOOST_LIB_SUFFIX
macx:LIBS += -lboost_chrono$$BOOST_LIB_SUFFIX
!macx {
LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX
LIBS += -lboost_thread$$BOOST_THREAD_LIB_SUFFIX -lboost_chrono$$BOOST_LIB_SUFFIX -ldb_cxx$$BDB_LIB_SUFFIX
}
win32: {
LIBS += -lws2_32 -lshlwapi -lmswsock -lole32 -loleaut32 -luuid -lgdi32
}
contains(RELEASE, 1) {
!win32:!macx {

View File

@ -27,6 +27,10 @@
#include <ifaddrs.h>
#endif
#if MAC_OSX
#define MSG_NOSIGNAL SO_NOSIGPIPE
#endif
typedef u_int SOCKET;
#ifdef WIN32
#define MSG_NOSIGNAL 0

26
src/mac/Info.plist Normal file
View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleShortVersionString</key>
<string>1.5.0.1</string>
<key>CFBundleVersion</key>
<string>1.5 Alpha 1</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleIconFile</key>
<string>Dogecoin.icns</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>NSHumanReadableCopyright</key>
<string>© Dogecoin</string>
<key>CFBundleSignature</key>
<string>DOGE</string>
<key>CFBundleExecutable</key>
<string>Dogecoin-Qt</string>
<key>CFBundleIdentifier</key>
<string>com.dogecoin.wallet-qt</string>
<key>CFBundleName</key>
<string>Dogecoin-Qt</string>
</dict>
</plist>

Binary file not shown.

View File

@ -4,21 +4,27 @@
# Distributed under the MIT/X11 software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
# Mac OS X makefile for bitcoin
# Mac OS X makefile for Dogecoin
# Originally by Laszlo Hanyecz (solar@heliacal.net)
CXX=llvm-g++
DEPSDIR=/opt/local
CXX=c++
CHECKDIR=$(wildcard /usr/local/Cellar)
ifneq ($(CHECK_DIR),)
DEPSDIR=/usr/local
else
DEPSDIR=/opt/local
endif
INCLUDEPATHS= \
-I"$(CURDIR)" \
-I"$(CURDIR)"/obj \
-I"$(DEPSDIR)/include" \
-I"$(DEPSDIR)/include/db48"
-I"$(DEPSDIR)/include"
LIBPATHS= \
-L"$(DEPSDIR)/lib" \
-L"$(DEPSDIR)/lib/db48"
-L"$(DEPSDIR)/lib"
USE_UPNP:=1
USE_IPV6:=1
@ -32,20 +38,20 @@ ifdef STATIC
TESTLIBS += \
$(DEPSDIR)/lib/libboost_unit_test_framework-mt.a
LIBS += \
$(DEPSDIR)/lib/db48/libdb_cxx-4.8.a \
$(DEPSDIR)/lib/libdb_cxx.a \
$(DEPSDIR)/lib/libboost_system-mt.a \
$(DEPSDIR)/lib/libboost_filesystem-mt.a \
$(DEPSDIR)/lib/libboost_program_options-mt.a \
$(DEPSDIR)/lib/libboost_thread-mt.a \
$(DEPSDIR)/lib/libboost_chrono-mt.a \
$(DEPSDIR)/lib/libssl.a \
$(DEPSDIR)/lib/libcrypto.a \
-lssl \
-lcrypto \
-lz
else
TESTLIBS += \
-lboost_unit_test_framework-mt
LIBS += \
-ldb_cxx-4.8 \
-ldb_cxx \
-lboost_system-mt \
-lboost_filesystem-mt \
-lboost_program_options-mt \
@ -57,13 +63,13 @@ LIBS += \
TESTDEFS += -DBOOST_TEST_DYN_LINK
endif
DEFS=-DMAC_OSX -DMSG_NOSIGNAL=0 -DBOOST_SPIRIT_THREADSAFE
DEFS=-DMAC_OSX -DBOOST_SPIRIT_THREADSAFE
ifdef RELEASE
# Compile for maximum compatibility and smallest size.
# This requires that dependencies are compiled
# the same way.
CFLAGS = -mmacosx-version-min=10.5 -arch i386 -O3
CFLAGS = -mmacosx-version-min=10.6 -O3
else
DEBUGFLAGS = -g
endif
@ -144,7 +150,7 @@ LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
leveldb/libleveldb.a:
@echo "Building LevelDB ..." && cd leveldb && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(CFLAGS)" libleveldb.a libmemenv.a && cd ..
@echo "Building LevelDB ..." && cd leveldb && chmod +x build_detect_platform && $(MAKE) CC=$(CC) CXX=$(CXX) OPT="$(CFLAGS)" libleveldb.a libmemenv.a && cd ..
# auto-generated dependencies:
-include obj/*.P