diff --git a/CMakeLists.txt b/CMakeLists.txt index 97d6aee81..fe68bfdcd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,9 @@ include(CheckFunctionExists) if (POLICY CMP0148) cmake_policy(SET CMP0148 OLD) # https://cmake.org/cmake/help/latest/policy/CMP0148.html endif() +if (POLICY CMP0074) + cmake_policy(SET CMP0074 NEW) # https://cmake.org/cmake/help/latest/policy/CMP0074.html +endif() include(FindPythonInterp) if (IOS) diff --git a/contrib/depends/funcs.mk b/contrib/depends/funcs.mk index e08669c98..00ee9f195 100644 --- a/contrib/depends/funcs.mk +++ b/contrib/depends/funcs.mk @@ -140,6 +140,7 @@ $(1)_build_env+=$($(1)_build_env_$(host_arch)_$(host_os)) $($(1)_build_env_$(hos $(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+=CMAKE_MODULE_PATH=$($($(1)_type)_prefix)/lib/cmake $(1)_config_env+=PATH="$(build_prefix)/bin:$(PATH)" $(1)_build_env+=PATH="$(build_prefix)/bin:$(PATH)" $(1)_stage_env+=PATH="$(build_prefix)/bin:$(PATH)" @@ -172,6 +173,22 @@ endif ifneq ($($(1)_ldflags),) $(1)_autoconf += LDFLAGS="$$($(1)_ldflags)" endif + +$(1)_cmake=env CC="$$($(1)_cc)" \ + CFLAGS="$$($(1)_cppflags) $$($(1)_cflags)" \ + CXX="$$($(1)_cxx)" \ + CXXFLAGS="$$($(1)_cppflags) $$($(1)_cxxflags)" \ + LDFLAGS="$$($(1)_ldflags)" \ + cmake -DCMAKE_INSTALL_PREFIX:PATH="$$($($(1)_type)_prefix)" $$($(1)_config_opts) +ifeq ($($(1)_type),build) +$(1)_cmake += -DCMAKE_INSTALL_RPATH:PATH="$$($($(1)_type)_prefix)/lib" +else +ifneq ($(host),$(build)) +$(1)_cmake += -DCMAKE_SYSTEM_NAME=$($(host_os)_cmake_system) +$(1)_cmake += -DCMAKE_C_COMPILER_TARGET=$(host) +$(1)_cmake += -DCMAKE_CXX_COMPILER_TARGET=$(host) +endif +endif endef define int_add_cmds diff --git a/contrib/depends/packages/abseil.mk b/contrib/depends/packages/abseil.mk new file mode 100644 index 000000000..f0f2f3ff9 --- /dev/null +++ b/contrib/depends/packages/abseil.mk @@ -0,0 +1,27 @@ +package=abseil +$(package)_version=$(native_$(package)_version) +$(package)_download_path=$(native_$(package)_download_path) +$(package)_download_file=$(native_$(package)_download_file) +$(package)_file_name=$(native_$(package)_file_name) +$(package)_sha256_hash=$(native_$(package)_sha256_hash) +$(package)_patches=no_librt.patch + +define $(package)_set_vars + $(package)_cxxflags+=-std=c++17 +endef + +define $(package)_preprocess_cmds + patch -p1 -i $($(package)_patch_dir)/no_librt.patch +endef + +define $(package)_config_cmds + $($(package)_cmake) +endef + +define $(package)_build_cmds + $(MAKE) +endef + +define $(package)_stage_cmds + $(MAKE) DESTDIR=$($(package)_staging_dir) install +endef diff --git a/contrib/depends/packages/native_abseil.mk b/contrib/depends/packages/native_abseil.mk new file mode 100644 index 000000000..d914fe12a --- /dev/null +++ b/contrib/depends/packages/native_abseil.mk @@ -0,0 +1,18 @@ +package=native_abseil +$(package)_version=20240722.0 +$(package)_download_path=https://github.com/abseil/abseil-cpp/archive/refs/tags/ +$(package)_download_file=$($(package)_version).tar.gz +$(package)_file_name=abseil-$($(package)_version).tar.gz +$(package)_sha256_hash=f50e5ac311a81382da7fa75b97310e4b9006474f9560ac46f54a9967f07d4ae3 + +define $(package)_config_cmds + $($(package)_cmake) +endef + +define $(package)_build_cmds + $(MAKE) +endef + +define $(package)_stage_cmds + $(MAKE) DESTDIR=$($(package)_staging_dir) install +endef diff --git a/contrib/depends/packages/native_protobuf.mk b/contrib/depends/packages/native_protobuf.mk index 8d7649b67..31ed085fc 100644 --- a/contrib/depends/packages/native_protobuf.mk +++ b/contrib/depends/packages/native_protobuf.mk @@ -1,28 +1,29 @@ package=native_protobuf -$(package)_version=21.12 -$(package)_version_protobuf_cpp=3.21.12 -$(package)_download_path=https://github.com/protocolbuffers/protobuf/releases/download/v$($(package)_version)/ -$(package)_file_name=protobuf-cpp-$($(package)_version_protobuf_cpp).tar.gz -$(package)_sha256_hash=4eab9b524aa5913c6fffb20b2a8abf5ef7f95a80bc0701f3a6dbb4c607f73460 -$(package)_cxxflags=-std=c++11 +$(package)_version=28.1 +$(package)_download_path=https://github.com/protocolbuffers/protobuf/releases/download/v$($(package)_version) +$(package)_file_name=protobuf-$($(package)_version).tar.gz +$(package)_sha256_hash=3b8bf6e96499a744bd014c60b58f797715a758093abf859f1d902194b8e1f8c9 +$(package)_dependencies=native_abseil define $(package)_set_vars - $(package)_config_opts=--disable-shared --prefix=$(build_prefix) - $(package)_config_opts_linux=--with-pic + $(package)_cxxflags+=-std=c++17 + $(package)_config_opts=-Dprotobuf_BUILD_TESTS=OFF + $(package)_config_opts+=-Dprotobuf_ABSL_PROVIDER=package + $(package)_config_opts+=-Dprotobuf_BUILD_SHARED_LIBS=OFF endef define $(package)_config_cmds - $($(package)_autoconf) + $($(package)_cmake) endef define $(package)_build_cmds - $(MAKE) -C src protoc + $(MAKE) endef define $(package)_stage_cmds - $(MAKE) DESTDIR=$($(package)_staging_dir) -C src install-binPROGRAMS install-nobase_dist_protoDATA + $(MAKE) DESTDIR=$($(package)_staging_dir) install endef define $(package)_postprocess_cmds - rm -rf lib/ + rm -rf lib64 endef diff --git a/contrib/depends/packages/packages.mk b/contrib/depends/packages/packages.mk index 14561964f..4320f5e8e 100644 --- a/contrib/depends/packages/packages.mk +++ b/contrib/depends/packages/packages.mk @@ -1,7 +1,7 @@ packages:=boost openssl zeromq expat unbound sodium -hardware_packages := hidapi protobuf libusb -hardware_native_packages := native_protobuf +hardware_packages := hidapi abseil protobuf libusb +hardware_native_packages := native_abseil native_protobuf android_native_packages = android_ndk $(hardware_native_packages) android_packages = ncurses readline protobuf diff --git a/contrib/depends/packages/protobuf.mk b/contrib/depends/packages/protobuf.mk index 9702506d0..ce3f1f9dd 100644 --- a/contrib/depends/packages/protobuf.mk +++ b/contrib/depends/packages/protobuf.mk @@ -1,27 +1,27 @@ package=protobuf $(package)_version=$(native_$(package)_version) -$(package)_version_protobuf_cpp=$(native_$(package)_version_protobuf_cpp) $(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) -$(package)_cxxflags=-std=c++11 +$(package)_dependencies=abseil define $(package)_set_vars - $(package)_config_opts=--disable-shared --with-protoc=$(build_prefix)/bin/protoc - $(package)_config_opts_linux=--with-pic + $(package)_cxxflags+=-std=c++17 + $(package)_config_opts=-Dprotobuf_ABSL_PROVIDER=package + $(package)_config_opts+=-Dprotobuf_BUILD_TESTS=OFF + $(package)_config_opts+=-Dprotobuf_BUILD_SHARED_LIBS=OFF + $(package)_config_opts+=-Dprotobuf_BUILD_PROTOC_BINARIES=OFF + $(package)_config_opts+=-Dprotobuf_WITH_ZLIB=OFF endef define $(package)_config_cmds - $($(package)_autoconf) AR_FLAGS=$($(package)_arflags) + $($(package)_cmake) endef define $(package)_build_cmds - $(MAKE) -C src libprotobuf.la + $(MAKE) endef define $(package)_stage_cmds - $(MAKE) DESTDIR=$($(package)_staging_dir) -C src install-nobase_includeHEADERS &&\ - $(MAKE) DESTDIR=$($(package)_staging_dir) install-pkgconfigDATA &&\ - cp src/.libs/libprotobuf.a $($(package)_staging_prefix_dir)/lib/ + $(MAKE) DESTDIR=$($(package)_staging_dir) install endef diff --git a/contrib/depends/patches/abseil/no_librt.patch b/contrib/depends/patches/abseil/no_librt.patch new file mode 100644 index 000000000..8fdd1657f --- /dev/null +++ b/contrib/depends/patches/abseil/no_librt.patch @@ -0,0 +1,12 @@ +diff --git a/absl/base/CMakeLists.txt b/absl/base/CMakeLists.txt +index 97994fc6..06ab426c 100644 +--- a/absl/base/CMakeLists.txt ++++ b/absl/base/CMakeLists.txt +@@ -240,7 +240,6 @@ absl_cc_library( + ${ABSL_DEFAULT_COPTS} + LINKOPTS + ${ABSL_DEFAULT_LINKOPTS} +- $<$:-lrt> + $<$:-ladvapi32> + DEPS + absl::atomic_hook diff --git a/contrib/depends/toolchain.cmake.in b/contrib/depends/toolchain.cmake.in index 50eaaa593..dd1502803 100644 --- a/contrib/depends/toolchain.cmake.in +++ b/contrib/depends/toolchain.cmake.in @@ -29,13 +29,7 @@ SET(UNBOUND_LIBRARIES @prefix@/lib/libunbound.a) SET(LIBUSB-1.0_LIBRARY @prefix@/lib/libusb-1.0.a) SET(LIBUDEV_LIBRARY @prefix@/lib/libudev.a) - -SET(Protobuf_FOUND 1) -SET(Protobuf_PROTOC_EXECUTABLE @prefix@/native/bin/protoc CACHE FILEPATH "Path to the native protoc") -SET(Protobuf_INCLUDE_DIR @prefix@/include CACHE PATH "Protobuf include dir") -SET(Protobuf_INCLUDE_DIRS @prefix@/include CACHE PATH "Protobuf include dir") -SET(Protobuf_LIBRARY @prefix@/lib/libprotobuf.a CACHE FILEPATH "Protobuf library") - +SET(absl_ROOT @prefix@) if(NOT CMAKE_SYSTEM_NAME STREQUAL "Android") SET(LIBUNWIND_INCLUDE_DIR @prefix@/include) SET(LIBUNWIND_LIBRARIES @prefix@/lib/libunwind.a) @@ -61,6 +55,7 @@ SET(ARCHITECTURE @arch@) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # Find programs on host set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) # Find libs in target set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # Find includes in target +SET (CMAKE_FIND_USE_PACKAGE_ROOT_PATH ON) # specify the cross compiler to be used. Darwin uses clang provided by the SDK. if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")