diff options
author | Mario Haustein <mario.haustein@hrz.tu-chemnitz.de> | 2023-10-08 14:07:29 +0200 |
---|---|---|
committer | Joonas Niilola <juippis@gentoo.org> | 2024-01-08 15:50:35 +0200 |
commit | 578daf3796eefa3981d9e97374cf0c529b4c7fcc (patch) | |
tree | c8107c634e2972242aa25b2ae490931eca8dfbb6 /dev-libs/keystone | |
parent | dev-libs/keystone: remove unused USE flag (diff) | |
download | gentoo-578daf3796eefa3981d9e97374cf0c529b4c7fcc.tar.gz gentoo-578daf3796eefa3981d9e97374cf0c529b4c7fcc.tar.bz2 gentoo-578daf3796eefa3981d9e97374cf0c529b4c7fcc.zip |
dev-libs/keystone: fix modern C issue
Closes: https://bugs.gentoo.org/879665
Signed-off-by: Mario Haustein <mario.haustein@hrz.tu-chemnitz.de>
Signed-off-by: Joonas Niilola <juippis@gentoo.org>
Diffstat (limited to 'dev-libs/keystone')
-rw-r--r-- | dev-libs/keystone/files/keystone-0.9.2-strict-prototypes.patch | 156 | ||||
-rw-r--r-- | dev-libs/keystone/keystone-0.9.2-r3.ebuild | 100 |
2 files changed, 256 insertions, 0 deletions
diff --git a/dev-libs/keystone/files/keystone-0.9.2-strict-prototypes.patch b/dev-libs/keystone/files/keystone-0.9.2-strict-prototypes.patch new file mode 100644 index 000000000000..6f41ba1841b4 --- /dev/null +++ b/dev-libs/keystone/files/keystone-0.9.2-strict-prototypes.patch @@ -0,0 +1,156 @@ +commit 3717a45601835ddce9f0c21c6552aef5b4a6383b +Upstream: https://github.com/keystone-engine/keystone/pull/563 +Author: Mario Haustein <mario.haustein@hrz.tu-chemnitz.de> +Date: Sun Oct 8 13:59:08 2023 +0200 + + use full prototypes for functions without parameters + +--- a/bindings/ruby/keystone_gem/ext/keystone.c ++++ b/bindings/ruby/keystone_gem/ext/keystone.c +@@ -27,7 +27,7 @@ VALUE KsClass = Qnil; + VALUE KsError = Qnil; + + +-void Init_keystone() { ++void Init_keystone(void) { + rb_require("keystone/keystone_const"); + KeystoneModule = rb_define_module("Keystone"); + KsError = rb_define_class_under(KeystoneModule, "KsError", rb_eStandardError); +--- a/llvm/cmake/config-ix.cmake ++++ b/llvm/cmake/config-ix.cmake +@@ -35,7 +35,7 @@ function(check_type_exists type files variable) + add_cxx_include(includes "${files}") + CHECK_CXX_SOURCE_COMPILES(" + ${includes} ${type} typeVar; +- int main() { ++ int main(void) { + return 0; + } + " ${variable}) +@@ -83,7 +83,7 @@ check_include_file(histedit.h HAVE_HISTEDIT_H) + check_cxx_source_compiles(" + #include <stddef.h> + #include <cxxabi.h> +-int main() { return 0; } ++int main(void) { return 0; } + " HAVE_CXXABI_H) + + # library checks +@@ -414,7 +414,7 @@ if( PURE_WINDOWS ) + #include <imagehlp.h> + extern \"C\" void foo(PENUMLOADED_MODULES_CALLBACK); + extern \"C\" void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID)); +- int main(){return 0;}" ++ int main(void){return 0;}" + HAVE_ELMCB_PCSTR) + if( HAVE_ELMCB_PCSTR ) + set(WIN32_ELMCB_PCSTR "PCSTR") +--- a/llvm/cmake/config.guess ++++ b/llvm/cmake/config.guess +@@ -539,7 +539,7 @@ EOF + sed 's/^ //' << EOF >$dummy.c + #include <sys/systemcfg.h> + +- main() ++ int main(void) + { + if (!__power_pc()) + exit(1); +@@ -622,7 +622,7 @@ EOF + #include <stdlib.h> + #include <unistd.h> + +- int main () ++ int main (void) + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); +@@ -684,8 +684,8 @@ EOF + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include <unistd.h> +- int +- main () ++ ++ int main (void) + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns +@@ -1338,7 +1338,7 @@ cat >$dummy.c <<EOF + # include <sys/types.h> + # include <sys/utsname.h> + #endif +-main () ++int main (void) + { + #if defined (sony) + #if defined (MIPSEB) +--- a/llvm/cmake/modules/CheckAtomic.cmake ++++ b/llvm/cmake/modules/CheckAtomic.cmake +@@ -11,7 +11,7 @@ function(check_working_cxx_atomics varname) + CHECK_CXX_SOURCE_COMPILES(" + #include <atomic> + std::atomic<int> x; +-int main() { ++int main(void) { + return x; + } + " ${varname}) +@@ -46,7 +46,7 @@ CHECK_CXX_SOURCE_COMPILES(" + #include <Intrin.h> /* Workaround for PR19898. */ + #include <windows.h> + #endif +-int main() { ++int main(void) { + #ifdef _MSC_VER + volatile LONG val = 1; + MemoryBarrier(); +--- a/llvm/cmake/modules/HandleLLVMOptions.cmake ++++ b/llvm/cmake/modules/HandleLLVMOptions.cmake +@@ -37,7 +37,7 @@ if(NOT LLVM_FORCE_USE_OLD_TOOLCHAIN) + check_cxx_source_compiles(" + #include <atomic> + std::atomic<float> x(0.0f); +-int main() { return (float)x; }" ++int main(void) { return (float)x; }" + LLVM_NO_OLD_LIBSTDCXX) + if(NOT LLVM_NO_OLD_LIBSTDCXX) + message(FATAL_ERROR "Host Clang must be able to find libstdc++4.7 or newer!") +@@ -457,7 +457,7 @@ elseif( LLVM_COMPILER_IS_GCC_COMPATIBLE ) + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11 -Werror=non-virtual-dtor") + CHECK_CXX_SOURCE_COMPILES("class base {public: virtual void anchor();protected: ~base();}; + class derived final : public base { public: ~derived();}; +- int main() { return 0; }" ++ int main(void) { return 0; }" + CXX_WONT_WARN_ON_FINAL_NONVIRTUALDTOR) + set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) + append_if(CXX_WONT_WARN_ON_FINAL_NONVIRTUALDTOR +@@ -471,7 +471,7 @@ elseif( LLVM_COMPILER_IS_GCC_COMPATIBLE ) + # line is also a // comment. + set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) + set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror -Wcomment") +- CHECK_C_SOURCE_COMPILES("// \\\\\\n//\\nint main() {return 0;}" ++ CHECK_C_SOURCE_COMPILES("// \\\\\\n//\\nint main(void) {return 0;}" + C_WCOMMENT_ALLOWS_LINE_WRAP) + set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) + if (NOT C_WCOMMENT_ALLOWS_LINE_WRAP) +@@ -508,7 +508,7 @@ elseif( LLVM_COMPILER_IS_GCC_COMPATIBLE ) + #include <cassert> + #define NDEBUG + #include <cassert> +- int main() { assert(this code is not compiled); }" ++ int main(void) { assert(this code is not compiled); }" + CXX_SUPPORTS_MODULES) + set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS}) + if (CXX_SUPPORTS_MODULES) +--- a/samples/sample.c ++++ b/samples/sample.c +@@ -61,7 +61,7 @@ static bool sym_resolver(const char *symbol, uint64_t *value) + } + + // test symbol resolver to handle missing symbols +-static int test_sym_resolver() ++static int test_sym_resolver(void) + { + ks_engine *ks; + ks_err err; diff --git a/dev-libs/keystone/keystone-0.9.2-r3.ebuild b/dev-libs/keystone/keystone-0.9.2-r3.ebuild new file mode 100644 index 000000000000..70454b0a3b8e --- /dev/null +++ b/dev-libs/keystone/keystone-0.9.2-r3.ebuild @@ -0,0 +1,100 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_EXT=1 +DISTUTILS_OPTIONAL=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} ) + +inherit cmake distutils-r1 + +DESCRIPTION="assembly/assembler framework + bindings" +HOMEPAGE="https://www.keystone-engine.org/" + +if [[ ${PV} == 9999* ]]; then + EGIT_REPO_URI="https://github.com/keystone-engine/keystone.git" + inherit git-r3 +else + SRC_URI="https://github.com/keystone-engine/keystone/archive/${PV/_rc/-rc}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~x86" +fi +S="${WORKDIR}"/${P/_rc/-rc} + +LICENSE="GPL-2" +SLOT="0" + +# Keep in sync with llvm/CMakeLists.txt +KEYSTONE_TARGETS="AArch64 ARM Hexagon Mips PowerPC Sparc SystemZ X86" + +IUSE="python" + +RDEPEND=" + python? ( ${PYTHON_DEPS} ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + python? + ( + ${DISTUTILS_DEPS} + ${PYTHON_DEPS} + ) +" + +RESTRICT=test # only regression tests + +REQUIRED_USE=" + python? ( ${PYTHON_REQUIRED_USE} ) +" + +PATCHES=( + "${FILESDIR}/${P}-strict-prototypes.patch" +) + +# Upstream doesn't flag patch releases (bug 858395) +QA_PKGCONFIG_VERSION="$(ver_cut 1-2)" + +wrap_python() { + if use python; then + pushd bindings/python >/dev/null || die + distutils-r1_${1} "$@" + popd >/dev/null || die + fi +} + +pkg_setup() { + python_setup +} + +src_prepare() { + sed -i '/NOT uppercase_CMAKE_BUILD_TYPE MATCHES/ s/DEBUG/GENTOO|DEBUG/' \ + llvm/CMakeLists.txt || die + cmake_src_prepare + wrap_python ${FUNCNAME} +} + +src_configure() { + local libdir="$(get_libdir)" + local mycmakeargs=( + -DCMAKE_CONFIGURATION_TYPES="Gentoo" + -DLLVM_LIBDIR_SUFFIX=${libdir#lib} + -DBUILD_SHARED_LIBS=ON + -DLLVM_TARGETS_TO_BUILD="${KEYSTONE_TARGETS// /;}" + -DLLVM_HOST_TRIPLE="${CHOST}" + -DPYTHON_EXECUTABLE="${PYTHON}" + ) + + cmake_src_configure + wrap_python ${FUNCNAME} +} + +src_compile() { + cmake_src_compile + wrap_python ${FUNCNAME} +} + +src_install() { + cmake_src_install + wrap_python ${FUNCNAME} +} |