diff --git a/Cabal/Distribution/PackageDescription/Check.hs b/Cabal/Distribution/PackageDescription/Check.hs index 89e3190829d557ab5633b4839b1becff0b502553..3106c7954d7fd91ba5a1090f4d89f8c38a8afb99 100644 --- a/Cabal/Distribution/PackageDescription/Check.hs +++ b/Cabal/Distribution/PackageDescription/Check.hs @@ -1029,10 +1029,10 @@ checkPaths pkg = ++ [ (path, "data-dir") | path <- [dataDir pkg]] ++ [ (path, "license-file") | path <- licenseFiles pkg ] ++ concat - [ [ (path, "c-sources") | path <- cSources bi ] - ++ [ (path, "cxx-sources") | path <- cxxSources bi ] - ++ [ (path, "s-sources") | path <- sSources bi ] + [ [ (path, "asm-sources") | path <- asmSources bi ] ++ [ (path, "cmm-sources") | path <- cmmSources bi ] + ++ [ (path, "c-sources") | path <- cSources bi ] + ++ [ (path, "cxx-sources") | path <- cxxSources bi ] ++ [ (path, "js-sources") | path <- jsSources bi ] ++ [ (path, "install-includes") | path <- installIncludes bi ] ++ [ (path, "hs-source-dirs") | path <- hsSourceDirs bi ] diff --git a/Cabal/Distribution/PackageDescription/FieldGrammar.hs b/Cabal/Distribution/PackageDescription/FieldGrammar.hs index 845b9efde3c8d8ecd47b6193bee92435cd7a5d63..e76eb6e737fd31e06fe20f8d09b98328d8af8219 100644 --- a/Cabal/Distribution/PackageDescription/FieldGrammar.hs +++ b/Cabal/Distribution/PackageDescription/FieldGrammar.hs @@ -360,12 +360,16 @@ buildInfoFieldGrammar = BuildInfo <*> monoidalFieldAla "build-tool-depends" (alaList CommaFSep) L.buildToolDepends ^^^ availableSince [2,0] <*> monoidalFieldAla "cpp-options" (alaList' NoCommaFSep Token') L.cppOptions + <*> monoidalFieldAla "asm-options" (alaList' NoCommaFSep Token') L.asmOptions + <*> monoidalFieldAla "cmm-options" (alaList' NoCommaFSep Token') L.cmmOptions <*> monoidalFieldAla "cc-options" (alaList' NoCommaFSep Token') L.ccOptions <*> monoidalFieldAla "cxx-options" (alaList' NoCommaFSep Token') L.cxxOptions <*> monoidalFieldAla "ld-options" (alaList' NoCommaFSep Token') L.ldOptions <*> monoidalFieldAla "pkgconfig-depends" (alaList CommaFSep) L.pkgconfigDepends <*> monoidalFieldAla "frameworks" (alaList' FSep Token) L.frameworks <*> monoidalFieldAla "extra-framework-dirs" (alaList' FSep FilePathNT) L.extraFrameworkDirs + <*> monoidalFieldAla "asm-sources" (alaList' VCat FilePathNT) L.asmSources + <*> monoidalFieldAla "cmm-sources" (alaList' VCat FilePathNT) L.cmmSources <*> monoidalFieldAla "c-sources" (alaList' VCat FilePathNT) L.cSources <*> monoidalFieldAla "cxx-sources" (alaList' VCat FilePathNT) L.cxxSources <*> monoidalFieldAla "js-sources" (alaList' VCat FilePathNT) L.jsSources @@ -380,6 +384,7 @@ buildInfoFieldGrammar = BuildInfo ^^^ deprecatedSince [1,12] "Please use 'default-extensions' or 'other-extensions' fields." <*> monoidalFieldAla "extra-libraries" (alaList' VCat Token) L.extraLibs <*> monoidalFieldAla "extra-ghci-libraries" (alaList' VCat Token) L.extraGHCiLibs + <*> monoidalFieldAla "extra-bundled-libraries" (alaList' VCat Token) L.extraBundledLibs <*> monoidalFieldAla "extra-lib-dirs" (alaList' FSep FilePathNT) L.extraLibDirs <*> monoidalFieldAla "include-dirs" (alaList' FSep FilePathNT) L.includeDirs <*> monoidalFieldAla "includes" (alaList' FSep FilePathNT) L.includes diff --git a/Cabal/Distribution/PackageDescription/Parse.hs b/Cabal/Distribution/PackageDescription/Parse.hs index 00a08f1dc0acc93beb6ceaea9322a65f6bb79783..8e363a1b571636062fab6c5a04af2431b48a106d 100644 --- a/Cabal/Distribution/PackageDescription/Parse.hs +++ b/Cabal/Distribution/PackageDescription/Parse.hs @@ -430,14 +430,20 @@ binfoFieldDescrs = disp parse buildToolDepends (\xs binfo -> binfo{buildToolDepends=xs}) , commaListFieldWithSep vcat "build-depends" - disp parse + disp parse targetBuildDepends (\xs binfo -> binfo{targetBuildDepends=xs}) , commaListFieldWithSep vcat "mixins" - disp parse - mixins (\xs binfo -> binfo{mixins=xs}) + disp parse + mixins (\xs binfo -> binfo{mixins=xs}) , spaceListField "cpp-options" showToken parseTokenQ' - cppOptions (\val binfo -> binfo{cppOptions=val}) + cppOptions (\val binfo -> binfo{cppOptions=val}) + , spaceListField "asm-options" + showToken parseTokenQ' + asmOptions (\val binfo -> binfo{asmOptions=val}) + , spaceListField "cmm-options" + showToken parseTokenQ' + cmmOptions (\val binfo -> binfo{cmmOptions=val}) , spaceListField "cc-options" showToken parseTokenQ' ccOptions (\val binfo -> binfo{ccOptions=val}) @@ -456,9 +462,9 @@ binfoFieldDescrs = , listField "extra-framework-dirs" showToken parseFilePathQ extraFrameworkDirs (\val binfo -> binfo{extraFrameworkDirs=val}) - , listFieldWithSep vcat "s-sources" + , listFieldWithSep vcat "asm-sources" showFilePath parseFilePathQ - sSources (\paths binfo -> binfo{sSources=paths}) + asmSources (\paths binfo -> binfo{asmSources=paths}) , listFieldWithSep vcat "cmm-sources" showFilePath parseFilePathQ cmmSources (\paths binfo -> binfo{cmmSources=paths}) diff --git a/Cabal/Distribution/ParseUtils.hs b/Cabal/Distribution/ParseUtils.hs index 668835eab46dde00e00a4b4d425db64d11407c02..0e79049d8547387770e211cfaab897538c72f5df 100644 --- a/Cabal/Distribution/ParseUtils.hs +++ b/Cabal/Distribution/ParseUtils.hs @@ -285,7 +285,7 @@ ppField name fielddoc , "extra-source-files" , "extra-tmp-files" , "exposed-modules" - , "s-sources" + , "asm-sources" , "cmm-sources" , "c-sources" , "js-sources" diff --git a/Cabal/Distribution/Simple/BuildTarget.hs b/Cabal/Distribution/Simple/BuildTarget.hs index d6c92819934df68ece8ea48b8cfcb2bcf9318838..cfa91c01c7bf7e08607596acdddd45cbff34c18a 100644 --- a/Cabal/Distribution/Simple/BuildTarget.hs +++ b/Cabal/Distribution/Simple/BuildTarget.hs @@ -450,7 +450,7 @@ data ComponentInfo = ComponentInfo { cinfoSrcDirs :: [FilePath], cinfoModules :: [ModuleName], cinfoHsFiles :: [FilePath], -- other hs files (like main.hs) - cinfoSFiles :: [FilePath], + cinfoAsmFiles:: [FilePath], cinfoCmmFiles:: [FilePath], cinfoCFiles :: [FilePath], cinfoJsFiles :: [FilePath] @@ -466,7 +466,7 @@ pkgComponentInfo pkg = cinfoSrcDirs = hsSourceDirs bi, cinfoModules = componentModules c, cinfoHsFiles = componentHsFiles c, - cinfoSFiles = sSources bi, + cinfoAsmFiles= asmSources bi, cinfoCmmFiles= cmmSources bi, cinfoCFiles = cSources bi, cinfoJsFiles = jsSources bi diff --git a/Cabal/Distribution/Simple/Register.hs b/Cabal/Distribution/Simple/Register.hs index 343c9299c1f8df1bedb1af65e6f9f209e3fce11f..e66c12179d1a45be0b6fbde92c9d59bc463202ac 100644 --- a/Cabal/Distribution/Simple/Register.hs +++ b/Cabal/Distribution/Simple/Register.hs @@ -463,8 +463,9 @@ generalInstalledPackageInfo adjustRelIncDirs pkg abi_hash lib lbi clbi installDi hasModules = not $ null (allLibModules lib clbi) comp = compiler lbi hasLibrary = (hasModules || not (null (cSources bi)) - || not (null (sSources bi)) + || not (null (asmSources bi)) || not (null (cmmSources bi)) + || not (null (cxxSources bi)) || (not (null (jsSources bi)) && compilerFlavor comp == GHCJS)) && not (componentIsIndefinite clbi) diff --git a/Cabal/Distribution/Types/BuildInfo.hs b/Cabal/Distribution/Types/BuildInfo.hs index efda457c5b088e42a4ddf30ac63e3c5653315196..6730a555e1e23b3cbe659135873368af06edef90 100644 --- a/Cabal/Distribution/Types/BuildInfo.hs +++ b/Cabal/Distribution/Types/BuildInfo.hs @@ -51,14 +51,16 @@ data BuildInfo = BuildInfo { -- field directly. buildToolDepends :: [ExeDependency], cppOptions :: [String], -- ^ options for pre-processing Haskell code + asmOptions :: [String], -- ^ options for assmebler + cmmOptions :: [String], -- ^ options for C-- compiler ccOptions :: [String], -- ^ options for C compiler cxxOptions :: [String], -- ^ options for C++ compiler ldOptions :: [String], -- ^ options for linker pkgconfigDepends :: [PkgconfigDependency], -- ^ pkg-config packages that are used frameworks :: [String], -- ^support frameworks for Mac OS X extraFrameworkDirs:: [String], -- ^ extra locations to find frameworks. - sSources :: [FilePath], -- ^ Assembly files. - cmmSources :: [FilePath], -- ^ CMM files. + asmSources :: [FilePath], -- ^ Assembly files. + cmmSources :: [FilePath], -- ^ C-- files. cSources :: [FilePath], cxxSources :: [FilePath], jsSources :: [FilePath], @@ -105,13 +107,15 @@ instance Monoid BuildInfo where buildTools = [], buildToolDepends = [], cppOptions = [], + asmOptions = [], + cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], - sSources = [], + asmSources = [], cmmSources = [], cSources = [], cxxSources = [], @@ -147,13 +151,15 @@ instance Semigroup BuildInfo where buildTools = combine buildTools, buildToolDepends = combine buildToolDepends, cppOptions = combine cppOptions, + asmOptions = combine asmOptions, + cmmOptions = combine cmmOptions, ccOptions = combine ccOptions, cxxOptions = combine cxxOptions, ldOptions = combine ldOptions, pkgconfigDepends = combine pkgconfigDepends, frameworks = combineNub frameworks, extraFrameworkDirs = combineNub extraFrameworkDirs, - sSources = combineNub sSources, + asmSources = combineNub asmSources, cmmSources = combineNub cmmSources, cSources = combineNub cSources, cxxSources = combineNub cxxSources, diff --git a/Cabal/Distribution/Types/BuildInfo/Lens.hs b/Cabal/Distribution/Types/BuildInfo/Lens.hs index b859e087a80f52eb683cbe414b1312f2e60e9894..680e77fef7535d42286df108049a276b63599363 100644 --- a/Cabal/Distribution/Types/BuildInfo/Lens.hs +++ b/Cabal/Distribution/Types/BuildInfo/Lens.hs @@ -39,6 +39,14 @@ class HasBuildInfo a where cppOptions = buildInfo . cppOptions {-# INLINE cppOptions #-} + asmOptions :: Lens' a [String] + asmOptions = buildInfo . asmOptions + {-# INLINE asmOptions #-} + + cmmOptions :: Lens' a [String] + cmmOptions = buildInfo . cmmOptions + {-# INLINE cmmOptions #-} + ccOptions :: Lens' a [String] ccOptions = buildInfo . ccOptions {-# INLINE ccOptions #-} @@ -63,6 +71,14 @@ class HasBuildInfo a where extraFrameworkDirs = buildInfo . extraFrameworkDirs {-# INLINE extraFrameworkDirs #-} + asmSources :: Lens' a [FilePath] + asmSources = buildInfo . asmSources + {-# INLINE asmSources #-} + + cmmSources :: Lens' a [FilePath] + cmmSources = buildInfo . cmmSources + {-# INLINE cmmSources #-} + cSources :: Lens' a [FilePath] cSources = buildInfo . cSources {-# INLINE cSources #-} @@ -115,6 +131,10 @@ class HasBuildInfo a where extraGHCiLibs = buildInfo . extraGHCiLibs {-# INLINE extraGHCiLibs #-} + extraBundledLibs :: Lens' a [String] + extraBundledLibs = buildInfo . extraBundledLibs + {-# INLINE extraBundledLibs #-} + extraLibDirs :: Lens' a [String] extraLibDirs = buildInfo . extraLibDirs {-# INLINE extraLibDirs #-} @@ -176,6 +196,12 @@ instance HasBuildInfo BuildInfo where cppOptions f s = fmap (\x -> s { T.cppOptions = x }) (f (T.cppOptions s)) {-# INLINE cppOptions #-} + asmOptions f s = fmap (\x -> s { T.asmOptions = x }) (f (T.asmOptions s)) + {-# INLINE asmOptions #-} + + cmmOptions f s = fmap (\x -> s { T.cmmOptions = x }) (f (T.cmmOptions s)) + {-# INLINE cmmOptions #-} + ccOptions f s = fmap (\x -> s { T.ccOptions = x }) (f (T.ccOptions s)) {-# INLINE ccOptions #-} @@ -194,6 +220,12 @@ instance HasBuildInfo BuildInfo where extraFrameworkDirs f s = fmap (\x -> s { T.extraFrameworkDirs = x }) (f (T.extraFrameworkDirs s)) {-# INLINE extraFrameworkDirs #-} + asmSources f s = fmap (\x -> s { T.asmSources = x }) (f (T.asmSources s)) + {-# INLINE asmSources #-} + + cmmSources f s = fmap (\x -> s { T.cmmSources = x }) (f (T.cmmSources s)) + {-# INLINE cmmSources #-} + cSources f s = fmap (\x -> s { T.cSources = x }) (f (T.cSources s)) {-# INLINE cSources #-} @@ -233,6 +265,9 @@ instance HasBuildInfo BuildInfo where extraGHCiLibs f s = fmap (\x -> s { T.extraGHCiLibs = x }) (f (T.extraGHCiLibs s)) {-# INLINE extraGHCiLibs #-} + extraBundledLibs f s = fmap (\x -> s { T.extraBundledLibs = x }) (f (T.extraBundledLibs s)) + {-# INLINE extraBundledLibs #-} + extraLibDirs f s = fmap (\x -> s { T.extraLibDirs = x }) (f (T.extraLibDirs s)) {-# INLINE extraLibDirs #-} diff --git a/Cabal/doc/developing-packages.rst b/Cabal/doc/developing-packages.rst index 0f5e325a24aca51fd107fdb63d7db8d100211f17..5f48581186581c0d2030e6a192514e909e6cb340 100644 --- a/Cabal/doc/developing-packages.rst +++ b/Cabal/doc/developing-packages.rst @@ -2040,7 +2040,7 @@ system-dependent values for these fields. :pkg-field:`c-sources` field and vice-versa. The object files will be linked appropriately. -.. pkg-field:: s-sources: filename list +.. pkg-field:: asm-sources: filename list A list of assembly source files to be compiled and linked with the Haskell files. diff --git a/Cabal/doc/installing-packages.rst b/Cabal/doc/installing-packages.rst index 09ae44a18214a749c81eee76ad30deb04e8e2391..967fe27733d980570cf4b7c6ac34480a7885c8b0 100644 --- a/Cabal/doc/installing-packages.rst +++ b/Cabal/doc/installing-packages.rst @@ -1707,7 +1707,7 @@ this section will be available. The files placed in this distribution are the package description file, the setup script, the sources of the modules named in the package description file, and files named in the ``license-file``, ``main-is``, -``c-sources``, ``s-sources``, ``cmm-sources``, ``js-sources``, +``c-sources``, ``asm-sources``, ``cmm-sources``, ``js-sources``, ``data-files``, ``extra-source-files`` and ``extra-doc-files`` fields. This command takes the following option: