aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHoward Chu <hyc@symas.com>2019-11-11 08:34:47 +0000
committerHoward Chu <hyc@symas.com>2019-11-14 07:03:04 +0000
commitcca6e5c645b51d4dfed7021be12d993d17fab0d6 (patch)
tree2e27def7e859335449cc4f66aa6369a417b37f49
parentgitian: Parametrize target platforms (diff)
downloadmonero-cca6e5c645b51d4dfed7021be12d993d17fab0d6.tar.xz
depends: Add FreeBSD support
-rw-r--r--contrib/depends/Makefile4
-rw-r--r--contrib/depends/hosts/freebsd.mk17
-rw-r--r--contrib/depends/packages/boost.mk1
-rw-r--r--contrib/depends/packages/freebsd_base.mk23
-rw-r--r--contrib/depends/packages/libiconv.mk1
-rw-r--r--contrib/depends/packages/openssl.mk2
-rw-r--r--contrib/depends/packages/packages.mk26
-rw-r--r--contrib/depends/packages/zeromq.mk1
-rw-r--r--contrib/depends/toolchain.cmake.in7
9 files changed, 68 insertions, 14 deletions
diff --git a/contrib/depends/Makefile b/contrib/depends/Makefile
index 7eedee15e..28ec972e4 100644
--- a/contrib/depends/Makefile
+++ b/contrib/depends/Makefile
@@ -58,6 +58,7 @@ ifeq ($(host_os),)
host_os:=$(findstring linux,$(full_host_os))
endif
host_os+=$(findstring darwin,$(full_host_os))
+host_os+=$(findstring freebsd,$(full_host_os))
host_os+=$(findstring mingw32,$(full_host_os))
host_os:=$(strip $(host_os))
ifeq ($(host_os),)
@@ -74,6 +75,9 @@ endif
ifeq ($(host_os),linux)
host_cmake=Linux
endif
+ifeq ($(host_os),freebsd)
+host_cmake=FreeBSD
+endif
ifeq ($(host_os),darwin)
host_cmake=Darwin
endif
diff --git a/contrib/depends/hosts/freebsd.mk b/contrib/depends/hosts/freebsd.mk
new file mode 100644
index 000000000..6a7a2fe20
--- /dev/null
+++ b/contrib/depends/hosts/freebsd.mk
@@ -0,0 +1,17 @@
+freebsd_CC=clang-8
+freebsd_CXX=clang++-8
+freebsd_AR=ar
+freebsd_RANLIB=ranlib
+freebsd_NM=nm
+
+freebsd_CFLAGS=-pipe
+freebsd_CXXFLAGS=$(freebsd_CFLAGS)
+
+freebsd_release_CFLAGS=-O2
+freebsd_release_CXXFLAGS=$(freebsd_release_CFLAGS)
+
+freebsd_debug_CFLAGS=-g -O0
+freebsd_debug_CXXFLAGS=$(freebsd_debug_CFLAGS)
+
+freebsd_native_toolchain=freebsd_base
+
diff --git a/contrib/depends/packages/boost.mk b/contrib/depends/packages/boost.mk
index 3231df925..43216f47a 100644
--- a/contrib/depends/packages/boost.mk
+++ b/contrib/depends/packages/boost.mk
@@ -24,6 +24,7 @@ $(package)_archiver_darwin=$($(package)_libtool)
$(package)_config_libraries=chrono,filesystem,program_options,system,thread,test,date_time,regex,serialization,locale
$(package)_cxxflags=-std=c++11
$(package)_cxxflags_linux=-fPIC
+$(package)_cxxflags_freebsd=-fPIC
endef
define $(package)_preprocess_cmds
diff --git a/contrib/depends/packages/freebsd_base.mk b/contrib/depends/packages/freebsd_base.mk
new file mode 100644
index 000000000..c6a209dcd
--- /dev/null
+++ b/contrib/depends/packages/freebsd_base.mk
@@ -0,0 +1,23 @@
+package=freebsd_base
+$(package)_version=11.3
+$(package)_download_path=https://download.freebsd.org/ftp/releases/amd64/$($(package)_version)-RELEASE/
+$(package)_download_file=base.txz
+$(package)_file_name=freebsd-base-$($(package)_version).txz
+$(package)_sha256_hash=4599023ac136325b86f2fddeec64c1624daa83657e40b00b2ef944c81463a4ff
+
+define $(package)_extract_cmds
+ echo $($(package)_sha256_hash) $($(1)_source_dir)/$($(package)_file_name) | sha256sum -c &&\
+ tar xf $($(1)_source_dir)/$($(package)_file_name) ./lib/ ./usr/lib/ ./usr/include/
+endef
+
+define $(package)_build_cmds
+ mkdir bin &&\
+ echo "exec /usr/bin/clang-8 -target x86_64-unknown-freebsd$($(package)_version) --sysroot=$(host_prefix)/native $$$$""@" > bin/clang-8 &&\
+ echo "exec /usr/bin/clang++-8 -target x86_64-unknown-freebsd$($(package)_version) --sysroot=$(host_prefix)/native $$$$""@" > bin/clang++-8 &&\
+ chmod 755 bin/*
+endef
+
+define $(package)_stage_cmds
+ mkdir $($(package)_staging_dir)/$(host_prefix)/native &&\
+ mv bin lib usr $($(package)_staging_dir)/$(host_prefix)/native
+endef
diff --git a/contrib/depends/packages/libiconv.mk b/contrib/depends/packages/libiconv.mk
index d4995c1b7..698aa8bd3 100644
--- a/contrib/depends/packages/libiconv.mk
+++ b/contrib/depends/packages/libiconv.mk
@@ -10,6 +10,7 @@ define $(package)_set_vars
$(package)_config_opts=--enable-static
$(package)_config_opts=--disable-shared
$(package)_config_opts_linux=--with-pic
+ $(package)_config_opts_freebsd=--with-pic
endef
define $(package)_preprocess_cmds
diff --git a/contrib/depends/packages/openssl.mk b/contrib/depends/packages/openssl.mk
index f3b781f28..e59a6de1c 100644
--- a/contrib/depends/packages/openssl.mk
+++ b/contrib/depends/packages/openssl.mk
@@ -36,6 +36,7 @@ $(package)_config_opts+=no-zlib
$(package)_config_opts+=no-zlib-dynamic
$(package)_config_opts+=$($(package)_cflags) $($(package)_cppflags)
$(package)_config_opts_linux=-fPIC -Wa,--noexecstack
+$(package)_config_opts_freebsd=-fPIC -Wa,--noexecstack
$(package)_config_opts_x86_64_linux=linux-x86_64
$(package)_config_opts_i686_linux=linux-generic32
$(package)_config_opts_arm_linux=linux-generic32
@@ -49,6 +50,7 @@ $(package)_config_opts_powerpc_linux=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_x86_64_freebsd=BSD-x86_64
endef
define $(package)_preprocess_cmds
diff --git a/contrib/depends/packages/packages.mk b/contrib/depends/packages/packages.mk
index 9302d5b4d..76c30066c 100644
--- a/contrib/depends/packages/packages.mk
+++ b/contrib/depends/packages/packages.mk
@@ -1,18 +1,22 @@
-ifeq ($(host_os),android)
packages:=boost openssl zeromq libiconv
-else
-packages:=boost openssl zeromq expat ldns libiconv hidapi protobuf libusb
-endif
-native_packages := native_ccache native_protobuf
+native_packages := native_ccache
+
+hardware_packages := hidapi protobuf libusb
+hardware_native_packages := native_protobuf
android_native_packages = android_ndk
android_packages = ncurses readline sodium
-darwin_native_packages = native_biplist native_ds_store native_mac_alias
-darwin_packages = sodium-darwin ncurses readline
+darwin_native_packages = native_biplist native_ds_store native_mac_alias $(hardware_native_packages)
+darwin_packages = sodium-darwin ncurses readline $(hardware_packages)
-linux_packages = eudev ncurses readline sodium
+# not really native...
+freebsd_native_packages = freebsd_base
+freebsd_packages = ncurses readline sodium
+
+linux_packages = eudev ncurses readline sodium $(hardware_packages)
+linux_native_packages = $(hardware_native_packages)
qt_packages = qt
ifeq ($(build_tests),ON)
@@ -23,10 +27,8 @@ ifneq ($(host_arch),riscv64)
linux_packages += unwind
endif
-ifeq ($(host_os),mingw32)
-packages += icu4c
-packages += sodium
-endif
+mingw32_packages = icu4c sodium $(hardware_packages)
+mingw32_native_packages = $(hardware_native_packages)
ifneq ($(build_os),darwin)
darwin_native_packages += native_cctools native_cdrkit native_libdmg-hfsplus
diff --git a/contrib/depends/packages/zeromq.mk b/contrib/depends/packages/zeromq.mk
index 46caf14cb..d55f38c33 100644
--- a/contrib/depends/packages/zeromq.mk
+++ b/contrib/depends/packages/zeromq.mk
@@ -8,6 +8,7 @@ $(package)_patches=9114d3957725acd34aa8b8d011585812f3369411.patch 9e6745c12e0b10
define $(package)_set_vars
$(package)_config_opts=--without-documentation --disable-shared --without-libsodium --disable-curve
$(package)_config_opts_linux=--with-pic
+ $(package)_config_opts_freebsd=--with-pic
$(package)_cxxflags=-std=c++11
endef
diff --git a/contrib/depends/toolchain.cmake.in b/contrib/depends/toolchain.cmake.in
index 13018ea26..c56f3eb2e 100644
--- a/contrib/depends/toolchain.cmake.in
+++ b/contrib/depends/toolchain.cmake.in
@@ -1,4 +1,4 @@
-# Set the system name to one of Android, Darwin, Linux, or Windows
+# Set the system name to one of Android, Darwin, FreeBSD, Linux, or Windows
SET(CMAKE_SYSTEM_NAME @depends@)
SET(CMAKE_BUILD_TYPE @release_type@)
@@ -23,13 +23,14 @@ SET(Readline_INCLUDE_DIR @prefix@/include)
SET(Readline_LIBRARY @prefix@/lib/libreadline.a)
SET(Terminfo_LIBRARY @prefix@/lib/libtinfo.a)
-if(NOT CMAKE_SYSTEM_NAME STREQUAL "Android")
SET(LRELEASE_PATH @prefix@/native/bin CACHE FILEPATH "path to lrelease" FORCE)
+if(NOT CMAKE_SYSTEM_NAME STREQUAL "Android")
SET(LIBUNWIND_INCLUDE_DIR @prefix@/include)
SET(LIBUNWIND_LIBRARIES @prefix@/lib/libunwind.a)
SET(LIBUNWIND_LIBRARY_DIRS @prefix@/lib)
+if(NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
SET(LIBUSB-1.0_LIBRARY @prefix@/lib/libusb-1.0.a)
SET(LIBUDEV_LIBRARY @prefix@/lib/libudev.a)
@@ -40,6 +41,8 @@ SET(Protobuf_INCLUDE_DIRS @prefix@/include CACHE PATH "Protobuf include dir")
SET(Protobuf_LIBRARY @prefix@/lib/libprotobuf.a CACHE FILEPATH "Protobuf library")
endif()
+endif()
+
SET(ZMQ_INCLUDE_PATH @prefix@/include)
SET(ZMQ_LIB @prefix@/lib/libzmq.a)