Skip to content

Commit

Permalink
New Recipe: CPUInfo v0.0.20200122 (#4555)
Browse files Browse the repository at this point in the history
* New Recipe: CPUInfo v0.0.20200122

* Omitted cpuid-dump product to enable aarch64-linux-gnu

* Added lowercase windows include patch

* Excluded unsupported aarch64-macos and freebsd

* Excluded executable products to enable PowerPC64LE

* Simplified filtering of platforms

Co-authored-by: Mosè Giordano <[email protected]>

* Added manual install of omitted shared library on Windows

Co-authored-by: Mosè Giordano <[email protected]>

* Excluded i686-windows

Co-authored-by: Mosè Giordano <[email protected]>
  • Loading branch information
stemann and giordano authored Mar 6, 2022
1 parent 1808332 commit 7ec0989
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
57 changes: 57 additions & 0 deletions C/CPUInfo/build_tarballs.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Note that this script can accept some limited command-line arguments, run
# `julia build_tarballs.jl --help` to see a usage message.
using BinaryBuilder, Pkg

name = "CPUInfo"
version = v"0.0.20200122"

# Collection of sources required to complete build
sources = [
GitSource("https://github.com/pytorch/cpuinfo.git", "0e6bde92b343c5fbcfe34ecd41abf9515d54b4a7"),
DirectorySource("./bundled"),
]

# Bash recipe for building across all platforms
script = raw"""
cd $WORKSPACE/srcdir
cd cpuinfo
if [[ $target == *-w64-mingw32 ]]; then
atomic_patch -p1 ../patches/lowercase-windows-include.patch
fi
mkdir build
cd build
cmake \
-DCMAKE_INSTALL_PREFIX=$prefix \
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TARGET_TOOLCHAIN} \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_LIBDIR=$libdir \
-DCPUINFO_BUILD_UNIT_TESTS=OFF \
-DCPUINFO_BUILD_MOCK_TESTS=OFF \
-DCPUINFO_BUILD_BENCHMARKS=OFF \
-DCPUINFO_LIBRARY_TYPE=shared \
..
cmake --build . -- -j $nproc
make install
if [[ $target == *-w64-mingw32 ]]; then
install -Dvm 755 libcpuinfo.dll "${libdir}/libcpuinfo.dll"
fi
"""

# These are the platforms we will build for by default, unless further
# platforms are passed in on the command line
platforms = supported_platforms()
filter!(p -> !(Sys.isapple(p) && arch(p) == "aarch64"), platforms) # aarch64-macos unsupported
filter!(p -> !Sys.isfreebsd(p), platforms) # FreeBSD unsupported
filter!(p -> !(Sys.iswindows(p) && arch(p) == "i686"), platforms) # Failing to link

# The products that we will ensure are always built
products = [
LibraryProduct("libcpuinfo", :libcpuinfo),
]

# Dependencies that must be installed before this package can be built
dependencies = Dependency[
]

# Build the tarballs, and possibly a `build.jl` as well.
build_tarballs(ARGS, name, version, sources, script, platforms, products, dependencies; julia_compat="1.6")
13 changes: 13 additions & 0 deletions C/CPUInfo/bundled/patches/lowercase-windows-include.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/src/x86/windows/init.c b/src/x86/windows/init.c
index 7a2090e..115f366 100644
--- a/src/x86/windows/init.c
+++ b/src/x86/windows/init.c
@@ -8,7 +8,7 @@
#include <cpuinfo/internal-api.h>
#include <cpuinfo/log.h>

-#include <Windows.h>
+#include <windows.h>

static inline uint32_t bit_mask(uint32_t bits) {
return (UINT32_C(1) << bits) - UINT32_C(1);

0 comments on commit 7ec0989

Please sign in to comment.