See the README's in depends for documentationtags/v0.15.1
@@ -0,0 +1,5 @@ | |||
SDKs/ | |||
work/ | |||
built/ | |||
sources/ | |||
config.site |
@@ -0,0 +1,114 @@ | |||
.NOTPARALLEL : | |||
SOURCES_PATH ?= $(BASEDIR)/sources | |||
BASE_CACHE ?= $(BASEDIR)/built | |||
SDK_PATH ?= $(BASEDIR)/SDKs | |||
NO_QT ?= | |||
NO_WALLET ?= | |||
NO_UPNP ?= | |||
BUILD = $(shell ./config.guess) | |||
HOST ?= $(BUILD) | |||
PATCHES_PATH = $(BASEDIR)/patches | |||
BASEDIR = $(CURDIR) | |||
HASH_LENGTH:=11 | |||
host:=$(BUILD) | |||
ifneq ($(HOST),) | |||
host:=$(HOST) | |||
host_toolchain:=$(HOST)- | |||
endif | |||
base_build_dir=$(BASEDIR)/work/build | |||
base_staging_dir=$(BASEDIR)/work/staging | |||
canonical_host:=$(shell ./config.sub $(HOST)) | |||
build:=$(shell ./config.sub $(BUILD)) | |||
build_arch =$(firstword $(subst -, ,$(build))) | |||
build_vendor=$(word 2,$(subst -, ,$(build))) | |||
full_build_os:=$(subst $(build_arch)-$(build_vendor)-,,$(build)) | |||
build_os:=$(findstring linux,$(full_build_os)) | |||
build_os+=$(findstring darwin,$(full_build_os)) | |||
build_os:=$(strip $(build_os)) | |||
ifeq ($(build_os),) | |||
build_os=$(full_build_os) | |||
endif | |||
host_arch=$(firstword $(subst -, ,$(canonical_host))) | |||
host_vendor=$(word 2,$(subst -, ,$(canonical_host))) | |||
full_host_os:=$(subst $(host_arch)-$(host_vendor)-,,$(canonical_host)) | |||
host_os:=$(findstring linux,$(full_host_os)) | |||
host_os+=$(findstring darwin,$(full_host_os)) | |||
host_os+=$(findstring mingw32,$(full_host_os)) | |||
host_os:=$(strip $(host_os)) | |||
ifeq ($(host_os),) | |||
host_os=$(full_host_os) | |||
endif | |||
$(host_arch)_$(host_os)_prefix=$(BASEDIR)/$(host) | |||
$(host_arch)_$(host_os)_host=$(host) | |||
host_prefix=$($(host_arch)_$(host_os)_prefix) | |||
build_prefix=$(host_prefix)/native | |||
build_host=$(build) | |||
AT_$(V):= | |||
AT_:=@ | |||
AT:=$(AT_$(V)) | |||
all: install | |||
include hosts/$(host_os).mk | |||
include hosts/default.mk | |||
include builders/$(build_os).mk | |||
include builders/default.mk | |||
include packages/packages.mk | |||
qt_packages_$(NO_QT) = $(qt_packages) $(qt_$(host_os)_packages) | |||
qt_native_packages_$(NO_QT) = $(qt_native_packages) | |||
wallet_packages_$(NO_WALLET) = $(wallet_packages) | |||
upnp_packages_$(NO_UPNP) = $(upnp_packages) | |||
packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages) $(qt_packages_) $(wallet_packages_) $(upnp_packages_) | |||
native_packages += $($(host_arch)_$(host_os)_native_packages) $($(host_os)_native_packages) $(qt_native_packages_) | |||
all_packages = $(packages) $(native_packages) | |||
meta_depends = Makefile builders/default.mk hosts/default.mk hosts/$(host_os).mk builders/$(build_os).mk | |||
$(host_arch)_$(host_os)_native_toolchain?=$($(host_os)_native_toolchain) | |||
include funcs.mk | |||
toolchain_path=$($($(host_arch)_$(host_os)_native_toolchain)_prefixbin) | |||
final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in) | |||
final_build_id+=$(shell echo -n $(final_build_id_long) | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH)) | |||
$(host_prefix)/.stamp_$(final_build_id): | $(native_packages) $(packages) | |||
$(AT)rm -rf $(@D) | |||
$(AT)mkdir -p $(@D) | |||
$(AT)echo copying packages: $| | |||
$(AT)echo to: $(@D) | |||
$(AT)cd $(@D); $(foreach package,$|, tar xf $($(package)_cached); ) | |||
$(AT)touch $@ | |||
$(host_prefix)/share/config.site : config.site.in $(host_prefix)/.stamp_$(final_build_id) | |||
$(AT)@mkdir -p $(@D) | |||
$(AT)sed -e 's|@HOST@|$(host)|' \ | |||
-e 's|@CC@|$(toolchain_path)$(host_CC)|' \ | |||
-e 's|@CXX@|$(toolchain_path)$(host_CXX)|' \ | |||
-e 's|@AR@|$(toolchain_path)$(host_AR)|' \ | |||
-e 's|@RANLIB@|$(toolchain_path)$(host_RANLIB)|' \ | |||
-e 's|@NM@|$(toolchain_path)$(host_NM)|' \ | |||
-e 's|@STRIP@|$(toolchain_path)$(host_STRIP)|' \ | |||
-e 's|@build_os@|$(build_os)|' \ | |||
-e 's|@host_os@|$(host_os)|' \ | |||
-e 's|@CFLAGS@|$(host_CFLAGS)|' \ | |||
-e 's|@CXXFLAGS@|$(host_CXXFLAGS)|' \ | |||
-e 's|@LDFLAGS@|$(host_LDFLAGS)|' \ | |||
-e 's|@no_qt@|$(NO_QT)|' \ | |||
-e 's|@no_wallet@|$(NO_WALLET)|' \ | |||
-e 's|@no_upnp@|$(NO_UPNP)|' \ | |||
$< > $@ | |||
$(AT)touch $@ | |||
install: $(host_prefix)/share/config.site | |||
download: $(all_sources) | |||
.PHONY: install cached |
@@ -0,0 +1,55 @@ | |||
This is a system of building and caching dependencies necessary for building | |||
Bitcoin. | |||
There are several features that make it different from most similar systems: | |||
- It is designed to be builder and host agnostic | |||
In theory, binaries for any target OS/architecture can be created, from a | |||
builder running any OS/architecture. In practice, build-side tools must be | |||
specified when the defaults don't fit, and packages must be ammended to work | |||
on new hosts. For now, a build architecture of x86_64 is assumed, either on | |||
Linux or OSX. | |||
- No reliance on timestamps | |||
File presence is used to determine what needs to be built. This makes the | |||
results distributable and easily digestable by automated builders. | |||
- Each build only has its specified dependencies available at build-time. | |||
For each build, the sysroot is wiped and the (recursive) dependencies are | |||
installed. This makes each build deterministic, since there will never be any | |||
unknown files available to cause side-effects. | |||
- Each package is cached and only rebuilt as needed. | |||
Before building, a unique build-id is generated for each package. This id | |||
consists of a hash of all files used to build the package (Makefiles, packages, | |||
etc), and as well as a hash of the same data for each recursive dependency. If | |||
any portion of a package's build recipe changes, it will be rebuilt as well as | |||
any other package that depends on it. If any of the main makefiles (Makefile, | |||
funcs.mk, etc) are changed, all packages will be rebuilt. After building, the | |||
results are cached into a tarball that can be re-used and distributed. | |||
- Package build results are (relatively) deterministic. | |||
Each package is configured and patched so that it will yield the same | |||
build-results with each consequent build, within a reasonable set of | |||
constraints. Some things like timestamp insertion are unavoidable, and are | |||
beyond the scope of this system. Additionally, the toolchain itself must be | |||
capable of deterministic results. When revisions are properly bumped, a cached | |||
build should represent an exact single payload. | |||
- Sources are fetched and verified automatically | |||
Each package must define its source location and checksum. The build will fail | |||
if the fetched source does not match. Sources may be pre-seeded and/or cached | |||
as desired. | |||
- Self-cleaning | |||
Build and staging dirs are wiped after use, and any previous version of a | |||
cached result is removed following a successful build. Automated builders | |||
should be able to build each revision and store the results with no further | |||
intervention. |
@@ -0,0 +1,116 @@ | |||
Each recipe consists of 3 main parts: defining identifiers, setting build | |||
variables, and defining build commands. | |||
The package "mylib" will be used here as an example | |||
General tips: | |||
mylib_foo is written as $(package)_foo in order to make recipes more similar. | |||
Identifiers: | |||
Each package is required to define at least these variables: | |||
$(package)_version: | |||
Version of the upstream library or program. If there is no version, a | |||
placeholder such as 1.0 can be used. | |||
$(package)_download_path: | |||
Location of the upstream source, without the file-name. Usually http or | |||
ftp. | |||
$(package)_file_name: | |||
The upstream source filename available at the download path. | |||
$(package)_sha256_hash: | |||
The sha256 hash of the upstream file | |||
These variables are optional: | |||
$(package)_build_subdir: | |||
cd to this dir before running configure/build/stage commands. | |||
$(package)_download_file: | |||
The file-name of the upstream source if it differs from how it should be | |||
stored locally. This can be used to avoid storing file-names with strange | |||
characters. | |||
$(package)_dependencies: | |||
Names of any other packages that this one depends on. | |||
$(package)_patches: | |||
Filenames of any patches needed to build the package | |||
Build Variables: | |||
After defining the main identifiers, build variables may be added or customized | |||
before running the build commands. They should be added to a function called | |||
$(package)_set_vars. For example: | |||
define $(package)_set_vars | |||
... | |||
endef | |||
Most variables can be prefixed with the host, architecture, or both, to make | |||
the modifications specific to that case. For example: | |||
Universal: $(package)_cc=gcc | |||
Linux only: $(package)_linux_cc=gcc | |||
x86_64 only: $(package)_x86_64_cc = gcc | |||
x86_64 linux only: $(package)_x86_64_linux_cc = gcc | |||
These variables may be set to override or append their default values. | |||
$(package)_cc | |||
$(package)_cxx | |||
$(package)_objc | |||
$(package)_objcxx | |||
$(package)_ar | |||
$(package)_ranlib | |||
$(package)_libtool | |||
$(package)_nm | |||
$(package)_cflags | |||
$(package)_cxxflags | |||
$(package)_ldflags | |||
$(package)_cppflags | |||
$(package)_config_env | |||
$(package)_build_env | |||
$(package)_stage_env | |||
The *_env variables are used to add environment variables to the respective | |||
commands. | |||
Other variables may be defined as needed. | |||
Build commands: | |||
For each build, a unique build dir and staging dir are created. For example, | |||
work/build/mylib/1.0-1adac830f6e and work/staging/mylib/1.0-1adac830f6e. | |||
The following build commands are available for each recipe: | |||
$(package)_fetch_cmds: | |||
Runs from: build dir | |||
Fetch the source file. If undefined, it will be fetched and verified | |||
against its hash. | |||
$(package)_extract_cmds: | |||
Runs from: build dir | |||
Verify the source file against its hash and extract it. If undefined, the | |||
source is assumed to be a tarball. | |||
$(package)_preprocess_cmds: | |||
Runs from: build dir/$(package)_build_subdir | |||
Preprocess the source as necessary. If undefined, does nothing. | |||
$(package)_config_cmds: | |||
Runs from: build dir/$(package)_build_subdir | |||
Configure the source. If undefined, does nothing. | |||
$(package)_build_cmds: | |||
Runs from: build dir/$(package)_build_subdir | |||
Build the source. If undefined, does nothing. | |||
$(package)_stage_cmds: | |||
Runs from: build dir/$(package)_build_subdir | |||
Stage the build results. If undefined, does nothing. | |||
The following variables are available for each recipe: | |||
$(1)_staging_dir: package's destination sysroot path | |||
$(1)_staging_prefix_dir: prefix path inside of the package's staging dir | |||
$(1)_extract_dir: path to the package's extracted sources | |||
$(1)_build_dir: path where configure/build/stage commands will be run | |||
$(1)_patch_dir: path where the package's patches (if any) are found | |||
Notes on build commands: | |||
For packages built with autotools, $($(package)_autoconf) can be used in the | |||
configure step to (usually) correctly configure automatically. Any | |||
$($(package)_config_opts) will be appended. | |||
Most autotools projects can be properly staged using: | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install |
@@ -0,0 +1,29 @@ | |||
To build dependencies for the current arch+OS: | |||
make | |||
To build for another arch/OS: | |||
make HOST=host-platform-triplet && make HOST=host-platform-triplet | |||
(For example: make HOST=i686-w64-mingw32 -j4) | |||
A prefix will be generated that's suitable for plugging into Bitcoin's | |||
configure. In the above example, a dir named i686-w64-mingw32 will be | |||
created. To use it for Bitcoin: | |||
./configure --prefix=`pwd`/depends/i686-w64-mingw32 | |||
No other options are needed, the paths are automatically configured. | |||
Dependency Options: | |||
The following can be set when running make: make FOO=bar | |||
SOURCES_PATH: downloaded sources will be placed here | |||
BASE_CACHE: built packages will be placed here | |||
SDK_PATH: Path where sdk's can be found (used by OSX) | |||
NO_QT: Don't download/build/cache qt and its dependencies | |||
NO_WALLET: Don't download/build/cache libs needed to enable the wallet | |||
NO_UPNP: Don't download/build/cache packages needed for enabling upnp | |||
If some packages are not built, for example 'make NO_WALLET=1', the appropriate | |||
options will be passed to bitcoin's configure. In this case, --disable-wallet. | |||
Additional targets: | |||
download: run 'make download' to fetch sources without building them |
@@ -0,0 +1,22 @@ | |||
build_darwin_CC: = $(shell xcrun -f clang) | |||
build_darwin_CXX: = $(shell xcrun -f clang++) | |||
build_darwin_AR: = $(shell xcrun -f ar) | |||
build_darwin_RANLIB: = $(shell xcrun -f ranlib) | |||
build_darwin_STRIP: = $(shell xcrun -f strip) | |||
build_darwin_OTOOL: = $(shell xcrun -f otool) | |||
build_darwin_NM: = $(shell xcrun -f nm) | |||
build_darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool) | |||
build_darwin_SHA256SUM = shasum -a 256 | |||
build_darwin_DOWNLOAD = curl -L -o | |||
#darwin host on darwin builder. overrides darwin host preferences. | |||
darwin_CC=$(shell xcrun -f clang) -mmacosx-version-min=$(OSX_MIN_VERSION) | |||
darwin_CXX:=$(shell xcrun -f clang++) -mmacosx-version-min=$(OSX_MIN_VERSION) | |||
darwin_AR:=$(shell xcrun -f ar) | |||
darwin_RANLIB:=$(shell xcrun -f ranlib) | |||
darwin_STRIP:=$(shell xcrun -f strip) | |||
darwin_LIBTOOL:=$(shell xcrun -f libtool) | |||
darwin_OTOOL:=$(shell xcrun -f otool) | |||
darwin_NM:=$(shell xcrun -f nm) | |||
darwin_INSTALL_NAME_TOOL:=$(shell xcrun -f install_name_tool) | |||
darwin_native_toolchain= |
@@ -0,0 +1,20 @@ | |||
default_build_CC = gcc | |||
default_build_CXX = g++ | |||
default_build_AR = ar | |||
default_build_RANLIB = ranlib | |||
default_build_STRIP = strip | |||
default_build_NM = nm | |||
default_build_OTOOL = otool | |||
default_build_INSTALL_NAME_TOOL = install_name_tool | |||
define add_build_tool_func | |||
build_$(build_os)_$1 ?= $$(default_build_$1) | |||
build_$(build_arch)_$(build_os)_$1 ?= $$(build_$(build_os)_$1) | |||
build_$1=$$(build_$(build_arch)_$(build_os)_$1) | |||
endef | |||
$(foreach var,CC CXX AR RANLIB NM STRIP SHA256SUM DOWNLOAD OTOOL INSTALL_NAME_TOOL,$(eval $(call add_build_tool_func,$(var)))) | |||
define add_build_flags_func | |||
build_$(build_arch)_$(build_os)_$1 += $(build_$(build_os)_$1) | |||
build_$1=$$(build_$(build_arch)_$(build_os)_$1) | |||
endef | |||
$(foreach flags, CFLAGS CXXFLAGS LDFLAGS, $(eval $(call add_build_flags_func,$(flags)))) |
@@ -0,0 +1,2 @@ | |||
build_linux_SHA256SUM = sha256sum | |||
build_linux_DOWNLOAD = wget -nv -O |
@@ -0,0 +1,84 @@ | |||
cross_compiling=maybe | |||
host_alias=@HOST@ | |||
ac_tool_prefix=${host_alias}- | |||
if test -z $with_boost; then | |||
with_boost=$prefix | |||
fi | |||
if test -z $with_qt_plugindir; then | |||
with_qt_plugindir=$prefix/plugins | |||
fi | |||
if test -z $with_qt_translationdir; then | |||
with_qt_translationdir=$prefix/translations | |||
fi | |||
if test -z $with_qt_bindir; then | |||
with_qt_bindir=$prefix/native/bin | |||
fi | |||
if test -z $with_protoc_bindir; then | |||
with_protoc_bindir=$prefix/native/bin | |||
fi | |||
if test -z $with_comparison_tool; then | |||
with_comparison_tool=$prefix/native/share/BitcoindComparisonTool_jar/BitcoindComparisonTool.jar | |||
fi | |||
if test -z $enable_wallet && test -n "@no_wallet@"; then | |||
enable_wallet=no | |||
fi | |||
if test -z $with_miniupnpc && test -n "@no_upnp@"; then | |||
with_miniupnpc=no | |||
fi | |||
if test -z $with_gui && test -n "@no_qt@"; then | |||
with_gui=no | |||
fi | |||
if test @host_os@ == darwin; then | |||
BREW=no | |||
PORT=no | |||
fi | |||
if test @host_os@ == mingw32; then | |||
if test -z $with_qt_incdir; then | |||
with_qt_incdir=$prefix/include | |||
fi | |||
if test -z $with_qt_libdir; then | |||
with_qt_libdir=$prefix/lib | |||
fi | |||
fi | |||
export PATH=$prefix/native/bin:$PATH | |||
export PKG_CONFIG="`which pkg-config` --static" | |||
export PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig | |||
export PKG_CONFIG_PATH=$prefix/share/pkgconfig | |||
export CPPFLAGS=-I$prefix/include/ | |||
export CC="@CC@" | |||
export CXX="@CXX@" | |||
export OBJC="${CC}" | |||
export OBJCXX="${CXX}" | |||
export CCACHE=$prefix/native/bin/ccache | |||
if test -n "@AR@"; then | |||
export AR=@AR@ | |||
ac_cv_path_ac_pt_AR=${AR} | |||
fi | |||
if test -n "@RANLIB@"; then | |||
export RANLIB=@RANLIB@ | |||
ac_cv_path_ac_pt_RANLIB=${RANLIB} | |||
fi | |||
if test -n "@NM@"; then | |||
export NM=@NM@ | |||
ac_cv_path_ac_pt_NM=${NM} | |||
fi | |||
if test -n "@CFLAGS@"; then | |||
export CFLAGS="@CFLAGS@ $CFLAGS" | |||
fi | |||
if test -n "@CXXFLAGS@"; then | |||
export CXXFLAGS="@CXXFLAGS@ $CXXFLAGS" | |||
fi | |||
export LDFLAGS="-L$prefix/lib @LDFLAGS@ $LDFLAGS" |
@@ -0,0 +1,219 @@ | |||
define int_vars | |||
#Set defaults for vars which may be overridden per-package | |||
$(1)_cc=$($($(1)_type)_CC) | |||
$(1)_cxx=$($($(1)_type)_CXX) | |||
$(1)_objc=$($($(1)_type)_OBJC) | |||
$(1)_objcxx=$($($(1)_type)_OBJCXX) | |||
$(1)_ar=$($($(1)_type)_AR) | |||
$(1)_ranlib=$($($(1)_type)_RANLIB) | |||
$(1)_libtool=$($($(1)_type)_LIBTOOL) | |||
$(1)_nm=$($($(1)_type)_NM) | |||
$(1)_cflags=$($($(1)_type)_CFLAGS) | |||
$(1)_cxxflags=$($($(1)_type)_CXXFLAGS) | |||
$(1)_ldflags=$($($(1)_type)_LDFLAGS) -L$($($(1)_type)_prefix)/lib | |||
$(1)_cppflags:=-I$($($(1)_type)_prefix)/include | |||
$(1)_recipe_hash:= | |||
endef | |||
define int_get_all_dependencies | |||
$(sort $(foreach dep,$(2),$(2) $(call int_get_all_dependencies,$(1),$($(dep)_dependencies)))) | |||
endef | |||
define fetch_file | |||
(test -f $(SOURCES_PATH)/$(3) || ( mkdir -p $$($(1)_extract_dir) && $(build_DOWNLOAD) "$$($(1)_extract_dir)/$(3).temp" "$(2)" && echo "$(4) $$($(1)_extract_dir)/$(3).temp" | $(build_SHA256SUM) -c && mv $$($(1)_extract_dir)/$(3).temp $(SOURCES_PATH)/$(3) )) | |||
endef | |||
define int_get_build_recipe_hash | |||
$(eval $(1)_all_file_checksums:=$(shell $(build_SHA256SUM) $(meta_depends) packages/$(1).mk $(addprefix $(PATCHES_PATH)/$(1)/,$($(1)_patches)))) | |||
$(eval $(1)_recipe_hash:=$(shell echo -n "$($(1)_all_file_checksums)" | $(build_SHA256SUM))) | |||
endef | |||
define int_get_build_id | |||
$(eval $(1)_dependencies += $($(1)_$(host_arch)_$(host_os)_dependencies) $($(1)_$(host_os)_dependencies)) | |||
$(eval $(1)_all_dependencies:=$(call int_get_all_dependencies,$(1),$($($(1)_type)_native_toolchain) $($(1)_dependencies))) | |||
$(foreach dep,$($(1)_all_dependencies),$(eval $(1)_build_id_deps+=$(dep)-$($(dep)_version)-$($(dep)_recipe_hash))) | |||
$(eval $(1)_build_id_long:=$(1)-$($(1)_version)-$($(1)_recipe_hash) $($(1)_build_id_deps)) | |||
$(eval $(1)_build_id:=$(shell echo -n "$($(1)_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))) | |||
final_build_id_long+=$($(package)_build_id_long) | |||
#compute package-specific paths | |||
$(1)_build_subdir?=. | |||
$(1)_download_file?=$($(1)_file_name) | |||
$(1)_source:=$(SOURCES_PATH)/$($(1)_file_name) | |||
$(1)_staging_dir=$(base_staging_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id) | |||
$(1)_staging_prefix_dir:=$$($(1)_staging_dir)$($($(1)_type)_prefix) | |||
$(1)_extract_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id) | |||
$(1)_build_dir:=$$($(1)_extract_dir)/$$($(1)_build_subdir) | |||
$(1)_patch_dir:=$(base_build_dir)/$(host)/$(1)/$($(1)_version)-$($(1)_build_id)/.patches-$($(1)_build_id) | |||
$(1)_prefixbin:=$($($(1)_type)_prefix)/bin/ | |||
$(1)_cached:=$(BASE_CACHE)/$(host)/$(1)/$(1)-$($(1)_version)-$($(1)_build_id).tar.gz | |||
#stamps | |||
$(1)_fetched=$$($(1)_extract_dir)/.stamp_fetched | |||
$(1)_extracted=$$($(1)_extract_dir)/.stamp_extracted | |||
$(1)_preprocessed=$$($(1)_extract_dir)/.stamp_preprocessed | |||
$(1)_cleaned=$$($(1)_extract_dir)/.stamp_cleaned | |||
$(1)_built=$$($(1)_build_dir)/.stamp_built | |||
$(1)_configured=$$($(1)_build_dir)/.stamp_configured | |||
$(1)_staged=$$($(1)_staging_dir)/.stamp_staged | |||
$(1)_postprocessed=$$($(1)_staging_prefix_dir)/.stamp_postprocessed | |||
$(1)_download_path_fixed=$(subst :,\:,$$($(1)_download_path)) | |||
#default commands | |||
$(1)_fetch_cmds ?= $(call fetch_file,$(1),$(subst \:,:,$$($(1)_download_path_fixed)/$$($(1)_download_file)),$($(1)_file_name),$($(1)_sha256_hash)) | |||
$(1)_extract_cmds ?= echo "$$($(1)_sha256_hash) $$($(1)_source)" | $(build_SHA256SUM) -c && tar --strip-components=1 -xf $$($(1)_source) | |||
$(1)_preprocess_cmds ?= | |||
$(1)_build_cmds ?= | |||
$(1)_config_cmds ?= | |||
$(1)_stage_cmds ?= | |||
$(1)_set_vars ?= | |||
all_sources+=$$($(1)_fetched) | |||
endef | |||
#$(foreach dep_target,$($(1)_all_dependencies),$(eval $(1)_dependency_targets=$($(dep_target)_cached))) | |||
define int_config_attach_build_config | |||
$(eval $(call $(1)_set_vars,$(1))) | |||
$(1)_cflags+=$($(1)_cflags_$(host_arch)) | |||
$(1)_cflags+=$($(1)_cflags_$(host_os)) | |||
$(1)_cflags+=$($(1)_cflags_$(host_arch)_$(host_os)) | |||
$(1)_cxxflags+=$($(1)_cxxflags_$(host_arch)) | |||
$(1)_cxxflags+=$($(1)_cxxflags_$(host_os)) | |||
$(1)_cxxflags+=$($(1)_cxxflags_$(host_arch)_$(host_os)) | |||
$(1)_cppflags+=$($(1)_cppflags_$(host_arch)) | |||
$(1)_cppflags+=$($(1)_cppflags_$(host_os)) | |||
$(1)_cppflags+=$($(1)_cppflags_$(host_arch)_$(host_os)) | |||
$(1)_ldflags+=$($(1)_ldflags_$(host_arch)) | |||
$(1)_ldflags+=$($(1)_ldflags_$(host_os)) | |||
$(1)_ldflags+=$($(1)_ldflags_$(host_arch)_$(host_os)) | |||
$(1)_build_opts+=$$($(1)_build_opts_$(host_arch)) | |||
$(1)_build_opts+=$$($(1)_build_opts_$(host_os)) | |||
$(1)_build_opts+=$$($(1)_build_opts_$(host_arch)_$(host_os)) | |||
$(1)_config_opts+=$$($(1)_config_opts_$(host_arch)) | |||
$(1)_config_opts+=$$($(1)_config_opts_$(host_os)) | |||
$(1)_config_opts+=$$($(1)_config_opts_$(host_arch)_$(host_os)) | |||
$(1)_config_env+=$($(1)_config_env_$(host_arch)) | |||
$(1)_config_env+=$($(1)_config_env_$(host_os)) | |||
$(1)_config_env+=$($(1)_config_env_$(host_arch)_$(host_os)) | |||
$(1)_config_env+=PKG_CONFIG_LIBDIR=$($($(1)_type)_prefix)/lib/pkgconfig | |||
$(1)_config_env+=PKG_CONFIG_PATH=$($($(1)_type)_prefix)/share/pkgconfig | |||
$(1)_config_env+=PATH=$(build_prefix)/bin:$(PATH) | |||
$(1)_build_env+=PATH=$(build_prefix)/bin:$(PATH) | |||
$(1)_stage_env+=PATH=$(build_prefix)/bin:$(PATH) | |||
$(1)_autoconf=./configure --host=$($($(1)_type)_host) --disable-dependency-tracking --prefix=$($($(1)_type)_prefix) $$($(1)_config_opts) CC="$$($(1)_cc)" CXX="$$($(1)_cxx)" | |||
ifneq ($($(1)_nm),) | |||
$(1)_autoconf += NM="$$($(1)_nm)" | |||
endif | |||
ifneq ($($(1)_ranlib),) | |||
$(1)_autoconf += RANLIB="$$($(1)_ranlib)" | |||
endif | |||
ifneq ($($(1)_ar),) | |||
$(1)_autoconf += AR="$$($(1)_ar)" | |||
endif | |||
ifneq ($($(1)_cflags),) | |||
$(1)_autoconf += CFLAGS="$$($(1)_cflags)" | |||
endif | |||
ifneq ($($(1)_cxxflags),) | |||
$(1)_autoconf += CXXFLAGS="$$($(1)_cxxflags)" | |||
endif | |||
ifneq ($($(1)_cppflags),) | |||
$(1)_autoconf += CPPFLAGS="$$($(1)_cppflags)" | |||
endif | |||
ifneq ($($(1)_ldflags),) | |||
$(1)_autoconf += LDFLAGS="$$($(1)_ldflags)" | |||
endif | |||
endef | |||
define int_add_cmds | |||
$($(1)_fetched): | |||
$(AT)echo Fetching $(1)... | |||
$(AT)mkdir -p $$(@D) $(SOURCES_PATH) | |||
$(AT)cd $$(@D); $(call $(1)_fetch_cmds,$(1)) | |||
$(AT)touch $$@ | |||
$($(1)_extracted): | $($(1)_fetched) | |||
$(AT)echo Extracting $(1)... | |||
$(AT)mkdir -p $$(@D) | |||
$(AT)cd $$(@D); $(call $(1)_extract_cmds,$(1)) | |||
$(AT)touch $$@ | |||
$($(1)_preprocessed): | $($(1)_dependencies) $($(1)_extracted) | |||
$(AT)echo Preprocessing $(1)... | |||
$(AT)mkdir -p $$(@D) $($(1)_patch_dir) | |||
$(AT)$(foreach patch,$($(1)_patches),cd $(PATCHES_PATH)/$(1); cp $(patch) $($(1)_patch_dir) ;) | |||
$(AT)cd $$(@D); $(call $(1)_preprocess_cmds, $(1)) | |||
$(AT)touch $$@ | |||
$($(1)_configured): | $($(1)_preprocessed) | |||
$(AT)echo Configuring $(1)... | |||
$(AT)rm -rf $(host_prefix); mkdir -p $(host_prefix)/lib; cd $(host_prefix); $(foreach package,$($(1)_all_dependencies), tar xf $($(package)_cached); ) | |||
$(AT)mkdir -p $$(@D) | |||
$(AT)+cd $$(@D); $($(1)_config_env) $(call $(1)_config_cmds, $(1)) | |||
$(AT)touch $$@ | |||
$($(1)_built): | $($(1)_configured) | |||
$(AT)echo Building $(1)... | |||
$(AT)mkdir -p $$(@D) | |||
$(AT)+cd $$(@D); $($(1)_build_env) $(call $(1)_build_cmds, $(1)) | |||
$(AT)touch $$@ | |||
$($(1)_staged): | $($(1)_built) | |||
$(AT)echo Staging $(1)... | |||
$(AT)mkdir -p $($(1)_staging_dir)/$(host_prefix) | |||
$(AT)cd $($(1)_build_dir); $($(1)_stage_env) $(call $(1)_stage_cmds, $(1)) | |||
$(AT)rm -rf $($(1)_extract_dir) | |||
$(AT)touch $$@ | |||
$($(1)_postprocessed): | $($(1)_staged) | |||
$(AT)echo Postprocessing $(1)... | |||
$(AT)cd $($(1)_staging_prefix_dir); $(call $(1)_postprocess_cmds) | |||
$(AT)touch $$@ | |||
$($(1)_cached): | $($(1)_dependencies) $($(1)_postprocessed) | |||
$(AT)echo Caching $(1)... | |||
$(AT)cd $$($(1)_staging_dir)/$(host_prefix); find . | sort | tar --no-recursion -czf $$($(1)_staging_dir)/$$(@F) -T - | |||
$(AT)mkdir -p $$(@D) | |||
$(AT)rm -rf $$(@D) && mkdir -p $$(@D) | |||
$(AT)mv $$($(1)_staging_dir)/$$(@F) $$(@) | |||
$(AT)rm -rf $($(1)_staging_dir) | |||
.PHONY: $(1) | |||
$(1): | $($(1)_cached) | |||
.SECONDARY: $($(1)_postprocessed) $($(1)_staged) $($(1)_built) $($(1)_configured) $($(1)_preprocessed) $($(1)_extracted) $($(1)_fetched) | |||
endef | |||
# These functions create the build targets for each package. They must be | |||
# broken down into small steps so that each part is done for all packages | |||
# before moving on to the next step. Otherwise, a package's info | |||
# (build-id for example) would only be avilable to another package if it | |||
# happened to be computed already. | |||
#set the type for host/build packages. | |||
$(foreach native_package,$(native_packages),$(eval $(native_package)_type=build)) | |||
$(foreach package,$(packages),$(eval $(package)_type=$(host_arch)_$(host_os))) | |||
#set overridable defaults | |||
$(foreach package,$(all_packages),$(eval $(call int_vars,$(package)))) | |||
#include package files | |||
$(foreach package,$(all_packages),$(eval include packages/$(package).mk)) | |||
#compute a hash of all files that comprise this package's build recipe | |||
$(foreach package,$(all_packages),$(eval $(call int_get_build_recipe_hash,$(package)))) | |||
#generate a unique id for this package, incorporating its dependencies as well | |||
$(foreach package,$(all_packages),$(eval $(call int_get_build_id,$(package)))) | |||
#compute final vars after reading package vars | |||
$(foreach package,$(all_packages),$(eval $(call int_config_attach_build_config,$(package)))) | |||
#create build targets | |||
$(foreach package,$(all_packages),$(eval $(call int_add_cmds,$(package)))) | |||
#special exception: if a toolchain package exists, all non-native packages depend on it | |||
$(foreach package,$(packages),$(eval $($(package)_unpacked): |$($($(host_arch)_$(host_os)_native_toolchain)_cached) )) |
@@ -0,0 +1,8 @@ | |||
OSX_MIN_VERSION=10.6 | |||
OSX_SDK_VERSION=10.7 | |||
OSX_SDK=$(SDK_PATH)/MacOSX$(OSX_SDK_VERSION).sdk | |||
darwin_CC=clang -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) | |||
darwin_CXX=clang++ -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysroot $(OSX_SDK) | |||
darwin_CFLAGS=-pipe -O2 | |||
darwin_CXXFLAGS=$(darwin_CFLAGS) | |||
darwin_native_toolchain=native_cctools |
@@ -0,0 +1,23 @@ | |||
default_host_CC = $(host_toolchain)gcc | |||
default_host_CXX = $(host_toolchain)g++ | |||
default_host_AR = $(host_toolchain)ar | |||
default_host_RANLIB = $(host_toolchain)ranlib | |||
default_host_STRIP = $(host_toolchain)strip | |||
default_host_LIBTOOL = $(host_toolchain)libtool | |||
default_host_INSTALL_NAME_TOOL = $(host_toolchain)install_name_tool | |||
default_host_OTOOL = $(host_toolchain)otool | |||
default_host_NM = $(host_toolchain)nm | |||
define add_host_tool_func | |||
$(host_os)_$1?=$$(default_host_$1) | |||
$(host_arch)_$(host_os)_$1?=$$($(host_os)_$1) | |||
host_$1=$$($(host_arch)_$(host_os)_$1) | |||
endef | |||
define add_host_flags_func | |||
$(host_arch)_$(host_os)_$1 += $($(host_os)_$1) | |||
host_$1 = $$($(host_arch)_$(host_os)_$1) | |||
endef | |||
$(foreach tool,CC CXX AR RANLIB STRIP NM LIBTOOL OTOOL INSTALL_NAME_TOOL,$(eval $(call add_host_tool_func,$(tool)))) | |||
$(foreach flags,CFLAGS CXXFLAGS LDFLAGS, $(eval $(call add_host_flags_func,$(flags)))) |
@@ -0,0 +1,23 @@ | |||
linux_CFLAGS=-pipe -O2 | |||
linux_CXXFLAGS=$(linux_CFLAGS) | |||
ifeq (86,$(findstring 86,$(build_arch))) | |||
i686_linux_CC=gcc -m32 | |||
i686_linux_CXX=g++ -m32 | |||
i686_linux_AR=ar | |||
i686_linux_RANLIB=ranlib | |||
i686_linux_NM=nm | |||
i686_linux_STRIP=strip | |||
x86_64_linux_CC=gcc -m64 | |||
x86_64_linux_CXX=g++ -m64 | |||
x86_64_linux_AR=ar | |||
x86_64_linux_RANLIB=ranlib | |||
x86_64_linux_NM=nm | |||
x86_64_linux_STRIP=strip | |||
else | |||
i686_linux_CC=$(default_host_CC) -m32 | |||
i686_linux_CXX=$(default_host_CXX) -m32 | |||
x86_64_linux_CC=$(default_host_CC) -m64 | |||
x86_64_linux_CXX=$(default_host_CXX) -m64 | |||
endif |
@@ -0,0 +1,2 @@ | |||
mingw32_CFLAGS=-pipe -O2 | |||
mingw32_CXXFLAGS=$(mingw32_CFLAGS) |
@@ -0,0 +1,29 @@ | |||
package=bdb | |||
$(package)_version=4.8.30 | |||
$(package)_download_path=http://download.oracle.com/berkeley-db | |||
$(package)_file_name=db-$($(package)_version).NC.tar.gz | |||
$(package)_sha256_hash=12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef | |||
$(package)_build_subdir=build_unix | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-shared --enable-cxx | |||
$(package)_config_opts_mingw32=--enable-mingw | |||
$(package)_config_opts_x86_64_linux=--with-pic | |||
$(package)_config_opts_arm_linux=--with-pic | |||
endef | |||
define $(package)_preprocess_cmds | |||
sed -i.old 's/__atomic_compare_exchange/__atomic_compare_exchange_db/' dbinc/atomic.h | |||
endef | |||
define $(package)_config_cmds | |||
../dist/$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) libdb_cxx-4.8.a libdb-4.8.a | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install_lib install_include | |||
endef |
@@ -0,0 +1,42 @@ | |||
package=boost | |||
$(package)_version=1_55_0 | |||
$(package)_download_path=http://sourceforge.net/projects/boost/files/boost/1.55.0 | |||
$(package)_file_name=$(package)_$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=fff00023dd79486d444c8e29922f4072e1d451fc5a4d2b6075852ead7f2b7b52 | |||
$(package)_patches=darwin_boost_atomic-1.patch darwin_boost_atomic-2.patch | |||
define $(package)_set_vars | |||
$(package)_config_opts=--layout=tagged --build-type=complete --user-config=user-config.jam | |||
$(package)_config_opts+=variant=release threading=multi link=static -sNO_BZIP2=1 -sNO_ZLIB=1 | |||
$(package)_config_opts_linux=threadapi=pthread runtime-link=shared | |||
$(package)_config_opts_darwin=--toolset=darwin-4.2.1 runtime-link=shared | |||
$(package)_config_opts_mingw32=binary-format=pe target-os=windows threadapi=win32 runtime-link=static | |||
$(package)_config_opts_x86_64_mingw32=address-model=64 | |||
$(package)_config_opts_i686_mingw32=address-model=32 | |||
$(package)_config_opts_i686_linux=address-model=32 architecture=x86 | |||
$(package)_toolset_$(host_os)=gcc | |||
$(package)_archiver_$(host_os)=$($(package)_ar) | |||
$(package)_toolset_darwin=darwin | |||
$(package)_archiver_darwin=$($(package)_libtool) | |||
$(package)_config_libraries=chrono,filesystem,program_options,system,thread,test | |||
$(package)_cxxflags_x86_64_linux=-fPIC | |||
$(package)_cxxflags_arm_linux=-fPIC | |||
endef | |||
define $(package)_preprocess_cmds | |||
patch -p2 < $($(package)_patch_dir)/darwin_boost_atomic-1.patch && \ | |||
patch -p2 < $($(package)_patch_dir)/darwin_boost_atomic-2.patch && \ | |||
echo "using $(boost_toolset_$(host_os)) : : $($(package)_cxx) : <cxxflags>\"$($(package)_cxxflags)\" <linkflags>\"$($(package)_ldflags)\" <archiver>\"$(boost_archiver_$(host_os))\" <striper>\"$(host_STRIP)\" <ranlib>\"$(host_RANLIB)\" <rc>\"$(host_WINDRES)\" : ;" > user-config.jam | |||
endef | |||
define $(package)_config_cmds | |||
./bootstrap.sh --without-icu --with-libraries=$(boost_config_libraries) | |||
endef | |||
define $(package)_build_cmds | |||
./b2 -d2 -j2 -d1 --prefix=$($(package)_staging_prefix_dir) $($(package)_config_opts) stage | |||
endef | |||
define $(package)_stage_cmds | |||
./b2 -d0 -j4 --prefix=$($(package)_staging_prefix_dir) $($(package)_config_opts) install | |||
endef |
@@ -0,0 +1,23 @@ | |||
package=dbus | |||
$(package)_version=1.8.6 | |||
$(package)_download_path=http://dbus.freedesktop.org/releases/dbus | |||
$(package)_file_name=$(package)-$($(package)_version).tar.gz | |||
$(package)_sha256_hash=eded83ca007b719f32761e60fd8b9ffd0f5796a4caf455b01b5a5ef740ebd23f | |||
$(package)_dependencies=expat | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-tests --disable-doxygen-docs --disable-xml-docs --disable-static --without-x | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) -C dbus libdbus-1.la | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) -C dbus DESTDIR=$($(package)_staging_dir) install-libLTLIBRARIES install-dbusincludeHEADERS install-nodist_dbusarchincludeHEADERS && \ | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install-pkgconfigDATA | |||
endef |
@@ -0,0 +1,21 @@ | |||
package=expat | |||
$(package)_version=2.1.0 | |||
$(package)_download_path=http://sourceforge.net/projects/expat/files/expat/$($(package)_version) | |||
$(package)_file_name=$(package)-$($(package)_version).tar.gz | |||
$(package)_sha256_hash=823705472f816df21c8f6aa026dd162b280806838bb55b3432b0fb1fcca7eb86 | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-static | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef |
@@ -0,0 +1,22 @@ | |||
package=fontconfig | |||
$(package)_version=2.11.1 | |||
$(package)_download_path=http://www.freedesktop.org/software/fontconfig/release/ | |||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=dc62447533bca844463a3c3fd4083b57c90f18a70506e7a9f4936b5a1e516a99 | |||
$(package)_dependencies=freetype expat | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-docs --disable-static | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef |
@@ -0,0 +1,22 @@ | |||
package=freetype | |||
$(package)_version=2.5.3 | |||
$(package)_download_path=http://downloads.sourceforge.net/$(package) | |||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=c0848b29d52ef3ca27ad92e08351f023c5e24ce8cea7d8fe69fc96358e65f75e | |||
define $(package)_set_vars | |||
$(package)_config_opts=--without-zlib --without-png --disable-static | |||
$(package)_config_opts_x86_64_linux=--with-pic | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef |
@@ -0,0 +1,23 @@ | |||
package=libX11 | |||
$(package)_version=1.6.2 | |||
$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/ | |||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=2aa027e837231d2eeea90f3a4afe19948a6eb4c8b2bec0241eba7dbc8106bd16 | |||
$(package)_dependencies=libxcb xtrans xextproto xproto | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-xkb --disable-static | |||
$(package)_config_opts_x86_64_linux=--with-pic | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef |
@@ -0,0 +1,23 @@ | |||
package=libXau | |||
$(package)_version=1.0.8 | |||
$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/ | |||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=fdd477320aeb5cdd67272838722d6b7d544887dfe7de46e1e7cc0c27c2bea4f2 | |||
$(package)_dependencies=xproto | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-shared | |||
$(package)_config_opts_x86_64_linux=--with-pic | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef |
@@ -0,0 +1,22 @@ | |||
package=libXext | |||
$(package)_version=1.3.2 | |||
$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/ | |||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=f829075bc646cdc085fa25d98d5885d83b1759ceb355933127c257e8e50432e0 | |||
$(package)_dependencies=xproto xextproto libX11 libXau | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-static | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef |
@@ -0,0 +1,30 @@ | |||
package=libxcb | |||
$(package)_version=1.10 | |||
$(package)_download_path=http://xcb.freedesktop.org/dist | |||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=98d9ab05b636dd088603b64229dd1ab2d2cc02ab807892e107d674f9c3f2d5b5 | |||
$(package)_dependencies=xcb_proto libXau xproto | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-static | |||
endef | |||
define $(package)_preprocess_cmds | |||
sed "s/pthread-stubs//" -i configure | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef | |||
define $(package)_postprocess_cmds | |||
rm -rf share/man share/doc | |||
endef |
@@ -0,0 +1,28 @@ | |||
package=miniupnpc | |||
$(package)_version=1.9 | |||
$(package)_download_path=http://miniupnp.free.fr/files | |||
$(package)_file_name=$(package)-$($(package)_version).tar.gz | |||
$(package)_sha256_hash=2923e453e880bb949e3d4da9f83dd3cb6f08946d35de0b864d0339cf70934464 | |||
define $(package)_set_vars | |||
$(package)_build_opts=CC="$($(package)_cc)" | |||
$(package)_build_opts_darwin=OS=Darwin | |||
$(package)_build_opts_mingw32=-f Makefile.mingw | |||
$(package)_build_env+=CFLAGS="$($(package)_cflags)" AR="$($(package)_ar)" | |||
endef | |||
define $(package)_preprocess_cmds | |||
mkdir dll && \ | |||
sed -e 's|MINIUPNPC_VERSION_STRING \"version\"|MINIUPNPC_VERSION_STRING \"$($(package)_version)\"|' -e 's|OS/version|$(host)|' miniupnpcstrings.h.in > miniupnpcstrings.h && \ | |||
sed -i.old "s|miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings|miniupnpcstrings.h: miniupnpcstrings.h.in|" Makefile.mingw | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) libminiupnpc.a $($(package)_build_opts) | |||
endef | |||
define $(package)_stage_cmds | |||
mkdir -p $($(package)_staging_prefix_dir)/include/miniupnpc $($(package)_staging_prefix_dir)/lib &&\ | |||
install *.h $($(package)_staging_prefix_dir)/include/miniupnpc &&\ | |||
install libminiupnpc.a $($(package)_staging_prefix_dir)/lib | |||
endef |
@@ -0,0 +1,25 @@ | |||
package=native_ccache | |||
$(package)_version=3.1.9 | |||
$(package)_download_path=http://samba.org/ftp/ccache | |||
$(package)_file_name=ccache-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=04d3e2e438ac8d4cc4b110b68cdd61bd59226c6588739a4a386869467f5ced7c | |||
define $(package)_set_vars | |||
$(package)_config_opts= | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef | |||
define $(package)_postprocess_cmds | |||
rm -rf lib include | |||
endef |
@@ -0,0 +1,80 @@ | |||
package=native_cctools | |||
$(package)_version=809 | |||
$(package)_download_path=http://www.opensource.apple.com/tarballs/cctools | |||
$(package)_file_name=cctools-$($(package)_version).tar.gz | |||
$(package)_sha256_hash=03ba62749b843b131c7304a044a98c6ffacd65b1399b921d69add0375f79d8ad | |||
$(package)_build_subdir=cctools2odcctools/odcctools-$($(package)_version) | |||
$(package)_dependencies=native_libuuid native_openssl | |||
$(package)_ld64_download_file=ld64-127.2.tar.gz | |||
$(package)_ld64_download_path=http://www.opensource.apple.com/tarballs/ld64 | |||
$(package)_ld64_file_name=$($(package)_ld64_download_file) | |||
$(package)_ld64_sha256_hash=97b75547b2bd761306ab3e15ae297f01e7ab9760b922bc657f4ef72e4e052142 | |||
$(package)_dyld_download_file=dyld-195.5.tar.gz | |||
$(package)_dyld_download_path=http://www.opensource.apple.com/tarballs/dyld | |||
$(package)_dyld_file_name=$($(package)_dyld_download_file) | |||
$(package)_dyld_sha256_hash=2cf0484c87cf79b606b351a7055a247dae84093ae92c747a74e0cde2c8c8f83c | |||
$(package)_toolchain4_download_file=10cc648683617cca8bcbeae507888099b41b530c.tar.gz | |||
$(package)_toolchain4_download_path=https://github.com/mingwandroid/toolchain4/archive | |||
$(package)_toolchain4_file_name=toolchain4-1.tar.gz | |||
$(package)_toolchain4_sha256_hash=18406961fd4a1ec5c7ea35c91d6a80a2f8bb797a2bd243a610bd75e13eff9aca | |||
$(package)_clang_download_file=clang+llvm-3.2-x86-linux-ubuntu-12.04.tar.gz | |||
$(package)_clang_download_path=http://llvm.org/releases/3.2 | |||
$(package)_clang_file_name=clang-llvm-3.2-x86-linux-ubuntu-12.04.tar.gz | |||
$(package)_clang_sha256_hash=b9d57a88f9514fa1f327a1a703756d0c1c960f4c58494a5bd80313245d13ffff | |||
define $(package)_fetch_cmds | |||
$(call fetch_file,$(package),$($(package)_download_path)/$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \ | |||
$(call fetch_file,$(package),$($(package)_ld64_download_path)/$($(package)_ld64_download_file),$($(package)_ld64_file_name),$($(package)_ld64_sha256_hash)) && \ | |||
$(call fetch_file,$(package),$($(package)_dyld_download_path)/$($(package)_dyld_download_file),$($(package)_dyld_file_name),$($(package)_dyld_sha256_hash)) && \ | |||
$(call fetch_file,$(package),$($(package)_clang_download_path)/$($(package)_clang_download_file),$($(package)_clang_file_name),$($(package)_clang_sha256_hash)) && \ | |||
$(call fetch_file,$(package),$($(package)_toolchain4_download_path)/$($(package)_toolchain4_download_file),$($(package)_toolchain4_file_name),$($(package)_toolchain4_sha256_hash)) | |||
endef | |||
define $(package)_set_vars | |||
$(package)_config_opts=--target=$(host) --with-sysroot=$(OSX_SDK) | |||
$(package)_cflags+=-m32 | |||
$(package)_cxxflags+=-m32 | |||
$(package)_cppflags+=-D__DARWIN_UNIX03 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS | |||
$(package)_ldflags+=-m32 -Wl,-rpath=\\$$$$$$$$\$$$$$$$$ORIGIN/../lib | |||
$(package)_ldflags+=-L$$(native_cctools_extract_dir)/clang+llvm-3.2-x86-linux-ubuntu-12.04/lib | |||
endef | |||
define $(package)_extract_cmds | |||
tar --strip-components=1 -xf $(SOURCES_PATH)/$($(package)_toolchain4_file_name) && \ | |||
ln -sf $($(package)_source) cctools2odcctools/$($(package)_file_name) && \ | |||
ln -sf $(SOURCES_PATH)/$($(package)_ld64_file_name) cctools2odcctools/$($(package)_ld64_file_name) && \ | |||
ln -sf $(SOURCES_PATH)/$($(package)_dyld_file_name) cctools2odcctools/$($(package)_dyld_file_name) && \ | |||
tar xf $(SOURCES_PATH)/$($(package)_clang_file_name) && \ | |||
mkdir -p $(SDK_PATH) sdks &&\ | |||
cd sdks; ln -sf $(OSX_SDK) MacOSX$(OSX_SDK_VERSION).sdk | |||
endef | |||
define $(package)_preprocess_cmds | |||
sed -i "s|GCC_DIR|LLVM_CLANG_DIR|g" cctools2odcctools/extract.sh && \ | |||
sed -i "s|llvmgcc42-2336.1|clang+llvm-3.2-x86-linux-ubuntu-12.04|g" cctools2odcctools/extract.sh && \ | |||
sed -i "s|/llvmCore/include/llvm-c|/include/llvm-c \$$$${LLVM_CLANG_DIR}/include/llvm |" cctools2odcctools/extract.sh && \ | |||
sed -i "s|fAC_INIT|AC_INIT|" cctools2odcctools/files/configure.ac && \ | |||
sed -i 's/\# Dynamically linked LTO/\t ;\&\n\t linux*)\n# Dynamically linked LTO/' cctools2odcctools/files/configure.ac && \ | |||
cd cctools2odcctools; ./extract.sh --osxver $(OSX_SDK_VERSION) && \ | |||
sed -i "s|define\tPC|define\tPC_|" odcctools-809/include/architecture/sparc/reg.h | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install && \ | |||
cd ../../clang+llvm-3.2-x86-linux-ubuntu-12.04 && \ | |||
mkdir -p $($(package)_staging_prefix_dir)/lib/clang/3.2/include && \ | |||
mkdir -p $($(package)_staging_prefix_dir)/bin && \ | |||
cp -P bin/clang bin/clang++ $($(package)_staging_prefix_dir)/bin/ &&\ | |||
cp lib/libLTO.so $($(package)_staging_prefix_dir)/lib/ && \ | |||
cp lib/clang/3.2/include/* $($(package)_staging_prefix_dir)/lib/clang/3.2/include/ && \ | |||
echo "#!/bin/sh" > $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil && \ | |||
echo "exit 0" >> $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil && \ | |||
chmod +x $($(package)_staging_prefix_dir)/bin/$(host)-dsymutil | |||
endef |
@@ -0,0 +1,26 @@ | |||
package=native_cdrkit | |||
$(package)_version=1.1.11 | |||
$(package)_download_path=http://distro.ibiblio.org/fatdog/source/c | |||
$(package)_file_name=cdrkit-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=b50d64c214a65b1a79afe3a964c691931a4233e2ba605d793eb85d0ac3652564 | |||
$(package)_patches=cdrkit-deterministic.patch | |||
define $(package)_preprocess_cmds | |||
patch -p1 < $($(package)_patch_dir)/cdrkit-deterministic.patch | |||
endef | |||
define $(package)_config_cmds | |||
cmake -DCMAKE_INSTALL_PREFIX=$(build_prefix) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) genisoimage | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) -C genisoimage install | |||
endef | |||
define $(package)_postprocess_cmds | |||
rm bin/isovfy bin/isoinfo bin/isodump bin/isodebug bin/devdump | |||
endef |
@@ -0,0 +1,44 @@ | |||
package=native_comparisontool | |||
$(package)_version=1 | |||
$(package)_download_path=https://github.com/TheBlueMatt/test-scripts/raw/master/BitcoindComparisonTool_jar | |||
$(package)_file_name=BitcoindComparisonTool.jar | |||
$(package)_sha256_hash=a08b1a55523e7f57768cb66c35f47a926710e5b6c82822e1ccfbe38fcce37db2 | |||
$(package)_guava_file_name=guava-13.0.1.jar | |||
$(package)_guava_sha256_hash=feb4b5b2e79a63b72ec47a693b1cf35cf1cea1f60a2bb2615bf21f74c7a60bb0 | |||
$(package)_h2_file_name=h2-1.3.167.jar | |||
$(package)_h2_sha256_hash=fa97521a2e72174485a96276bcf6f573d5e44ca6aba2f62de87b33b5bb0d4b91 | |||
$(package)_sc-light-jdk15on_file_name=sc-light-jdk15on-1.47.0.2.jar | |||
$(package)_sc-light-jdk15on_sha256_hash=931f39d351429fb96c2f749e7ecb1a256a8ebbf5edca7995c9cc085b94d1841d | |||
$(package)_slf4j-api_file_name=slf4j-api-1.6.4.jar | |||
$(package)_slf4j-api_sha256_hash=367b909030f714ee1176ab096b681e06348f03385e98d1bce0ed801b5452357e | |||
$(package)_slf4j-jdk14_file_name=slf4j-jdk14-1.6.4.jar | |||
$(package)_slf4j-jdk14_sha256_hash=064bd81796710f713f9f4a2309c0e032309934c2d2b4f7d3b6958325e584e13f | |||
define $(package)_fetch_cmds | |||
$(call fetch_file,$(package),$($(package)_download_path)/$($(package)_file_name),$($(package)_file_name),$($(package)_sha256_hash)) && \ | |||
$(call fetch_file,$(package),$($(package)_download_path)/$($(package)_guava_file_name),$($(package)_guava_file_name),$($(package)_guava_sha256_hash)) && \ | |||
$(call fetch_file,$(package),$($(package)_download_path)/$($(package)_h2_file_name),$($(package)_h2_file_name),$($(package)_h2_sha256_hash)) && \ | |||
$(call fetch_file,$(package),$($(package)_download_path)/$($(package)_sc-light-jdk15on_file_name),$($(package)_sc-light-jdk15on_file_name),$($(package)_sc-light-jdk15on_sha256_hash)) && \ | |||
$(call fetch_file,$(package),$($(package)_download_path)/$($(package)_slf4j-api_file_name),$($(package)_slf4j-api_file_name),$($(package)_slf4j-api_sha256_hash)) && \ | |||
$(call fetch_file,$(package),$($(package)_download_path)/$($(package)_slf4j-jdk14_file_name),$($(package)_slf4j-jdk14_file_name),$($(package)_slf4j-jdk14_sha256_hash)) | |||
endef | |||
define $(package)_extract_cmds | |||
echo none | |||
endef | |||
define $(package)_configure_cmds | |||
endef | |||
define $(package)_build_cmds | |||
endef | |||
define $(package)_stage_cmds | |||
mkdir -p $($(package)_staging_prefix_dir)/share/BitcoindComparisonTool_jar && \ | |||
cp $(SOURCES_PATH)/$($(package)_file_name) $($(package)_staging_prefix_dir)/share/BitcoindComparisonTool_jar/ && \ | |||
cp $(SOURCES_PATH)/$($(package)_guava_file_name) $($(package)_staging_prefix_dir)/share/BitcoindComparisonTool_jar/ && \ | |||
cp $(SOURCES_PATH)/$($(package)_h2_file_name) $($(package)_staging_prefix_dir)/share/BitcoindComparisonTool_jar/ && \ | |||
cp $(SOURCES_PATH)/$($(package)_sc-light-jdk15on_file_name) $($(package)_staging_prefix_dir)/share/BitcoindComparisonTool_jar/ && \ | |||
cp $(SOURCES_PATH)/$($(package)_slf4j-api_file_name) $($(package)_staging_prefix_dir)/share/BitcoindComparisonTool_jar/ && \ | |||
cp $(SOURCES_PATH)/$($(package)_slf4j-jdk14_file_name) $($(package)_staging_prefix_dir)/share/BitcoindComparisonTool_jar/ | |||
endef |
@@ -0,0 +1,22 @@ | |||
package=native_libdmg-hfsplus | |||
$(package)_version=0.1 | |||
$(package)_download_path=https://github.com/theuni/libdmg-hfsplus/archive | |||
$(package)_file_name=libdmg-hfsplus-v$($(package)_version).tar.gz | |||
$(package)_sha256_hash=6569a02eb31c2827080d7d59001869ea14484c281efab0ae7f2b86af5c3120b3 | |||
$(package)_build_subdir=build | |||
define $(package)_preprocess_cmds | |||
mkdir build | |||
endef | |||
define $(package)_config_cmds | |||
cmake -DCMAKE_INSTALL_PREFIX:PATH=$(build_prefix)/bin .. | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) -C dmg | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) -C dmg install | |||
endef |
@@ -0,0 +1,24 @@ | |||
package:=native_libuuid | |||
$(package)_version=1.41.14 | |||
$(package)_download_path=http://downloads.sourceforge.net/e2fsprogs | |||
$(package)_file_name=e2fsprogs-libs-$($(package)_version).tar.gz | |||
$(package)_sha256_hash=dbc7a138a3218d9b80a0626b5b692d76934d6746d8cbb762751be33785d8d9f5 | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-elf-shlibs --disable-uuidd | |||
$(package)_cflags+=-m32 | |||
$(package)_ldflags+=-m32 | |||
$(package)_cxxflags+=-m32 | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) -C lib/uuid | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) -C lib/uuid install | |||
endef |
@@ -0,0 +1,21 @@ | |||
package=native_openssl | |||
$(package)_version=1.0.1h | |||
$(package)_download_path=https://www.openssl.org/source | |||
$(package)_file_name=openssl-$($(package)_version).tar.gz | |||
$(package)_sha256_hash=9d1c8a9836aa63e2c6adb684186cbd4371c9e9dcc01d6e3bb447abf2d4d3d093 | |||
define $(package)_set_vars | |||
$(package)_build_config_opts= --prefix=$(build_prefix) no-zlib no-shared no-krb5C linux-generic32 -m32 | |||
endef | |||
define $(package)_config_cmds | |||
./Configure $($(package)_build_config_opts) &&\ | |||
sed -i "s|engines apps test|engines|" Makefile | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) -j1 | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) INSTALL_PREFIX=$($(package)_staging_dir) -j1 install_sw | |||
endef |
@@ -0,0 +1,25 @@ | |||
package=native_protobuf | |||
$(package)_version=2.5.0 | |||
$(package)_download_path=https://protobuf.googlecode.com/files | |||
$(package)_file_name=protobuf-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=13bfc5ae543cf3aa180ac2485c0bc89495e3ae711fc6fab4f8ffe90dfb4bb677 | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-shared | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) -C src protoc | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) -C src DESTDIR=$($(package)_staging_dir) install-strip | |||
endef | |||
define $(package)_postprocess_cmds | |||
rm -rf lib include | |||
endef |
@@ -0,0 +1,40 @@ | |||
package=openssl | |||
$(package)_version=1.0.1h | |||
$(package)_download_path=https://www.openssl.org/source | |||
$(package)_file_name=$(package)-$($(package)_version).tar.gz | |||
$(package)_sha256_hash=9d1c8a9836aa63e2c6adb684186cbd4371c9e9dcc01d6e3bb447abf2d4d3d093 | |||
define $(package)_set_vars | |||
$(package)_config_env=AR="$($(package)_ar)" RANLIB="$($(package)_ranlib)" CC="$($(package)_cc)" | |||
$(package)_config_opts=--prefix=$(host_prefix) --openssldir=$(host_prefix)/etc/openssl no-zlib no-shared no-dso | |||
$(package)_config_opts+=no-krb5 no-camellia no-capieng no-cast no-cms no-dtls1 no-gost no-gmp no-heartbeats no-idea no-jpake no-md2 | |||
$(package)_config_opts+=no-mdc2 no-rc5 no-rdrand no-rfc3779 no-rsax no-sctp no-seed no-sha0 no-static_engine no-whirlpool no-rc2 no-rc4 no-ssl3 | |||
$(package)_config_opts+=$($(package)_cflags) | |||
$(package)_config_opts_x86_64_linux=-fPIC linux-x86_64 | |||
$(package)_config_opts_arm_linux=-fPIC linux-generic32 | |||
$(package)_config_opts_x86_64_darwin=darwin64-x86_64-cc | |||
$(package)_config_opts_x86_64_mingw32=mingw64 | |||
$(package)_config_opts_i686_mingw32=mingw | |||
$(package)_config_opts_i686_linux=linux-generic32 -fPIC | |||
endef | |||
define $(package)_preprocess_cmds | |||
sed -i.old "/define DATE/d" crypto/Makefile && \ | |||
sed -i.old "s|engines apps test|engines|" Makefile.org | |||
endef | |||
define $(package)_config_cmds | |||
./Configure $($(package)_config_opts) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) -j1 build_libs libcrypto.pc libssl.pc openssl.pc | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) INSTALL_PREFIX=$($(package)_staging_dir) -j1 install_sw | |||
endef | |||
define $(package)_postprocess_cmds | |||
rm -rf share bin etc | |||
endef |
@@ -0,0 +1,14 @@ | |||
packages:=boost openssl | |||
native_packages := native_ccache native_comparisontool | |||
qt_native_packages = native_protobuf | |||
qt_packages = qt qrencode protobuf | |||
qt_linux_packages=expat dbus libxcb xcb_proto libXau xproto freetype fontconfig libX11 xextproto libXext xtrans | |||
wallet_packages=bdb | |||
upnp_packages=miniupnpc | |||
ifneq ($(build_os),darwin) | |||
darwin_native_packages=native_libuuid native_openssl native_cctools native_cdrkit native_libdmg-hfsplus | |||
endif |
@@ -0,0 +1,28 @@ | |||
package=protobuf | |||
$(package)_version=$(native_$(package)_version) | |||
$(package)_download_path=$(native_$(package)_download_path) | |||
$(package)_file_name=$(native_$(package)_file_name) | |||
$(package)_sha256_hash=$(native_$(package)_sha256_hash) | |||
$(package)_dependencies=native_$(package) | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc | |||
$(package)_config_opts_x86_64_linux=--with-pic | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) -C src libprotobuf.la | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) -C src install-libLTLIBRARIES install-nobase_includeHEADERS &&\ | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install-pkgconfigDATA | |||
endef | |||
define $(package)_postprocess_cmds | |||
rm lib/libprotoc.a | |||
endef |
@@ -0,0 +1,22 @@ | |||
package=qrencode | |||
$(package)_version=3.4.3 | |||
$(package)_download_path=https://fukuchi.org/works/qrencode/ | |||
$(package)_file_name=qrencode-$(qrencode_version).tar.bz2 | |||
$(package)_sha256_hash=dfd71487513c871bad485806bfd1fdb304dedc84d2b01a8fb8e0940b50597a98 | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-shared -without-tools --disable-sdltest | |||
$(package)_config_opts_x86_64_linux=--with-pic | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef |
@@ -0,0 +1,89 @@ | |||
PACKAGE=qt | |||
$(package)_version=5.2.1 | |||
$(package)_download_path=http://download.qt-project.org/official_releases/qt/5.2/$($(package)_version)/single | |||
$(package)_file_name=$(package)-everywhere-opensource-src-$($(package)_version).tar.gz | |||
$(package)_sha256_hash=84e924181d4ad6db00239d87250cc89868484a14841f77fb85ab1f1dbdcd7da1 | |||
$(package)_dependencies=openssl | |||
$(package)_linux_dependencies=freetype fontconfig dbus libxcb libX11 xproto libXext | |||
$(package)_build_subdir=qtbase | |||
$(package)_qt_libs=corelib network widgets gui plugins testlib | |||
$(package)_patches=mac-qmake.conf fix-xcb-include-order.patch | |||
define $(package)_set_vars | |||
$(package)_config_opts = -release -opensource -confirm-license | |||
$(package)_config_opts += -no-audio-backend -no-sql-tds -no-glib -no-icu | |||
$(package)_config_opts += -no-cups -no-iconv -no-gif -no-audio-backend -no-freetype | |||
$(package)_config_opts += -no-sql-sqlite -no-nis -no-cups -no-iconv -no-pch | |||
$(package)_config_opts += -no-gif -no-feature-style-plastique | |||
$(package)_config_opts += -no-qml-debug -no-pch -no-nis -nomake examples -nomake tests | |||
$(package)_config_opts += -no-feature-style-cde -no-feature-style-s60 -no-feature-style-motif | |||
$(package)_config_opts += -no-feature-style-windowsmobile -no-feature-style-windowsce | |||
$(package)_config_opts += -no-feature-style-cleanlooks | |||
$(package)_config_opts += -no-sql-db2 -no-sql-ibase -no-sql-oci -no-sql-tds -no-sql-mysql | |||
$(package)_config_opts += -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 | |||
$(package)_config_opts += -skip qtsvg -skip qtwebkit -skip qtwebkit-examples -skip qtserialport | |||
$(package)_config_opts += -skip qtdeclarative -skip qtmultimedia -skip qtimageformats -skip qtx11extras | |||
$(package)_config_opts += -skip qtlocation -skip qtsensors -skip qtquick1 -skip qtxmlpatterns | |||
$(package)_config_opts += -skip qtquickcontrols -skip qtactiveqt -skip qtconnectivity -skip qtmacextras | |||
$(package)_config_opts += -skip qtwinextras -skip qtxmlpatterns -skip qtscript -skip qtdoc | |||
$(package)_config_opts += -prefix $(host_prefix) -bindir $(build_prefix)/bin | |||
$(package)_config_opts += -no-c++11 -openssl-linked -v -static -silent -pkg-config | |||
$(package)_config_opts += -qt-libpng -qt-libjpeg -qt-zlib -qt-pcre | |||
ifneq ($(build_os),darwin) | |||
$(package)_config_opts_darwin = -xplatform macx-clang-linux -device-option MAC_SDK_PATH=$(OSX_SDK) -device-option CROSS_COMPILE="$(host)-" | |||
$(package)_config_opts_darwin += -device-option MAC_MIN_VERSION=$(OSX_MIN_VERSION) -device-option MAC_TARGET=$(host) | |||
endif | |||
$(package)_config_opts_linux = -qt-xkbcommon -qt-xcb -no-eglfs -no-linuxfb -system-freetype -no-sm -fontconfig -no-xinput2 -no-libudev -no-egl -no-opengl | |||
$(package)_config_opts_arm_linux = -platform linux-g++ -xplatform $(host) | |||
$(package)_config_opts_i686_linux = -xplatform linux-g++-32 | |||
$(package)_config_opts_mingw32 = -no-opengl -xplatform win32-g++ -device-option CROSS_COMPILE="$(host)-" | |||
$(package)_build_env = QT_RCC_TEST=1 | |||
endef | |||
define $(package)_preprocess_cmds | |||
sed -i.old "s|updateqm.commands = \$$$$\$$$$LRELEASE|updateqm.commands = $($(package)_extract_dir)/qttools/bin/lrelease|" qttranslations/translations/translations.pro && \ | |||
sed -i.old "s/src_plugins.depends = src_sql src_xml src_network/src_plugins.depends = src_xml src_network/" qtbase/src/src.pro && \ | |||
sed -i.old "/XIproto.h/d" qtbase/src/plugins/platforms/xcb/qxcbxsettings.cpp && \ | |||
mkdir -p qtbase/mkspecs/macx-clang-linux &&\ | |||
cp -f qtbase/mkspecs/macx-clang/Info.plist.lib qtbase/mkspecs/macx-clang-linux/ &&\ | |||
cp -f qtbase/mkspecs/macx-clang/Info.plist.app qtbase/mkspecs/macx-clang-linux/ &&\ | |||
cp -f qtbase/mkspecs/macx-clang/qplatformdefs.h qtbase/mkspecs/macx-clang-linux/ &&\ | |||
cp -f $($(package)_patch_dir)/mac-qmake.conf qtbase/mkspecs/macx-clang-linux/qmake.conf && \ | |||
patch -p1 < $($(package)_patch_dir)/fix-xcb-include-order.patch | |||
endef | |||
define $(package)_config_cmds | |||
export PKG_CONFIG_SYSROOT_DIR=/ && \ | |||
export PKG_CONFIG_LIBDIR=$(host_prefix)/lib/pkgconfig && \ | |||
export PKG_CONFIG_PATH=$(host_prefix)/share/pkgconfig && \ | |||
export CPATH=$(host_prefix)/include && \ | |||
./configure $($(package)_config_opts) && \ | |||
$(MAKE) sub-src-clean && \ | |||
cd ../qttranslations && ../qtbase/bin/qmake qttranslations.pro -o Makefile && \ | |||
cd translations && ../../qtbase/bin/qmake translations.pro -o Makefile && cd ../.. &&\ | |||
cd qttools/src/linguist/lrelease/ && ../../../../qtbase/bin/qmake lrelease.pro -o Makefile | |||
endef | |||
define $(package)_build_cmds | |||
export CPATH=$(host_prefix)/include && \ | |||
$(MAKE) -C src $(addprefix sub-,$($(package)_qt_libs)) && \ | |||
$(MAKE) -C ../qttools/src/linguist/lrelease && \ | |||
$(MAKE) -C ../qttranslations | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) -C src INSTALL_ROOT=$($(package)_staging_dir) $(addsuffix -install_subtargets,$(addprefix sub-,$($(package)_qt_libs))) && cd .. &&\ | |||
$(MAKE) -C qttools/src/linguist/lrelease INSTALL_ROOT=$($(package)_staging_dir) install_target && \ | |||
$(MAKE) -C qttranslations INSTALL_ROOT=$($(package)_staging_dir) install_subtargets && \ | |||
if `test -f qtbase/src/plugins/platforms/xcb/xcb-static/libxcb-static.a`; then \ | |||
cp qtbase/src/plugins/platforms/xcb/xcb-static/libxcb-static.a $($(package)_staging_prefix_dir)/lib; \ | |||
fi | |||
endef | |||
define $(package)_postprocess_cmds | |||
rm -rf mkspecs/ lib/cmake/ && \ | |||
rm lib/libQt5Bootstrap.a lib/lib*.la lib/lib*.prl | |||
endef |
@@ -0,0 +1,27 @@ | |||
package=xcb_proto | |||
$(package)_version=1.10 | |||
$(package)_download_path=http://xcb.freedesktop.org/dist | |||
$(package)_file_name=xcb-proto-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=7ef40ddd855b750bc597d2a435da21e55e502a0fefa85b274f2c922800baaf05 | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-shared | |||
$(package)_config_opts_x86_64_linux=--with-pic | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef | |||
define $(package)_postprocess_cmds | |||
find -name "*.pyc" -delete && \ | |||
find -name "*.pyo" -delete | |||
endef |
@@ -0,0 +1,21 @@ | |||
package=xextproto | |||
$(package)_version=7.3.0 | |||
$(package)_download_path=http://xorg.freedesktop.org/releases/individual/proto | |||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=f3f4b23ac8db9c3a9e0d8edb591713f3d70ef9c3b175970dd8823dfc92aa5bb0 | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-shared | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef |
@@ -0,0 +1,21 @@ | |||
package=xproto | |||
$(package)_version=7.0.26 | |||
$(package)_download_path=http://xorg.freedesktop.org/releases/individual/proto | |||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=636162c1759805a5a0114a369dffdeccb8af8c859ef6e1445f26a4e6e046514f | |||
define $(package)_set_vars | |||
$(package)_config_opts=--disable-shared | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef |
@@ -0,0 +1,22 @@ | |||
package=xtrans | |||
$(package)_version=1.3.4 | |||
$(package)_download_path=http://xorg.freedesktop.org/releases/individual/lib/ | |||
$(package)_file_name=$(package)-$($(package)_version).tar.bz2 | |||
$(package)_sha256_hash=054d4ee3efd52508c753e9f7bc655ef185a29bd2850dd9e2fc2ccc33544f583a | |||
$(package)_dependencies= | |||
define $(package)_set_vars | |||
$(package)_config_opts_x86_64_linux=--with-pic --disable-static | |||
endef | |||
define $(package)_config_cmds | |||
$($(package)_autoconf) | |||
endef | |||
define $(package)_build_cmds | |||
$(MAKE) | |||
endef | |||
define $(package)_stage_cmds | |||
$(MAKE) DESTDIR=$($(package)_staging_dir) install | |||
endef |
@@ -0,0 +1,35 @@ | |||
diff --git a/include/boost/atomic/detail/cas128strong.hpp b/include/boost/atomic/detail/cas128strong.hpp | |||
index 906c13e..dcb4d7d 100644 | |||
--- a/include/boost/atomic/detail/cas128strong.hpp | |||
+++ b/include/boost/atomic/detail/cas128strong.hpp | |||
@@ -196,15 +196,17 @@ class base_atomic<T, void, 16, Sign> | |||
public: | |||
BOOST_DEFAULTED_FUNCTION(base_atomic(void), {}) | |||
- explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) | |||
+ explicit base_atomic(value_type const& v) BOOST_NOEXCEPT | |||
{ | |||
+ memset(&v_, 0, sizeof(v_)); | |||
memcpy(&v_, &v, sizeof(value_type)); | |||
} | |||
void | |||
store(value_type const& value, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT | |||
{ | |||
- storage_type value_s = 0; | |||
+ storage_type value_s; | |||
+ memset(&value_s, 0, sizeof(value_s)); | |||
memcpy(&value_s, &value, sizeof(value_type)); | |||
platform_fence_before_store(order); | |||
platform_store128(value_s, &v_); | |||
@@ -247,7 +249,9 @@ class base_atomic<T, void, 16, Sign> | |||
memory_order success_order, | |||
memory_order failure_order) volatile BOOST_NOEXCEPT | |||
{ | |||
- storage_type expected_s = 0, desired_s = 0; | |||
+ storage_type expected_s, desired_s; | |||
+ memset(&expected_s, 0, sizeof(expected_s)); | |||
+ memset(&desired_s, 0, sizeof(desired_s)); | |||
memcpy(&expected_s, &expected, sizeof(value_type)); | |||
memcpy(&desired_s, &desired, sizeof(value_type)); | |||
@@ -0,0 +1,55 @@ | |||
diff --git a/include/boost/atomic/detail/gcc-atomic.hpp b/include/boost/atomic/detail/gcc-atomic.hpp | |||
index a130590..4af99a1 100644 | |||
--- a/include/boost/atomic/detail/gcc-atomic.hpp | |||
+++ b/include/boost/atomic/detail/gcc-atomic.hpp | |||
@@ -958,14 +958,16 @@ class base_atomic<T, void, 16, Sign> | |||
public: | |||
BOOST_DEFAULTED_FUNCTION(base_atomic(void), {}) | |||
- explicit base_atomic(value_type const& v) BOOST_NOEXCEPT : v_(0) | |||
+ explicit base_atomic(value_type const& v) BOOST_NOEXCEPT | |||
{ | |||
+ memset(&v_, 0, sizeof(v_)); | |||
memcpy(&v_, &v, sizeof(value_type)); | |||
} | |||
void store(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT | |||
{ | |||
- storage_type tmp = 0; | |||
+ storage_type tmp; | |||
+ memset(&tmp, 0, sizeof(tmp)); | |||
memcpy(&tmp, &v, sizeof(value_type)); | |||
__atomic_store_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order)); | |||
} | |||
@@ -980,7 +982,8 @@ class base_atomic<T, void, 16, Sign> | |||
value_type exchange(value_type const& v, memory_order order = memory_order_seq_cst) volatile BOOST_NOEXCEPT | |||
{ | |||
- storage_type tmp = 0; | |||
+ storage_type tmp; | |||
+ memset(&tmp, 0, sizeof(tmp)); | |||
memcpy(&tmp, &v, sizeof(value_type)); | |||
tmp = __atomic_exchange_n(&v_, tmp, atomics::detail::convert_memory_order_to_gcc(order)); | |||
value_type res; | |||
@@ -994,7 +997,9 @@ class base_atomic<T, void, 16, Sign> | |||
memory_order success_order, | |||
memory_order failure_order) volatile BOOST_NOEXCEPT | |||
{ | |||
- storage_type expected_s = 0, desired_s = 0; | |||
+ storage_type expected_s, desired_s; | |||
+ memset(&expected_s, 0, sizeof(expected_s)); | |||
+ memset(&desired_s, 0, sizeof(desired_s)); | |||
memcpy(&expected_s, &expected, sizeof(value_type)); | |||
memcpy(&desired_s, &desired, sizeof(value_type)); | |||
const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, false, | |||
@@ -1010,7 +1015,9 @@ class base_atomic<T, void, 16, Sign> | |||
memory_order success_order, | |||
memory_order failure_order) volatile BOOST_NOEXCEPT | |||
{ | |||
- storage_type expected_s = 0, desired_s = 0; | |||
+ storage_type expected_s, desired_s; | |||
+ memset(&expected_s, 0, sizeof(expected_s)); | |||
+ memset(&desired_s, 0, sizeof(desired_s)); | |||
memcpy(&expected_s, &expected, sizeof(value_type)); | |||
memcpy(&desired_s, &desired, sizeof(value_type)); | |||
const bool success = __atomic_compare_exchange_n(&v_, &expected_s, desired_s, true, |
@@ -0,0 +1,86 @@ | |||
--- cdrkit-1.1.11.old/genisoimage/tree.c 2008-10-21 19:57:47.000000000 -0400 | |||
+++ cdrkit-1.1.11/genisoimage/tree.c 2013-12-06 00:23:18.489622668 -0500 | |||
@@ -1139,8 +1139,9 @@ | |||
scan_directory_tree(struct directory *this_dir, char *path, | |||
struct directory_entry *de) | |||
{ | |||
- DIR *current_dir; | |||
+ int current_file; | |||
char whole_path[PATH_MAX]; | |||
+ struct dirent **d_list; | |||
struct dirent *d_entry; | |||
struct directory *parent; | |||
int dflag; | |||
@@ -1164,7 +1165,8 @@ | |||
this_dir->dir_flags |= DIR_WAS_SCANNED; | |||
errno = 0; /* Paranoia */ | |||
- current_dir = opendir(path); | |||
+ //current_dir = opendir(path); | |||
+ current_file = scandir(path, &d_list, NULL, alphasort); | |||
d_entry = NULL; | |||
/* | |||
@@ -1173,12 +1175,12 @@ | |||
*/ | |||
old_path = path; | |||
- if (current_dir) { | |||
+ if (current_file >= 0) { | |||
errno = 0; | |||
- d_entry = readdir(current_dir); | |||
+ d_entry = d_list[0]; | |||
} | |||
- if (!current_dir || !d_entry) { | |||
+ if (current_file < 0 || !d_entry) { | |||
int ret = 1; | |||
#ifdef USE_LIBSCHILY | |||
@@ -1191,8 +1193,8 @@ | |||
de->isorec.flags[0] &= ~ISO_DIRECTORY; | |||
ret = 0; | |||
} | |||
- if (current_dir) | |||
- closedir(current_dir); | |||
+ if(d_list) | |||
+ free(d_list); | |||
return (ret); | |||
} | |||
#ifdef ABORT_DEEP_ISO_ONLY | |||
@@ -1208,7 +1210,7 @@ | |||
errmsgno(EX_BAD, "use Rock Ridge extensions via -R or -r,\n"); | |||
errmsgno(EX_BAD, "or allow deep ISO9660 directory nesting via -D.\n"); | |||
} | |||
- closedir(current_dir); | |||
+ free(d_list); | |||
return (1); | |||
} | |||
#endif | |||
@@ -1250,13 +1252,13 @@ | |||
* The first time through, skip this, since we already asked | |||
* for the first entry when we opened the directory. | |||
*/ | |||
- if (dflag) | |||
- d_entry = readdir(current_dir); | |||
+ if (dflag && current_file >= 0) | |||
+ d_entry = d_list[current_file]; | |||
dflag++; | |||
- if (!d_entry) | |||
+ if (current_file < 0) | |||
break; | |||
- | |||
+ current_file--; | |||
/* OK, got a valid entry */ | |||
/* If we do not want all files, then pitch the backups. */ | |||
@@ -1348,7 +1350,7 @@ | |||
insert_file_entry(this_dir, whole_path, d_entry->d_name); | |||
#endif /* APPLE_HYB */ | |||
} | |||
- closedir(current_dir); | |||
+ free(d_list); | |||
#ifdef APPLE_HYB | |||
/* |
@@ -0,0 +1,21 @@ | |||
--- old/qtbase/src/plugins/platforms/xcb/xcb-plugin.pro 2014-07-30 18:17:27.384458441 -0400 | |||
+++ new/qtbase/src/plugins/platforms/xcb/xcb-plugin.pro 2014-07-30 18:18:28.620459303 -0400 | |||
@@ -101,10 +101,6 @@ | |||
} | |||
} | |||
-DEFINES += $$QMAKE_DEFINES_XCB | |||
-LIBS += $$QMAKE_LIBS_XCB | |||
-QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_XCB | |||
- | |||
CONFIG += qpa/genericunixfontdatabase | |||
contains(QT_CONFIG, dbus) { | |||
@@ -141,3 +137,7 @@ | |||
INCLUDEPATH += ../../../3rdparty/xkbcommon/xkbcommon/ | |||
} | |||
} | |||
+ | |||
+DEFINES += $$QMAKE_DEFINES_XCB | |||
+LIBS += $$QMAKE_LIBS_XCB | |||
+INCLUDEPATH += $$QMAKE_CFLAGS_XCB |
@@ -0,0 +1,23 @@ | |||
MAKEFILE_GENERATOR = UNIX | |||
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname absolute_library_soname | |||
QMAKE_INCREMENTAL_STYLE = sublib | |||
include(../common/macx.conf) | |||
include(../common/gcc-base-mac.conf) | |||
include(../common/clang.conf) | |||
include(../common/clang-mac.conf) | |||
QMAKE_MAC_SDK_PATH=$${MAC_SDK_PATH} | |||
QMAKE_XCODE_VERSION=4.3 | |||
QMAKE_XCODE_DEVELOPER_PATH=/Developer | |||
QMAKE_MACOSX_DEPLOYMENT_TARGET = $${MAC_MIN_VERSION} | |||
QMAKE_MAC_SDK=macosx | |||
QMAKE_MAC_SDK.macosx.path = $$QMAKE_MAC_SDK_PATH | |||
QMAKE_MAC_SDK.macosx.platform_name = macosx | |||
QMAKE_CFLAGS += -target $${MAC_TARGET} | |||
QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CFLAGS | |||
QMAKE_CXXFLAGS += $$QMAKE_CFLAGS | |||
QMAKE_LFLAGS += -target $${MAC_TARGET} | |||
QMAKE_AR = $${CROSS_COMPILE}ar cq | |||
QMAKE_RANLIB=$${CROSS_COMPILE}ranlib | |||
QMAKE_LIBTOOL=$${CROSS_COMPILE}libtool | |||
QMAKE_INSTALL_NAME_TOOL=$${CROSS_COMPILE}install_name_tool | |||
load(qt_config) |