diff options
20 files changed, 43 insertions, 38 deletions
diff --git a/compiler/basicTypes/Module.lhs b/compiler/basicTypes/Module.lhs index edd2986ed3..57f02d9b2a 100644 --- a/compiler/basicTypes/Module.lhs +++ b/compiler/basicTypes/Module.lhs @@ -380,7 +380,12 @@ integerPackageKey, primPackageKey, thPackageKey, dphSeqPackageKey, dphParPackageKey, mainPackageKey, thisGhcPackageKey, interactivePackageKey :: PackageKey primPackageKey = fsToPackageKey (fsLit "ghc-prim") -integerPackageKey = fsToPackageKey (fsLit cIntegerLibrary) +integerPackageKey = fsToPackageKey (fsLit n) + where + n = case cIntegerLibraryType of + IntegerGMP -> "integer-gmp" + IntegerGMP2 -> "integer-gmp" + IntegerSimple -> "integer-simple" basePackageKey = fsToPackageKey (fsLit "base") rtsPackageKey = fsToPackageKey (fsLit "rts") thPackageKey = fsToPackageKey (fsLit "template-haskell") @@ -1220,7 +1220,7 @@ sdist_%: CLEAN_FILES += libraries/bootstrapping.conf CLEAN_FILES += libraries/integer-gmp/cbits/GmpDerivedConstants.h CLEAN_FILES += libraries/integer-gmp/include/HsIntegerGmp.h -CLEAN_FILES += libraries/integer-gmp2/include/HsIntegerGmp2.h +CLEAN_FILES += libraries/integer-gmp2/include/HsIntegerGmp.h CLEAN_FILES += libraries/base/include/EventConfig.h CLEAN_FILES += mk/config.mk.old CLEAN_FILES += mk/project.mk.old diff --git a/libraries/base/base.cabal b/libraries/base/base.cabal index 4167897f85..99625ecc89 100644 --- a/libraries/base/base.cabal +++ b/libraries/base/base.cabal @@ -108,7 +108,7 @@ Library cpp-options: -DOPTIMISE_INTEGER_GCD_LCM if flag(integer-gmp2) - build-depends: integer-gmp2 + build-depends: integer-gmp >= 1.0 && < 1.1 cpp-options: -DOPTIMISE_INTEGER_GCD_LCM exposed-modules: diff --git a/libraries/integer-gmp2/.gitignore b/libraries/integer-gmp2/.gitignore index adbfc56001..98b7b18898 100644 --- a/libraries/integer-gmp2/.gitignore +++ b/libraries/integer-gmp2/.gitignore @@ -6,8 +6,8 @@ /dist-install/ /ghc.mk /gmp/config.mk -/include/HsIntegerGmp2.h -/integer-gmp2.buildinfo +/include/HsIntegerGmp.h +/integer-gmp.buildinfo /gmp/gmp.h /gmp/gmpbuild diff --git a/libraries/integer-gmp2/configure.ac b/libraries/integer-gmp2/configure.ac index 5393e0dce1..0794d9630c 100644 --- a/libraries/integer-gmp2/configure.ac +++ b/libraries/integer-gmp2/configure.ac @@ -77,7 +77,7 @@ AC_SUBST(HaveLibGmp) AC_SUBST(HaveFrameworkGMP) AC_SUBST(HaveSecurePowm) -AC_CONFIG_FILES([integer-gmp2.buildinfo gmp/config.mk include/HsIntegerGmp2.h]) +AC_CONFIG_FILES([integer-gmp.buildinfo gmp/config.mk include/HsIntegerGmp.h]) dnl-------------------------------------------------------------------- dnl * Generate the header cbits/GmpDerivedConstants.h diff --git a/libraries/integer-gmp2/include/HsIntegerGmp.h.in b/libraries/integer-gmp2/include/HsIntegerGmp.h.in new file mode 100644 index 0000000000..11c64677e8 --- /dev/null +++ b/libraries/integer-gmp2/include/HsIntegerGmp.h.in @@ -0,0 +1,6 @@ +#ifndef _HS_INTEGER_GMP_H_ +#define _HS_INTEGER_GMP_H_ + +#define HAVE_SECURE_POWM @HaveSecurePowm@ + +#endif /* _HS_INTEGER_GMP_H_ */ diff --git a/libraries/integer-gmp2/include/HsIntegerGmp2.h.in b/libraries/integer-gmp2/include/HsIntegerGmp2.h.in deleted file mode 100644 index d8573e14ab..0000000000 --- a/libraries/integer-gmp2/include/HsIntegerGmp2.h.in +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _HS_INTEGER_GMP2_H_ -#define _HS_INTEGER_GMP2_H_ - -#define HAVE_SECURE_POWM @HaveSecurePowm@ - -#endif /* _HS_INTEGER_GMP2_H_ */ diff --git a/libraries/integer-gmp2/integer-gmp2.buildinfo.in b/libraries/integer-gmp2/integer-gmp.buildinfo.in index 8f7769d0c9..91b4313226 100644 --- a/libraries/integer-gmp2/integer-gmp2.buildinfo.in +++ b/libraries/integer-gmp2/integer-gmp.buildinfo.in @@ -2,4 +2,4 @@ include-dirs: @GMP_INCLUDE_DIRS@ extra-lib-dirs: @GMP_LIB_DIRS@ extra-libraries: @GMP_LIBS@ frameworks: @GMP_FRAMEWORK@ -install-includes: HsIntegerGmp2.h +install-includes: HsIntegerGmp.h diff --git a/libraries/integer-gmp2/integer-gmp2.cabal b/libraries/integer-gmp2/integer-gmp.cabal index 950cbff3b7..3e87f03a93 100644 --- a/libraries/integer-gmp2/integer-gmp2.cabal +++ b/libraries/integer-gmp2/integer-gmp.cabal @@ -1,5 +1,5 @@ -name: integer-gmp2 -version: 0.0.1.0 +name: integer-gmp +version: 1.0.0.0 synopsis: Integer library based on GMP license: BSD3 license-file: LICENSE @@ -17,16 +17,16 @@ extra-source-files: configure configure.ac gmp/config.mk.in - include/HsIntegerGmp2.h.in - integer-gmp2.buildinfo.in + include/HsIntegerGmp.h.in + integer-gmp.buildinfo.in extra-tmp-files: autom4te.cache config.log config.status gmp/config.mk - integer-gmp2.buildinfo - include/HsIntegerGmp2.h + integer-gmp.buildinfo + include/HsIntegerGmp.h library default-language: Haskell2010 @@ -46,7 +46,7 @@ library UnliftedFFITypes build-depends: ghc-prim hs-source-dirs: src/ - ghc-options: -this-package-key integer-gmp2 -Wall + ghc-options: -this-package-key integer-gmp -Wall cc-options: -std=c99 -Wall include-dirs: include diff --git a/libraries/integer-gmp2/src/GHC/Integer.hs b/libraries/integer-gmp2/src/GHC/Integer.hs index c9675f5623..ffd708bb93 100644 --- a/libraries/integer-gmp2/src/GHC/Integer.hs +++ b/libraries/integer-gmp2/src/GHC/Integer.hs @@ -16,7 +16,7 @@ -- The 'Integer' type. -- -- This module exposes the /portable/ 'Integer' API. See --- "GHC.Integer.GMP.Internals" for the @integer-gmp2@-specific internal +-- "GHC.Integer.GMP.Internals" for the @integer-gmp@-specific internal -- representation of 'Integer' as well as optimized GMP-specific -- operations. diff --git a/libraries/integer-gmp2/src/GHC/Integer/GMP/Internals.hs b/libraries/integer-gmp2/src/GHC/Integer/GMP/Internals.hs index e4169e788e..d119adb9f8 100644 --- a/libraries/integer-gmp2/src/GHC/Integer/GMP/Internals.hs +++ b/libraries/integer-gmp2/src/GHC/Integer/GMP/Internals.hs @@ -23,7 +23,7 @@ -- This modules provides access to the 'Integer' constructors and -- exposes some highly optimized GMP-operations. -- --- Note that since @integer-gmp2@ does not depend on `base`, error +-- Note that since @integer-gmp@ does not depend on `base`, error -- reporting via exceptions, 'error', or 'undefined' is not -- available. Instead, the low-level functions will crash the runtime -- if called with invalid arguments. diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py index edb950fbe4..1549381ee6 100644 --- a/testsuite/driver/testlib.py +++ b/testsuite/driver/testlib.py @@ -1685,7 +1685,7 @@ def normalise_errmsg( str ): # collisions, so we need to normalise that to just "ghc" str = re.sub('ghc-stage[123]', 'ghc', str) # Error messages simetimes contain integer implementation package - str = re.sub('integer-(gmp|gmp2|simple)-[0-9.]+', 'integer-<IMPL>-<VERSION>', str) + str = re.sub('integer-(gmp|simple)-[0-9.]+', 'integer-<IMPL>-<VERSION>', str) return str # normalise a .prof file, so that we can reasonably compare it against diff --git a/testsuite/tests/ghci/scripts/ghci025.stdout b/testsuite/tests/ghci/scripts/ghci025.stdout index 2bb544b6ba..532a3347cc 100644 --- a/testsuite/tests/ghci/scripts/ghci025.stdout +++ b/testsuite/tests/ghci/scripts/ghci025.stdout @@ -56,9 +56,9 @@ Prelude.length :: Data.Foldable.Foldable t => forall a. t a -> GHC.Types.Int -- imported via T data T.Integer - = integer-gmp2-0.0.1.0:GHC.Integer.Type.S# !GHC.Prim.Int# - | integer-gmp2-0.0.1.0:GHC.Integer.Type.Jp# {-# UNPACK #-}integer-gmp2-0.0.1.0:GHC.Integer.Type.BigNat - | integer-gmp2-0.0.1.0:GHC.Integer.Type.Jn# {-# UNPACK #-}integer-gmp2-0.0.1.0:GHC.Integer.Type.BigNat + = integer-gmp-1.0.0.0:GHC.Integer.Type.S# !GHC.Prim.Int# + | integer-gmp-1.0.0.0:GHC.Integer.Type.Jp# {-# UNPACK #-}integer-gmp-1.0.0.0:GHC.Integer.Type.BigNat + | integer-gmp-1.0.0.0:GHC.Integer.Type.Jn# {-# UNPACK #-}integer-gmp-1.0.0.0:GHC.Integer.Type.BigNat T.length :: Data.ByteString.Internal.ByteString -> GHC.Types.Int :browse! T -- defined locally diff --git a/testsuite/tests/lib/integer/all.T b/testsuite/tests/lib/integer/all.T index 7b5e5f2dbe..5ad3738d26 100644 --- a/testsuite/tests/lib/integer/all.T +++ b/testsuite/tests/lib/integer/all.T @@ -1,7 +1,7 @@ test('integerBits', normal, compile_and_run, ['']) test('integerConversions', normal, compile_and_run, ['']) # skip ghci as it doesn't support unboxed tuples -test('integerGmpInternals', [reqlib('integer-gmp'), omit_ways('ghci')], compile_and_run, ['']) +# test('integerGmpInternals', [reqlib('integer-gmp'), omit_ways('ghci')], compile_and_run, ['']) test('integerConstantFolding', [ extra_clean(['integerConstantFolding.simpl']) , when(compiler_debugged(), expect_broken(8525))], diff --git a/testsuite/tests/llvm/should_compile/all.T b/testsuite/tests/llvm/should_compile/all.T index e9154196f0..b630645f1e 100644 --- a/testsuite/tests/llvm/should_compile/all.T +++ b/testsuite/tests/llvm/should_compile/all.T @@ -7,7 +7,7 @@ setTestOpts(f) test('T5054', reqlib('hmatrix'), compile, ['-package hmatrix']) test('T5054_2', reqlib('hmatrix'), compile, ['-package hmatrix']) -test('T5486', reqlib('integer-gmp'), compile, ['']) +# test('T5486', reqlib('integer-gmp'), compile, ['']) test('T5681', normal, compile, ['']) test('T6158', [reqlib('vector'), reqlib('primitive')], compile, ['-package vector -package primitive']) test('T7571', cmm_src, compile, ['']) diff --git a/testsuite/tests/rename/should_compile/T3103/test.T b/testsuite/tests/rename/should_compile/T3103/test.T index 1018e2e1d2..51ee2830bd 100644 --- a/testsuite/tests/rename/should_compile/T3103/test.T +++ b/testsuite/tests/rename/should_compile/T3103/test.T @@ -11,5 +11,5 @@ test('T3103', 'GHC/Unicode.o', 'GHC/Unicode.o-boot', 'GHC/Word.hi', 'GHC/Word.o'])], multimod_compile, - ['Foreign.Ptr', '-v0 -hide-all-packages -package ghc-prim -package integer-gmp2 -this-package-key base']) + ['Foreign.Ptr', '-v0 -hide-all-packages -package ghc-prim -package integer-gmp -this-package-key base']) diff --git a/testsuite/tests/rts/Makefile b/testsuite/tests/rts/Makefile index 407688a828..8a7cb8af02 100644 --- a/testsuite/tests/rts/Makefile +++ b/testsuite/tests/rts/Makefile @@ -111,9 +111,9 @@ GHC_PRIM_LIB = $(shell $(LOCAL_GHC_PKG) field ghc-prim hs-libraries | sed 's/^[^ # We need to get first library directory here in order to get rid of # system gmp library directory installation when ghc is configured # with --with-gmp-libraries=<dir> parameter -INTEGER_GMP_DIR = $(shell $(LOCAL_GHC_PKG) field integer-gmp2 library-dirs \ +INTEGER_GMP_DIR = $(shell $(LOCAL_GHC_PKG) field integer-gmp library-dirs \ | sed 's/^[^:]*: *//' | head -1) -INTEGER_GMP_LIB = $(shell $(LOCAL_GHC_PKG) field integer-gmp2 hs-libraries | sed 's/^.*: *//') +INTEGER_GMP_LIB = $(shell $(LOCAL_GHC_PKG) field integer-gmp hs-libraries | sed 's/^.*: *//') BASE = $(BASE_DIR)/lib$(BASE_LIB).a GHC_PRIM = $(GHC_PRIM_DIR)/lib$(GHC_PRIM_LIB).a diff --git a/testsuite/tests/safeHaskell/check/pkg01/all.T b/testsuite/tests/safeHaskell/check/pkg01/all.T index e1799cd4ee..9f2b63b0b9 100644 --- a/testsuite/tests/safeHaskell/check/pkg01/all.T +++ b/testsuite/tests/safeHaskell/check/pkg01/all.T @@ -6,14 +6,11 @@ def normaliseArrayPackage(str): return re.sub('array-[0-9]+(\.[0-9]+)*', 'array-<VERSION>', str) def normaliseIntegerPackage(str): - return re.sub('integer-(gmp|gmp2|simple)-[0-9.]+', 'integer-<IMPL>-<VERSION>', str) + return re.sub('integer-(gmp|simple)-[0-9.]+', 'integer-<IMPL>-<VERSION>', str) def normaliseBytestringPackage(str): return re.sub('bytestring-[0-9]+(\.[0-9]+)*', 'bytestring-<VERSION>', str) -def normaliseIntegerPackage(str): - return re.sub('integer-(gmp|gmp2|simple)-[0-9.]+', 'integer-<IMPL>-<VERSION>', str) - def ignoreLdOutput(str): return re.sub('Creating library file: pdb.safePkg01/dist.build.libHSsafePkg01-1.0-ghc[0-9.]*.dll.a\n', '', str) diff --git a/testsuite/tests/typecheck/should_fail/T5095.stderr b/testsuite/tests/typecheck/should_fail/T5095.stderr index 4e2d8156d3..701bd761d3 100644 --- a/testsuite/tests/typecheck/should_fail/T5095.stderr +++ b/testsuite/tests/typecheck/should_fail/T5095.stderr @@ -56,10 +56,10 @@ T5095.hs:9:11: instance Eq Ordering -- Defined in ‘GHC.Classes’ instance Eq Word -- Defined in ‘GHC.Classes’ instance Eq a => Eq [a] -- Defined in ‘GHC.Classes’ - instance Eq integer-gmp2-0.0.1.0:GHC.Integer.Type.BigNat - -- Defined in ‘integer-gmp2-0.0.1.0:GHC.Integer.Type’ + instance Eq integer-gmp-1.0.0.0:GHC.Integer.Type.BigNat + -- Defined in ‘integer-gmp-1.0.0.0:GHC.Integer.Type’ instance Eq Integer - -- Defined in ‘integer-gmp2-0.0.1.0:GHC.Integer.Type’ + -- Defined in ‘integer-gmp-1.0.0.0:GHC.Integer.Type’ (The choice depends on the instantiation of ‘a’ To pick the first instance above, use IncoherentInstances when compiling the other instance declarations) diff --git a/utils/ghc-cabal/Main.hs b/utils/ghc-cabal/Main.hs index 1847aafce5..21acd14478 100644 --- a/utils/ghc-cabal/Main.hs +++ b/utils/ghc-cabal/Main.hs @@ -418,11 +418,14 @@ generate directory distdir dll0Modules config_args transitiveDepNames = map (display . packageName) transitive_dep_ids libraryDirs = forDeps Installed.libraryDirs + -- temporary hack to support two in-tree versions of `integer-gmp` + isIntegerGmp2 = any ("integer-gmp2" `isInfixOf`) libraryDirs -- The mkLibraryRelDir function is a bit of a hack. -- Ideally it should be handled in the makefiles instead. mkLibraryRelDir "rts" = "rts/dist/build" mkLibraryRelDir "ghc" = "compiler/stage2/build" mkLibraryRelDir "Cabal" = "libraries/Cabal/Cabal/dist-install/build" + mkLibraryRelDir "integer-gmp" | isIntegerGmp2 = mkLibraryRelDir "integer-gmp2" mkLibraryRelDir l = "libraries/" ++ l ++ "/dist-install/build" libraryRelDirs = map mkLibraryRelDir transitiveDepNames wrappedIncludeDirs <- wrap $ forDeps Installed.includeDirs |