File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -107,8 +107,12 @@ dceModules :: Term [String]
107107dceModules = value $ optAll [] $ (optInfo [ " m" , " module" ])
108108 { optDoc = " Enables dead code elimination, all code which is not a transitive dependency of a specified module will be removed. This argument can be used multiple times." }
109109
110+ codeGenModules :: Term [String ]
111+ codeGenModules = value $ optAll [] $ (optInfo [ " codegen" ])
112+ { optDoc = " A list of modules for which Javascript and externs should be generated. This argument can be used multiple times." }
113+
110114options :: Term P. Options
111- options = P. Options <$> tco <*> magicDo <*> runMain <*> noOpts <*> browserNamespace <*> dceModules
115+ options = P. Options <$> tco <*> magicDo <*> runMain <*> noOpts <*> browserNamespace <*> dceModules <*> codeGenModules
112116
113117stdInOrInputFiles :: FilePath -> Term (Maybe [FilePath ])
114118stdInOrInputFiles prelude = combine <$> useStdIn <*> (not <$> noPrelude) <*> inputFiles
Original file line number Diff line number Diff line change @@ -195,7 +195,7 @@ completion = completeWord Nothing " \t\n\r" findCompletions
195195-- | Compilation options.
196196--
197197options :: P. Options
198- options = P. Options True True (Just " Main" ) True " PS" []
198+ options = P. Options True True (Just " Main" ) True " PS" [] []
199199
200200-- |
201201-- Makes a volatile module to execute the current expression.
Original file line number Diff line number Diff line change @@ -68,8 +68,10 @@ compile opts ms = do
6868 regrouped <- createBindingGroupsModule . collapseBindingGroupsModule $ elaborated
6969 let entryPoints = moduleNameFromString `map` optionsModules opts
7070 let elim = if null entryPoints then regrouped else eliminateDeadCode entryPoints regrouped
71- let js = mapMaybe (flip (moduleToJs opts) env) elim
72- let exts = intercalate " \n " . map (`moduleToPs` env) $ elim
71+ let codeGenModules = moduleNameFromString `map` optionsCodeGenModules opts
72+ let modulesToCodeGen = if null codeGenModules then elim else filter (\ (Module mn _ _) -> mn `elem` codeGenModules) elim
73+ let js = mapMaybe (flip (moduleToJs opts) env) modulesToCodeGen
74+ let exts = intercalate " \n " . map (`moduleToPs` env) $ modulesToCodeGen
7375 js' <- case mainModuleIdent of
7476 Just mmi -> do
7577 when ((mmi, Ident C. main) `M.notMember` names env) $
Original file line number Diff line number Diff line change @@ -45,10 +45,14 @@ data Options = Options {
4545 -- The modules to keep while enabling dead code elimination
4646 --
4747 , optionsModules :: [String ]
48+ -- |
49+ -- The modules to code gen
50+ --
51+ , optionsCodeGenModules :: [String ]
4852 } deriving Show
4953
5054-- |
5155-- Default compiler options
5256--
5357defaultOptions :: Options
54- defaultOptions = Options False False Nothing False " PS" []
58+ defaultOptions = Options False False Nothing False " PS" [] []
You can’t perform that action at this time.
0 commit comments