diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/libpfm')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libpfm/default.nix | 52 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libpfm/fix-windows.patch | 18 |
2 files changed, 70 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/libpfm/default.nix b/nixpkgs/pkgs/development/libraries/libpfm/default.nix new file mode 100644 index 000000000000..0598fd6451ef --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libpfm/default.nix @@ -0,0 +1,52 @@ +{ lib +, stdenv +, fetchurl +, enableShared ? !stdenv.hostPlatform.isStatic +, windows +}: + +stdenv.mkDerivation (finalAttrs: { + version = "4.13.0"; + pname = "libpfm"; + + src = fetchurl { + url = "mirror://sourceforge/perfmon2/libpfm4/libpfm-${finalAttrs.version}.tar.gz"; + sha256 = "sha256-0YuXdkx1VSjBBR03bjNUXQ62DG6/hWgENoE/pbBMw9E="; + }; + + # Don't install libpfm.so on windows as it doesn't exist + # This target is created only if `ifeq ($(SYS),Linux)` passes + patches = [ ./fix-windows.patch ]; + + # Upstream uses "WINDOWS" instead of "Windows" which is incorrect + # See: https://github.com/NixOS/nixpkgs/pull/252982#discussion_r1314346216 + postPatch = '' + substituteInPlace config.mk examples/Makefile \ + --replace '($(SYS),WINDOWS)' '($(SYS),Windows)' + ''; + + makeFlags = [ + "PREFIX=${placeholder "out"}" + "LDCONFIG=true" + "ARCH=${stdenv.hostPlatform.uname.processor}" + "SYS=${stdenv.hostPlatform.uname.system}" + ]; + + env.NIX_CFLAGS_COMPILE = "-Wno-error"; + env.CONFIG_PFMLIB_SHARED = if enableShared then "y" else "n"; + + buildInputs = lib.optional stdenv.hostPlatform.isWindows windows.libgnurx; + + meta = with lib; { + description = "Helper library to program the performance monitoring events"; + longDescription = '' + This package provides a library, called libpfm4 which is used to + develop monitoring tools exploiting the performance monitoring + events such as those provided by the Performance Monitoring Unit + (PMU) of modern processors. + ''; + license = licenses.gpl2; + maintainers = with maintainers; [ pierron t4ccer ]; + platforms = platforms.linux ++ platforms.windows; + }; +}) diff --git a/nixpkgs/pkgs/development/libraries/libpfm/fix-windows.patch b/nixpkgs/pkgs/development/libraries/libpfm/fix-windows.patch new file mode 100644 index 000000000000..584b9ba6eb81 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libpfm/fix-windows.patch @@ -0,0 +1,18 @@ +diff --git a/lib/Makefile b/lib/Makefile +index 5ca71e3..cd0717f 100644 +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -428,11 +428,13 @@ install: + -mkdir -p $(DESTDIR)$(LIBDIR) + $(INSTALL) -m 644 $(ALIBPFM) $(DESTDIR)$(LIBDIR) + ifeq ($(CONFIG_PFMLIB_SHARED),y) ++ifeq ($(SYS),Linux) + $(INSTALL) $(SLIBPFM) $(DESTDIR)$(LIBDIR) + cd $(DESTDIR)$(LIBDIR); $(LN) $(SLIBPFM) $(VLIBPFM) + cd $(DESTDIR)$(LIBDIR); $(LN) $(SLIBPFM) libpfm.$(SOLIBEXT) + -$(LDCONFIG) + endif ++endif + + tags: + $(CTAGS) -o $(TOPDIR)/tags --tag-relative=yes $(SRCS) $(INCDEP) |