summary refs log tree commit diff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyich@gmail.com>2022-05-28 20:57:22 +0100
committerSergei Trofimovich <slyich@gmail.com>2022-05-28 21:02:07 +0100
commit77a11bce4f27356c27fdb183140e49932b24067a (patch)
treeeea872716267a4366a3f0080aa2a19f8dc860af1
parent0831857a140328c5c40be233eaa73130620a44b2 (diff)
downloadnixpkgs-77a11bce4f27356c27fdb183140e49932b24067a.tar
nixpkgs-77a11bce4f27356c27fdb183140e49932b24067a.tar.gz
nixpkgs-77a11bce4f27356c27fdb183140e49932b24067a.tar.bz2
nixpkgs-77a11bce4f27356c27fdb183140e49932b24067a.tar.lz
nixpkgs-77a11bce4f27356c27fdb183140e49932b24067a.tar.xz
nixpkgs-77a11bce4f27356c27fdb183140e49932b24067a.tar.zst
nixpkgs-77a11bce4f27356c27fdb183140e49932b24067a.zip
pharo-spur64, pharo-cog32: add -fcommon workaround
Workaround build failure on -fno-common toolchains like upstream
gcc-10. Otherwise build fails as:

    ld: vm/vm.a(cogit.o):/build/source/spur64src/vm/cointerp.h:358: multiple definition of `checkAllocFiller';
      vm/vm.a(gcc3x-cointerp.o):/build/source/spur64src/vm/cointerp.h:358: first defined here
-rw-r--r--pkgs/development/pharo/vm/build-vm-legacy.nix6
-rw-r--r--pkgs/development/pharo/vm/build-vm.nix7
2 files changed, 13 insertions, 0 deletions
diff --git a/pkgs/development/pharo/vm/build-vm-legacy.nix b/pkgs/development/pharo/vm/build-vm-legacy.nix
index 88ef9f9efde..6e00aa5f789 100644
--- a/pkgs/development/pharo/vm/build-vm-legacy.nix
+++ b/pkgs/development/pharo/vm/build-vm-legacy.nix
@@ -40,6 +40,12 @@ stdenv.mkDerivation rec {
     cd build/
   '';
 
+  # -fcommon is a workaround build failure on -fno-common toolchains like upstream
+  # gcc-10. Otherwise build fails as:
+  #   ld: CMakeFiles/pharo.dir/build/pharo-vm-2016.02.18/src/vm/gcc3x-cointerp.c.o:(.bss+0x88): multiple definition of
+  #     `sendTrace'; CMakeFiles/pharo.dir/build/pharo-vm-2016.02.18/src/vm/cogit.c.o:(.bss+0x84): first defined here
+  NIX_CFLAGS_COMPILE = "-fcommon";
+
   installPhase = ''
     mkdir -p "$prefix/lib/$name"
 
diff --git a/pkgs/development/pharo/vm/build-vm.nix b/pkgs/development/pharo/vm/build-vm.nix
index 498e5c41472..1331df3b7d6 100644
--- a/pkgs/development/pharo/vm/build-vm.nix
+++ b/pkgs/development/pharo/vm/build-vm.nix
@@ -85,6 +85,13 @@ stdenv.mkDerivation rec {
   configureFlags = [ "--without-npsqueak"
                      "--with-vmversion=5.0"
                      "--with-src=${vm}" ];
+
+  # -fcommon is a workaround build failure on -fno-common toolchains like upstream
+  # gcc-10. Otherwise build fails as:
+  #   ld: vm/vm.a(cogit.o):/build/source/spur64src/vm/cointerp.h:358: multiple definition of `checkAllocFiller';
+  #     vm/vm.a(gcc3x-cointerp.o):/build/source/spur64src/vm/cointerp.h:358: first defined here
+  NIX_CFLAGS_COMPILE = "-fcommon";
+
   CFLAGS = "-DPharoVM -DIMMUTABILITY=1 -msse2 -D_GNU_SOURCE -DCOGMTVM=0 -g -O2 -DNDEBUG -DDEBUGVM=0";
   LDFLAGS = "-Wl,-z,now";