packages feed

hpack 0.36.1 → 0.37.0

raw patch · 7 files changed

+113/−58 lines, 7 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Hpack.Config: instance (GHC.Base.Semigroup cSources, GHC.Base.Semigroup cxxSources, GHC.Base.Semigroup jsSources) => GHC.Base.Semigroup (Hpack.Config.CommonOptions cSources cxxSources jsSources a)
- Hpack.Config: instance (GHC.Base.Semigroup cSources, GHC.Base.Semigroup cxxSources, GHC.Base.Semigroup jsSources, GHC.Base.Monoid cSources, GHC.Base.Monoid cxxSources, GHC.Base.Monoid jsSources) => GHC.Base.Monoid (Hpack.Config.CommonOptions cSources cxxSources jsSources a)
- Hpack.Config: instance GHC.Base.Functor (Hpack.Config.CommonOptions cSources cxxSources jsSources)
- Hpack.Config: instance GHC.Base.Functor (Hpack.Config.ConditionalSection cSources cxxSources jsSources)
- Hpack.Config: instance GHC.Base.Functor (Hpack.Config.ThenElse cSources cxxSources jsSources)
- Hpack.Config: instance GHC.Generics.Generic (Hpack.Config.CommonOptions cSources cxxSources jsSources a)
- Hpack.Config: instance GHC.Generics.Generic (Hpack.Config.ThenElse cSources cxxSources jsSources a)
+ Hpack.Config: [sectionAsmOptions] :: Section a -> [AsmOption]
+ Hpack.Config: [sectionAsmSources] :: Section a -> [Path]
+ Hpack.Config: instance (GHC.Base.Semigroup asmSources, GHC.Base.Semigroup cSources, GHC.Base.Semigroup cxxSources, GHC.Base.Semigroup jsSources) => GHC.Base.Semigroup (Hpack.Config.CommonOptions asmSources cSources cxxSources jsSources a)
+ Hpack.Config: instance (GHC.Base.Semigroup asmSources, GHC.Base.Semigroup cSources, GHC.Base.Semigroup cxxSources, GHC.Base.Semigroup jsSources, GHC.Base.Monoid asmSources, GHC.Base.Monoid cSources, GHC.Base.Monoid cxxSources, GHC.Base.Monoid jsSources) => GHC.Base.Monoid (Hpack.Config.CommonOptions asmSources cSources cxxSources jsSources a)
+ Hpack.Config: instance GHC.Base.Functor (Hpack.Config.CommonOptions asmSources cSources cxxSources jsSources)
+ Hpack.Config: instance GHC.Base.Functor (Hpack.Config.ConditionalSection asmSources cSources cxxSources jsSources)
+ Hpack.Config: instance GHC.Base.Functor (Hpack.Config.ThenElse asmSources cSources cxxSources jsSources)
+ Hpack.Config: instance GHC.Generics.Generic (Hpack.Config.CommonOptions asmSources cSources cxxSources jsSources a)
+ Hpack.Config: instance GHC.Generics.Generic (Hpack.Config.ThenElse asmSources cSources cxxSources jsSources a)
+ Hpack.Config: type AsmOption = String
- Hpack.Config: Section :: a -> [FilePath] -> Dependencies -> [String] -> [String] -> [String] -> Maybe Language -> [GhcOption] -> [GhcProfOption] -> [GhcOption] -> [GhcjsOption] -> [CppOption] -> [CcOption] -> [Path] -> [CxxOption] -> [Path] -> [Path] -> [FilePath] -> [FilePath] -> [FilePath] -> [FilePath] -> [FilePath] -> [FilePath] -> [LdOption] -> Maybe Bool -> [Conditional (Section a)] -> Map BuildTool DependencyVersion -> SystemBuildTools -> [Verbatim] -> Section a
+ Hpack.Config: Section :: a -> [FilePath] -> Dependencies -> [String] -> [String] -> [String] -> Maybe Language -> [GhcOption] -> [GhcProfOption] -> [GhcOption] -> [GhcjsOption] -> [CppOption] -> [AsmOption] -> [Path] -> [CcOption] -> [Path] -> [CxxOption] -> [Path] -> [Path] -> [FilePath] -> [FilePath] -> [FilePath] -> [FilePath] -> [FilePath] -> [FilePath] -> [LdOption] -> Maybe Bool -> [Conditional (Section a)] -> Map BuildTool DependencyVersion -> SystemBuildTools -> [Verbatim] -> Section a

Files

CHANGELOG.md view
@@ -1,3 +1,6 @@+## Changes in 0.37.0+  - Add support for `asm-options` and `asm-sources` (see #573)+ ## Changes in 0.36.1   - Allow `Cabal-3.12.*`   - Support `base >= 4.20.0` (`Imports` does not re-export `Data.List.List`)
hpack.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           hpack-version:        0.36.1+version:        0.37.0 synopsis:       A modern format for Haskell packages description:    See README at <https://github.com/sol/hpack#readme> category:       Development
resources/test/hpack.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           hpack-version:        0.36.1+version:        0.37.0 synopsis:       A modern format for Haskell packages description:    See README at <https://github.com/sol/hpack#readme> category:       Development
src/Hpack/Config.hs view
@@ -67,6 +67,7 @@ , GhcProfOption , GhcjsOption , CppOption+, AsmOption , CcOption , LdOption , Path(..)@@ -191,7 +192,7 @@     deps xs = [(name, info) | (name, info) <- (Map.toList . unDependencies . sectionDependencies) xs]  section :: a -> Section a-section a = Section a [] mempty [] [] [] Nothing [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] Nothing [] mempty mempty []+section a = Section a [] mempty [] [] [] Nothing [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] Nothing [] mempty mempty []  packageConfig :: FilePath packageConfig = "package.yaml"@@ -271,7 +272,7 @@     Object _ -> VerbatimObject <$> fromValue v     _ -> typeMismatch (formatOrList ["String", "Object"]) v -data CommonOptions cSources cxxSources jsSources a = CommonOptions {+data CommonOptions asmSources cSources cxxSources jsSources a = CommonOptions {   commonOptionsSourceDirs :: Alias 'True "hs-source-dirs" (Maybe (List FilePath)) , commonOptionsDependencies :: Alias 'True "build-depends" (Maybe Dependencies) , commonOptionsPkgConfigDependencies :: Alias 'False "pkgconfig-depends" (Maybe (List String))@@ -284,6 +285,8 @@ , commonOptionsGhcjsOptions :: Maybe (List GhcjsOption) , commonOptionsCppOptions :: Maybe (List CppOption) , commonOptionsCcOptions :: Maybe (List CcOption)+, commonOptionsAsmOptions :: Maybe (List AsmOption)+, commonOptionsAsmSources :: asmSources , commonOptionsCSources :: cSources , commonOptionsCxxOptions :: Maybe (List CxxOption) , commonOptionsCxxSources :: cxxSources@@ -296,16 +299,16 @@ , commonOptionsInstallIncludes :: Maybe (List FilePath) , commonOptionsLdOptions :: Maybe (List LdOption) , commonOptionsBuildable :: Last Bool-, commonOptionsWhen :: Maybe (List (ConditionalSection cSources cxxSources jsSources a))+, commonOptionsWhen :: Maybe (List (ConditionalSection asmSources cSources cxxSources jsSources a)) , commonOptionsBuildTools :: Alias 'True "build-tool-depends" (Maybe BuildTools) , commonOptionsSystemBuildTools :: Maybe SystemBuildTools , commonOptionsVerbatim :: Maybe (List Verbatim) } deriving (Functor, Generic) -type ParseCommonOptions = CommonOptions ParseCSources ParseCxxSources ParseJsSources+type ParseCommonOptions = CommonOptions ParseAsmSources ParseCSources ParseCxxSources ParseJsSources instance FromValue a => FromValue (ParseCommonOptions a) -instance (Semigroup cSources, Semigroup cxxSources, Semigroup jsSources, Monoid cSources, Monoid cxxSources, Monoid jsSources) => Monoid (CommonOptions cSources cxxSources jsSources a) where+instance (Semigroup asmSources, Semigroup cSources, Semigroup cxxSources, Semigroup jsSources, Monoid asmSources, Monoid cSources, Monoid cxxSources, Monoid jsSources) => Monoid (CommonOptions asmSources cSources cxxSources jsSources a) where   mempty = CommonOptions {     commonOptionsSourceDirs = Alias Nothing   , commonOptionsDependencies = Alias Nothing@@ -318,6 +321,8 @@   , commonOptionsGhcSharedOptions = Nothing   , commonOptionsGhcjsOptions = Nothing   , commonOptionsCppOptions = Nothing+  , commonOptionsAsmOptions = Nothing+  , commonOptionsAsmSources = mempty   , commonOptionsCcOptions = Nothing   , commonOptionsCSources = mempty   , commonOptionsCxxOptions = Nothing@@ -338,7 +343,7 @@   }   mappend = (<>) -instance (Semigroup cSources, Semigroup cxxSources, Semigroup jsSources) => Semigroup (CommonOptions cSources cxxSources jsSources a) where+instance (Semigroup asmSources, Semigroup cSources, Semigroup cxxSources, Semigroup jsSources) => Semigroup (CommonOptions asmSources cSources cxxSources jsSources a) where   a <> b = CommonOptions {     commonOptionsSourceDirs = commonOptionsSourceDirs a <> commonOptionsSourceDirs b   , commonOptionsDependencies = commonOptionsDependencies b <> commonOptionsDependencies a@@ -351,6 +356,8 @@   , commonOptionsGhcSharedOptions = commonOptionsGhcSharedOptions a <> commonOptionsGhcSharedOptions b   , commonOptionsGhcjsOptions = commonOptionsGhcjsOptions a <> commonOptionsGhcjsOptions b   , commonOptionsCppOptions = commonOptionsCppOptions a <> commonOptionsCppOptions b+  , commonOptionsAsmOptions = commonOptionsAsmOptions a <> commonOptionsAsmOptions b+  , commonOptionsAsmSources = commonOptionsAsmSources a <> commonOptionsAsmSources b   , commonOptionsCcOptions = commonOptionsCcOptions a <> commonOptionsCcOptions b   , commonOptionsCSources = commonOptionsCSources a <> commonOptionsCSources b   , commonOptionsCxxOptions = commonOptionsCxxOptions a <> commonOptionsCxxOptions b@@ -370,40 +377,45 @@   , commonOptionsVerbatim = commonOptionsVerbatim a <> commonOptionsVerbatim b   } +type ParseAsmSources = Maybe (List FilePath) type ParseCSources = Maybe (List FilePath) type ParseCxxSources = Maybe (List FilePath) type ParseJsSources = Maybe (List FilePath) +type AsmSources = [Path] type CSources = [Path] type CxxSources = [Path] type JsSources = [Path] -type WithCommonOptions cSources cxxSources jsSources a = Product (CommonOptions cSources cxxSources jsSources a) a+type WithCommonOptions asmSources cSources cxxSources jsSources a = Product (CommonOptions asmSources cSources cxxSources jsSources a) a -data Traverse m cSources cSources_ cxxSources cxxSources_ jsSources jsSources_ = Traverse {-  traverseCSources :: cSources -> m cSources_+data Traverse m asmSources asmSources_ cSources cSources_ cxxSources cxxSources_ jsSources jsSources_ = Traverse {+  traverseAsmSources :: asmSources -> m asmSources_+, traverseCSources :: cSources -> m cSources_ , traverseCxxSources :: cxxSources -> m cxxSources_ , traverseJsSources :: jsSources -> m jsSources_ } -type Traversal t = forall m cSources cSources_ cxxSources cxxSources_ jsSources jsSources_. Monad m-  => Traverse m cSources cSources_ cxxSources cxxSources_ jsSources jsSources_-  -> t cSources cxxSources jsSources-  -> m (t cSources_ cxxSources_ jsSources_)+type Traversal t = forall m asmSources asmSources_ cSources cSources_ cxxSources cxxSources_ jsSources jsSources_. Monad m+  => Traverse m asmSources asmSources_ cSources cSources_ cxxSources cxxSources_ jsSources jsSources_+  -> t asmSources cSources cxxSources jsSources+  -> m (t asmSources_ cSources_ cxxSources_ jsSources_) -type Traversal_ t = forall m cSources cSources_ cxxSources cxxSources_ jsSources jsSources_ a. Monad m-  => Traverse m cSources cSources_ cxxSources cxxSources_ jsSources jsSources_-  -> t cSources cxxSources jsSources a-  -> m (t cSources_ cxxSources_ jsSources_ a)+type Traversal_ t = forall m asmSources asmSources_ cSources cSources_ cxxSources cxxSources_ jsSources jsSources_ a. Monad m+  => Traverse m asmSources asmSources_ cSources cSources_ cxxSources cxxSources_ jsSources jsSources_+  -> t asmSources cSources cxxSources jsSources a+  -> m (t asmSources_ cSources_ cxxSources_ jsSources_ a)  traverseCommonOptions :: Traversal_ CommonOptions traverseCommonOptions t@Traverse{..} c@CommonOptions{..} = do+  asmSources <- traverseAsmSources commonOptionsAsmSources   cSources <- traverseCSources commonOptionsCSources   cxxSources <- traverseCxxSources commonOptionsCxxSources   jsSources <- traverseJsSources commonOptionsJsSources   xs <- traverse (traverse (traverseConditionalSection t)) commonOptionsWhen   return c {-      commonOptionsCSources = cSources+      commonOptionsAsmSources = asmSources+    , commonOptionsCSources = cSources     , commonOptionsCxxSources = cxxSources     , commonOptionsJsSources = jsSources     , commonOptionsWhen = xs@@ -423,16 +435,16 @@ traverseWithCommonOptions :: Traversal_ WithCommonOptions traverseWithCommonOptions t = bitraverse (traverseCommonOptions t) return -data ConditionalSection cSources cxxSources jsSources a =-    ThenElseConditional (Product (ThenElse cSources cxxSources jsSources a) Condition)-  | FlatConditional (Product (WithCommonOptions cSources cxxSources jsSources a) Condition)+data ConditionalSection asmSources cSources cxxSources jsSources a =+    ThenElseConditional (Product (ThenElse asmSources cSources cxxSources jsSources a) Condition)+  | FlatConditional (Product (WithCommonOptions asmSources cSources cxxSources jsSources a) Condition) -instance Functor (ConditionalSection cSources cxxSources jsSources) where+instance Functor (ConditionalSection asmSources cSources cxxSources jsSources) where   fmap f = \ case     ThenElseConditional c -> ThenElseConditional (first (fmap f) c)     FlatConditional c -> FlatConditional (first (bimap (fmap f) f) c) -type ParseConditionalSection = ConditionalSection ParseCSources ParseCxxSources ParseJsSources+type ParseConditionalSection = ConditionalSection ParseAsmSources ParseCSources ParseCxxSources ParseJsSources  instance FromValue a => FromValue (ParseConditionalSection a) where   fromValue v@@ -486,17 +498,17 @@     Bool c -> return (CondBool c)     _ -> typeMismatch "Boolean or String" v -data ThenElse cSources cxxSources jsSources a = ThenElse {-  thenElseThen :: WithCommonOptions cSources cxxSources jsSources a-, thenElseElse :: WithCommonOptions cSources cxxSources jsSources a+data ThenElse asmSources cSources cxxSources jsSources a = ThenElse {+  thenElseThen :: WithCommonOptions asmSources cSources cxxSources jsSources a+, thenElseElse :: WithCommonOptions asmSources cSources cxxSources jsSources a } deriving Generic -instance Functor (ThenElse cSources cxxSources jsSources) where+instance Functor (ThenElse asmSources cSources cxxSources jsSources) where   fmap f c@ThenElse{..} = c{thenElseThen = map_ thenElseThen, thenElseElse = map_ thenElseElse}     where       map_ = bimap (fmap f) f -type ParseThenElse = ThenElse ParseCSources ParseCxxSources ParseJsSources+type ParseThenElse = ThenElse ParseAsmSources ParseCSources ParseCxxSources ParseJsSources  instance FromValue a => FromValue (ParseThenElse a) @@ -545,15 +557,15 @@   y : x : [] -> x ++ " or " ++ y   x : ys@(_:_:_) -> intercalate ", " . reverse $ ("or " ++ x) : ys -type SectionConfigWithDefaults cSources cxxSources jsSources a = Product DefaultsConfig (WithCommonOptions cSources cxxSources jsSources a)+type SectionConfigWithDefaults asmSources cSources cxxSources jsSources a = Product DefaultsConfig (WithCommonOptions asmSources cSources cxxSources jsSources a) -type PackageConfigWithDefaults cSources cxxSources jsSources = PackageConfig_-  (SectionConfigWithDefaults cSources cxxSources jsSources LibrarySection)-  (SectionConfigWithDefaults cSources cxxSources jsSources ExecutableSection)+type PackageConfigWithDefaults asmSources cSources cxxSources jsSources = PackageConfig_+  (SectionConfigWithDefaults asmSources cSources cxxSources jsSources LibrarySection)+  (SectionConfigWithDefaults asmSources cSources cxxSources jsSources ExecutableSection) -type PackageConfig cSources cxxSources jsSources = PackageConfig_-  (WithCommonOptions cSources cxxSources jsSources LibrarySection)-  (WithCommonOptions cSources cxxSources jsSources ExecutableSection)+type PackageConfig asmSources cSources cxxSources jsSources = PackageConfig_+  (WithCommonOptions asmSources cSources cxxSources jsSources LibrarySection)+  (WithCommonOptions asmSources cSources cxxSources jsSources ExecutableSection)  data PackageVersion = PackageVersion {unPackageVersion :: String} @@ -632,7 +644,7 @@   where     traverseNamedConfigs = traverse . traverse . traverseWithCommonOptions -type ParsePackageConfig = PackageConfigWithDefaults ParseCSources ParseCxxSources ParseJsSources+type ParsePackageConfig = PackageConfigWithDefaults ParseAsmSources ParseCSources ParseCxxSources ParseJsSources  instance FromValue ParsePackageConfig @@ -831,6 +843,8 @@     sectionCabalVersion getMentionedModules sect = maximum $ [         makeVersion [2,2] <$ guard (sectionSatisfies (not . null . sectionCxxSources) sect)       , makeVersion [2,2] <$ guard (sectionSatisfies (not . null . sectionCxxOptions) sect)+      , makeVersion [3,0] <$ guard (sectionSatisfies (not . null . sectionAsmOptions) sect)+      , makeVersion [3,0] <$ guard (sectionSatisfies (not . null . sectionAsmSources) sect)       , makeVersion [2,0] <$ guard (sectionSatisfies (any hasMixins . unDependencies . sectionDependencies) sect)       , makeVersion [3,0] <$ guard (sectionSatisfies (any hasSubcomponents . Map.keys . unDependencies . sectionDependencies) sect)       , makeVersion [2,2] <$ guard (@@ -1018,6 +1032,8 @@ , sectionGhcSharedOptions :: [GhcOption] , sectionGhcjsOptions :: [GhcjsOption] , sectionCppOptions :: [CppOption]+, sectionAsmOptions :: [AsmOption]+, sectionAsmSources :: [Path] , sectionCcOptions :: [CcOption] , sectionCSources :: [Path] , sectionCxxOptions :: [CxxOption]@@ -1064,18 +1080,18 @@ , sourceRepositorySubdir :: Maybe String } deriving (Eq, Show) -type Config cSources cxxSources jsSources =-  Product (CommonOptions cSources cxxSources jsSources Empty) (PackageConfig cSources cxxSources jsSources)+type Config asmSources cSources cxxSources jsSources =+  Product (CommonOptions asmSources cSources cxxSources jsSources Empty) (PackageConfig asmSources cSources cxxSources jsSources)  traverseConfig :: Traversal Config traverseConfig t = bitraverse (traverseCommonOptions t) (traversePackageConfig t)  type ConfigWithDefaults = Product   (CommonOptionsWithDefaults Empty)-  (PackageConfigWithDefaults ParseCSources ParseCxxSources ParseJsSources)+  (PackageConfigWithDefaults ParseAsmSources ParseCSources ParseCxxSources ParseJsSources) -type CommonOptionsWithDefaults a = Product DefaultsConfig (CommonOptions ParseCSources ParseCxxSources ParseJsSources a)-type WithCommonOptionsWithDefaults a = Product DefaultsConfig (WithCommonOptions ParseCSources ParseCxxSources ParseJsSources a)+type CommonOptionsWithDefaults a = Product DefaultsConfig (CommonOptions ParseAsmSources ParseCSources ParseCxxSources ParseJsSources a)+type WithCommonOptionsWithDefaults a = Product DefaultsConfig (WithCommonOptions ParseAsmSources ParseCSources ParseCxxSources ParseJsSources a)  toPackage :: FormatYamlParseError -> FilePath -> FilePath -> ConfigWithDefaults -> ConfigM IO (Package, String) toPackage formatYamlParseError userDataDir dir =@@ -1094,7 +1110,7 @@   -> FilePath   -> FilePath   -> ConfigWithDefaults-  -> m (Config ParseCSources ParseCxxSources ParseJsSources)+  -> m (Config ParseAsmSources ParseCSources ParseCxxSources ParseJsSources) expandDefaultsInConfig formatYamlParseError userDataDir dir = bitraverse (expandGlobalDefaults formatYamlParseError userDataDir dir) (expandSectionDefaults formatYamlParseError userDataDir dir)  expandGlobalDefaults@@ -1103,7 +1119,7 @@   -> FilePath   -> FilePath   -> CommonOptionsWithDefaults Empty-  -> m (CommonOptions ParseCSources ParseCxxSources ParseJsSources Empty)+  -> m (CommonOptions ParseAsmSources ParseCSources ParseCxxSources ParseJsSources Empty) expandGlobalDefaults formatYamlParseError userDataDir dir = do   fmap (`Product` Empty) >>> expandDefaults formatYamlParseError userDataDir dir >=> \ (Product c Empty) -> return c @@ -1112,8 +1128,8 @@      FormatYamlParseError   -> FilePath   -> FilePath-  -> PackageConfigWithDefaults ParseCSources ParseCxxSources ParseJsSources-  -> m (PackageConfig ParseCSources ParseCxxSources ParseJsSources)+  -> PackageConfigWithDefaults ParseAsmSources ParseCSources ParseCxxSources ParseJsSources+  -> m (PackageConfig ParseAsmSources ParseCSources ParseCxxSources ParseJsSources) expandSectionDefaults formatYamlParseError userDataDir dir p@PackageConfig{..} = do   library <- traverse (expandDefaults formatYamlParseError userDataDir dir) packageConfigLibrary   internalLibraries <- traverse (traverse (expandDefaults formatYamlParseError userDataDir dir)) packageConfigInternalLibraries@@ -1137,14 +1153,14 @@   -> FilePath   -> FilePath   -> WithCommonOptionsWithDefaults a-  -> m (WithCommonOptions ParseCSources ParseCxxSources ParseJsSources a)+  -> m (WithCommonOptions ParseAsmSources ParseCSources ParseCxxSources ParseJsSources a) expandDefaults formatYamlParseError userDataDir = expand []   where     expand ::          [FilePath]       -> FilePath       -> WithCommonOptionsWithDefaults a-      -> m (WithCommonOptions ParseCSources ParseCxxSources ParseJsSources a)+      -> m (WithCommonOptions ParseAsmSources ParseCSources ParseCxxSources ParseJsSources a)     expand seen dir (Product DefaultsConfig{..} c) = do       d <- mconcat <$> mapM (get seen dir) (fromMaybeList defaultsConfigDefaults)       return (d <> c)@@ -1153,7 +1169,7 @@          [FilePath]       -> FilePath       -> Defaults-      -> m (WithCommonOptions ParseCSources ParseCxxSources ParseJsSources a)+      -> m (WithCommonOptions ParseAsmSources ParseCSources ParseCxxSources ParseJsSources a)     get seen dir defaults = do       file <- liftIOEither (ensure userDataDir dir defaults)       seen_ <- checkCycle seen file@@ -1177,9 +1193,9 @@       return $ Just (Map.fromList [(name, executable)])     Nothing -> return executables -type GlobalOptions = CommonOptions CSources CxxSources JsSources Empty+type GlobalOptions = CommonOptions AsmSources CSources CxxSources JsSources Empty -toPackage_ :: (MonadIO m, Warnings m, State m) => FilePath -> Product GlobalOptions (PackageConfig CSources CxxSources JsSources) -> m (Package, String)+toPackage_ :: (MonadIO m, Warnings m, State m) => FilePath -> Product GlobalOptions (PackageConfig AsmSources CSources CxxSources JsSources) -> m (Package, String) toPackage_ dir (Product g PackageConfig{..}) = do   executableMap <- toExecutableMap packageName_ packageConfigExecutables packageConfigExecutable   let@@ -1188,10 +1204,10 @@      executableNames = maybe [] Map.keys executableMap -    toSect :: (Warnings m, Monoid a) => WithCommonOptions CSources CxxSources JsSources a -> m (Section a)+    toSect :: (Warnings m, Monoid a) => WithCommonOptions AsmSources CSources CxxSources JsSources a -> m (Section a)     toSect = toSection packageName_ executableNames . first ((mempty <$ globalOptions) <>) -    toSections :: (Warnings m, Monoid a) => Maybe (Map String (WithCommonOptions CSources CxxSources JsSources a)) -> m (Map String (Section a))+    toSections :: (Warnings m, Monoid a) => Maybe (Map String (WithCommonOptions AsmSources CSources CxxSources JsSources a)) -> m (Map String (Section a))     toSections = maybe (return mempty) (traverse toSect)      toLib = toLibrary dir packageName_@@ -1328,9 +1344,10 @@ expandForeignSources   :: (MonadIO m, Warnings m)   => FilePath-  -> Traverse m ParseCSources CSources ParseCxxSources CxxSources ParseJsSources JsSources+  -> Traverse m ParseAsmSources AsmSources ParseCSources CSources ParseCxxSources CxxSources ParseJsSources JsSources expandForeignSources dir = Traverse {-    traverseCSources = expand "c-sources"+    traverseAsmSources = expand "asm-sources"+  , traverseCSources = expand "c-sources"   , traverseCxxSources = expand "cxx-sources"   , traverseJsSources = expand "js-sources"   }@@ -1494,7 +1511,7 @@       , sectionConditionals = map (fmap flatten) sectionConditionals       } -toSection :: forall a m. Warnings m => String -> [String] -> WithCommonOptions CSources CxxSources JsSources a -> m (Section a)+toSection :: forall a m. Warnings m => String -> [String] -> WithCommonOptions AsmSources CSources CxxSources JsSources a -> m (Section a) toSection packageName_ executableNames = go   where     go (Product CommonOptions{..} a) = do@@ -1514,6 +1531,8 @@       , sectionGhcSharedOptions = fromMaybeList commonOptionsGhcSharedOptions       , sectionGhcjsOptions = fromMaybeList commonOptionsGhcjsOptions       , sectionCppOptions = fromMaybeList commonOptionsCppOptions+      , sectionAsmOptions = fromMaybeList commonOptionsAsmOptions+      , sectionAsmSources = commonOptionsAsmSources       , sectionCcOptions = fromMaybeList commonOptionsCcOptions       , sectionCSources = commonOptionsCSources       , sectionCxxOptions = fromMaybeList commonOptionsCxxOptions@@ -1540,7 +1559,7 @@          mkBuildTools = Map.fromList . rights -    toConditional :: ConditionalSection CSources CxxSources JsSources a -> m (Conditional (Section a))+    toConditional :: ConditionalSection AsmSources CSources CxxSources JsSources a -> m (Conditional (Section a))     toConditional x = case x of       ThenElseConditional (Product (ThenElse then_ else_) c) -> conditional c <$> go then_ <*> (Just <$> go else_)       FlatConditional (Product sect c) -> conditional c <$> (go sect) <*> pure Nothing
src/Hpack/Render.hs view
@@ -234,10 +234,12 @@   , renderGhcSharedOptions sectionGhcSharedOptions   , renderGhcjsOptions sectionGhcjsOptions   , renderCppOptions sectionCppOptions+  , renderAsmOptions sectionAsmOptions   , renderCcOptions sectionCcOptions   , renderCxxOptions sectionCxxOptions   , renderDirectories "include-dirs" sectionIncludeDirs   , Field "install-includes" (LineSeparatedList sectionInstallIncludes)+  , Field "asm-sources" (renderPaths sectionAsmSources)   , Field "c-sources" (renderPaths sectionCSources)   , Field "cxx-sources" (renderPaths sectionCxxSources)   , Field "js-sources" (renderPaths sectionJsSources)@@ -391,6 +393,9 @@  renderCppOptions :: [CppOption] -> Element renderCppOptions = Field "cpp-options" . WordList++renderAsmOptions :: [AsmOption] -> Element+renderAsmOptions = Field "asm-options" . WordList  renderCcOptions :: [CcOption] -> Element renderCcOptions = Field "cc-options" . WordList
src/Hpack/Util.hs view
@@ -4,6 +4,7 @@ , GhcProfOption , GhcjsOption , CppOption+, AsmOption , CcOption , CxxOption , LdOption@@ -46,6 +47,7 @@ type GhcProfOption = String type GhcjsOption = String type CppOption = String+type AsmOption = String type CcOption = String type CxxOption = String type LdOption = String
test/EndToEndSpec.hs view
@@ -924,6 +924,32 @@             jsbits/bar.js         |] +    describe "asm-options" $ do+      it "accepts asm-options" $ do+        [i|+        executable:+          asm-options: -Wall+        |] `shouldRenderTo` (executable_ "my-package" [i|+        autogen-modules:+            Paths_my_package+        asm-options: -Wall+        |]) {packageCabalVersion = "3.0"}++    describe "asm-sources" $ before_ (touch "foo.asm" >> touch "asmbits/bar.asm") $ do+      it "accepts asm-sources" $ do+        [i|+        executable:+          asm-sources:+            - foo.asm+            - asmbits/*.asm+        |] `shouldRenderTo` (executable_ "my-package" [i|+        autogen-modules:+            Paths_my_package+        asm-sources:+            foo.asm+            asmbits/bar.asm+        |]) {packageCabalVersion = "3.0"}+     describe "cxx-options" $ do       it "accepts cxx-options" $ do         [i|