Commit 8f19c65c authored by Ben Gamari's avatar Ben Gamari Committed by Ben Gamari

Rip out mkUserGuidePart

Reviewers: austin, hvr

Subscribers: rwbarton, thomie, erikd

Differential Revision: https://phabricator.haskell.org/D3886
parent 76e59a27
......@@ -232,14 +232,8 @@ import Foreign (Ptr) -- needed for 2nd stage
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
-- If you modify anything in this file please make sure that your changes are
-- described in the User's Guide. Usually at least two sections need to be
-- updated:
--
-- * Flag Reference section generated from the modules in
-- utils/mkUserGuidePart/Options
--
-- * Flag description in docs/users_guide/using.rst provides a detailed
-- explanation of flags' usage.
-- described in the User's Guide. Please update the flag description in the
-- users guide (docs/users_guide) whenever you add or change a flag.
-- Note [Supporting CLI completion]
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -4132,8 +4126,7 @@ impliedXFlags
-- If you change the list of flags enabled for particular optimisation levels
-- please remember to update the User's Guide. The relevant files are:
--
-- * utils/mkUserGuidePart/Options/
-- * docs/users_guide/using.rst
-- docs/users_guide/using-optimisation.rst
--
-- The first contains the Flag Reference section, which briefly lists all
-- available flags. The second contains a detailed description of the
......@@ -4208,8 +4201,7 @@ removes an assertion failure. -}
-- If you change the list of warning enabled by default
-- please remember to update the User's Guide. The relevant file is:
--
-- * utils/mkUserGuidePart/
-- * docs/users_guide/using-warnings.rst
-- docs/users_guide/using-warnings.rst
-- | Warning groups.
--
......
......@@ -1249,7 +1249,7 @@ checkMake380() {
checkMake380 make
checkMake380 gmake
AC_CONFIG_FILES([mk/config.mk mk/install.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal utils/runghc/runghc.cabal libraries/ghc-boot/ghc-boot.cabal libraries/ghc-boot-th/ghc-boot-th.cabal libraries/ghci/ghci.cabal settings docs/users_guide/ghc_config.py docs/index.html libraries/prologue.txt utils/mkUserGuidePart/mkUserGuidePart.cabal distrib/configure.ac])
AC_CONFIG_FILES([mk/config.mk mk/install.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal utils/runghc/runghc.cabal libraries/ghc-boot/ghc-boot.cabal libraries/ghc-boot-th/ghc-boot-th.cabal libraries/ghci/ghci.cabal settings docs/users_guide/ghc_config.py docs/index.html libraries/prologue.txt distrib/configure.ac])
AC_OUTPUT
[
if test "$print_make_warning" = "true"; then
......
......@@ -2,6 +2,3 @@ dir = docs/users_guide
TOP = ../..
include $(TOP)/mk/sub-makefile.mk
# This makes 'make fast' work: assume that mkUserGuidePart exists
FAST_MAKE_OPTS += utils/mkUserGuidePart_dist_NOT_NEEDED=YES
......@@ -419,17 +419,6 @@ user-substitutable tokens. In this document we use the convention, ``⟨subst⟩
less-than/greater-than signs).
.. _references:
GHC command-line options reference
----------------------------------
The tabular nature of GHC flags reference (:file:`flags.rst`) makes it very
difficult to maintain as ReST. For this reason it is generated by
:file:`utils/mkUserGuidePart`. Any command-line options added to GHC should
be added to the appropriate file in :file:`utils/mkUserGuidePart/Options`.
ReST reference materials
------------------------
......
......@@ -203,16 +203,6 @@ $(error Can not build haddock docs when CrossCompiling or Stage1Only. \
endif
endif
ifneq "$(BUILD_SPHINX_HTML) $(BUILD_SPHINX_PDF)" "NO NO"
# The User's Guide requires mkUserGuidePart, which uses the GHC API.
ifneq "$(CrossCompiling) $(Stage1Only)" "NO NO"
$(error Can not build User's Guide when CrossCompiling or Stage1Only. \
Set BUILD_SPHINX_HTML=NO, BUILD_SPHINX_PDF=NO in your \
mk/build.mk file. \
See Note [No stage2 packages when CrossCompiling or Stage1Only])
endif
endif
endif # CLEANING
# -----------------------------------------------------------------------------
......@@ -568,7 +558,6 @@ utils/haddock/dist/package-data.mk: compiler/stage2/package-data.mk
utils/ghctags/dist-install/package-data.mk: compiler/stage2/package-data.mk
utils/check-api-annotations/dist-install/package-data.mk: compiler/stage2/package-data.mk
utils/check-ppr/dist-install/package-data.mk: compiler/stage2/package-data.mk
utils/mkUserGuidePart/dist/package-data.mk: compiler/stage2/package-data.mk
# add the final package.conf dependency: ghc-prim depends on RTS
libraries/ghc-prim/dist-install/package-data.mk : rts/dist/package.conf.inplace
......@@ -695,7 +684,6 @@ BUILD_DIRS += utils/ghc-cabal
BUILD_DIRS += utils/hpc
BUILD_DIRS += utils/runghc
BUILD_DIRS += ghc
BUILD_DIRS += utils/mkUserGuidePart
BUILD_DIRS += docs/users_guide
BUILD_DIRS += utils/count_lines
BUILD_DIRS += utils/compare_sizes
......@@ -714,7 +702,6 @@ BUILD_DIRS := $(filter-out utils/mkdirhier,$(BUILD_DIRS))
BUILD_DIRS := $(filter-out utils/genprimopcode,$(BUILD_DIRS))
BUILD_DIRS := $(filter-out bindisttest,$(BUILD_DIRS))
BUILD_DIRS := $(filter-out utils/genapply,$(BUILD_DIRS))
BUILD_DIRS := $(filter-out utils/mkUserGuidePart,$(BUILD_DIRS))
endif
ifeq "$(HADDOCK_DOCS)" "NO"
BUILD_DIRS := $(filter-out utils/haddock,$(BUILD_DIRS))
......@@ -723,7 +710,6 @@ endif
ifeq "$(BUILD_SPHINX_HTML) $(BUILD_SPHINX_PDF)" "NO NO"
BUILD_DIRS := $(filter-out docs/users_guide,$(BUILD_DIRS))
# Don't to build this little utility if we're not building the User's Guide.
BUILD_DIRS := $(filter-out utils/mkUserGuidePart,$(BUILD_DIRS))
endif
ifeq "$(Windows_Host)" "NO"
BUILD_DIRS := $(filter-out utils/touchy,$(BUILD_DIRS))
......@@ -1518,8 +1504,8 @@ endif
# - neither do we register the ghc library (compiler/stage1) that we build
# with stage0. TODO Why not? We do build it...
# - as a result, we need to a) use ghc-stage2 to build packages that depend on
# the ghc library (e.g. ghctags [4] and mkUserGuidePart) and b) exclude
# those packages when ghc-stage2 is not available.
# the ghc library (e.g. ghctags [4]) and b) exclude those packages when
# ghc-stage2 is not available.
# - when Stage1Only=YES, it's clear that ghc-stage2 is not available (we just
# said we didn't want it), so we have to exclude the stage2 packages from
# the build. This includes the case where Stage1Only=YES is combined with
......
module DList where
newtype DList a = DList ([a] -> [a])
snoc :: DList a -> a -> DList a
DList f `snoc` x = DList (f . (x:))
toList :: DList a -> [a]
toList (DList f) = f []
instance Monoid (DList a) where
mempty = DList id
DList a `mappend` DList b = DList (a . b)
module Main (main) where
import DynFlags
import Control.Monad (forM_)
import Types hiding (flag)
import Table
import Options
import System.IO
writeFileUtf8 :: FilePath -> String -> IO ()
writeFileUtf8 f txt = withFile f WriteMode (\ hdl -> hSetEncoding hdl utf8 >> hPutStr hdl txt)
-- | A ReStructuredText fragment
type ReST = String
main :: IO ()
main = do
-- user's guide
writeRestFile (usersGuideFile "what_glasgow_exts_does.gen.rst")
$ whatGlasgowExtsDoes
forM_ groups $ \(Group name _ theFlags) ->
let fname = usersGuideFile $ "flags-"++name++".gen.rst"
in writeRestFile fname (flagsTable theFlags)
-- man page
writeRestFile (usersGuideFile "all-flags.gen.rst") (flagsList groups)
usersGuideFile :: FilePath -> FilePath
usersGuideFile fname = "docs/users_guide/"++fname
writeRestFile :: FilePath -> ReST -> IO ()
writeRestFile fname content =
writeFileUtf8 fname $ unlines
[ ".. This file is generated by utils/mkUserGuidePart"
, ""
, content
]
whatGlasgowExtsDoes :: String
whatGlasgowExtsDoes = unlines
$ [ ".. hlist::", ""]
++ map ((" * "++) . parseExt) glasgowExtsFlags
where
parseExt ext = inlineCode $ "-X" ++ show ext
-- | Generate a reference table of the given set of flags. This is used in
-- the user's guide.
flagsTable :: [Flag] -> ReST
flagsTable theFlags =
table [60, 100, 30, 55]
["Flag", "Description", "Type", "Reverse"]
(map flagRow theFlags)
where
flagRow flag =
[ role "ghc-flag" (flagName flag)
, flagDescription flag
, type_
, role "ghc-flag" (flagReverse flag)
]
where
type_ = case flagType flag of
DynamicFlag -> "dynamic"
DynamicSettableFlag -> "dynamic/``:set``"
ModeFlag -> "mode"
-- | Place the given text in an ReST inline code element.
inlineCode :: String -> ReST
inlineCode s = "``" ++ s ++ "``"
-- | @role "hi" "Hello world"@ produces the ReST inline role element
-- @:hi:`Hello world`@.
role :: String -> String -> ReST
role _ "" = ""
role r c = concat [":",r,":`",flag,"`",next]
where
-- Handle multiple comma separated flags
(flag, rest) = span (/= ',') c
next | rest == "" = rest
| otherwise = concat [", ", role r $ dropWhile (/= '-') rest]
heading :: Char -> String -> ReST
heading chr title = unlines
[ title
, replicate (length title) chr
, ""
]
-- | Generate a listing of all the flags known to GHC.
-- Used in the man page.
flagsList :: [Group] -> ReST
flagsList grps = unlines $
map doGroup grps ++ map flagDescriptions grps
where
doGroup grp = unlines
[ grpTitle grp
, " " ++ unwords (map (inlineCode . flagName) (grpFlags grp))
, ""
]
-- | Generate a definition list of the known flags.
-- Used in the man page.
flagDescriptions :: Group -> ReST
flagDescriptions (Group _ title fs) =
unlines $ [ heading '~' title ] ++ map doFlag fs
where
doFlag flag =
unlines $ [ inlineCode (flagName flag)
, " " ++ flagDescription flag
]
# -----------------------------------------------------------------------------
#
# (c) 2009 The University of Glasgow
#
# This file is part of the GHC build system.
#
# To understand how the build system works and how to modify it, see
# http://ghc.haskell.org/trac/ghc/wiki/Building/Architecture
# http://ghc.haskell.org/trac/ghc/wiki/Building/Modifying
#
# -----------------------------------------------------------------------------
dir = utils/mkUserGuidePart
TOP = ../..
include $(TOP)/mk/sub-makefile.mk
module Options (Group(..), groups) where
import Types
import Options.CodeGen
import Options.CompilerDebugging
import Options.Cpp
import Options.FindingImports
import Options.Interactive
import Options.InterfaceFiles
import Options.KeepingIntermediates
import Options.Language
import Options.Linking
import Options.Misc
import Options.Modes
import Options.Optimizations
import Options.OptimizationLevels
import Options.Packages
import Options.Phases
import Options.PhasePrograms
import Options.PhaseSpecific
import Options.PlatformSpecific
import Options.Plugin
import Options.Profiling
import Options.ProgramCoverage
import Options.RecompilationChecking
import Options.RedirectingOutput
import Options.TemporaryFiles
import Options.Verbosity
import Options.Warnings
-- | A group of flags
data Group = Group { grpName :: String -- ^ Internal name
, grpTitle :: String -- ^ Human-readable title
, grpFlags :: [Flag] -- ^ Flags in group
}
groups :: [Group]
groups =
[ Group "codegen" "Code generation" codegenOptions
, Group "compiler-debugging" "Debugging the compiler" compilerDebuggingOptions
, Group "cpp" "C pre-processor" cppOptions
, Group "finding-imports" "Finding imports" findingImportsOptions
, Group "interactive" "Interactive mode" interactiveOptions
, Group "interface-files" "Interface files" interfaceFilesOptions
, Group "keeping-intermediates" "Keeping intermediate files" keepingIntermediatesOptions
, Group "language" "Language options" languageOptions
, Group "linking" "Linking options" linkingOptions
, Group "misc" "Miscellaneous options" miscOptions
, Group "modes" "Modes of operation" modeOptions
, Group "optimization" "Individual optimizations " optimizationsOptions
, Group "optimization-levels" "Optimization levels" optimizationLevelsOptions
, Group "packages" "Package options" packagesOptions
, Group "phases" "Phases of compilation" phaseOptions
, Group "phase-programs" "Overriding external programs" phaseProgramsOptions
, Group "phase-specific" "Phase-specific options" phaseSpecificOptions
, Group "platform-specific" "Platform-specific options" platformSpecificOptions
, Group "plugin" "Compiler plugins" pluginOptions
, Group "profiling" "Profiling" profilingOptions
, Group "program-coverage" "Program coverage" programCoverageOptions
, Group "recompilation-checking" "Recompilation checking" recompilationCheckingOptions
, Group "redirecting-output" "Redirecting output" redirectingOutputOptions
, Group "temporary-files" "Temporary files" temporaryFilesOptions
, Group "verbosity" "Verbosity options" verbosityOptions
, Group "warnings" "Warnings" warningsOptions
]
module Options.CodeGen where
import Types
codegenOptions :: [Flag]
codegenOptions =
[ flag { flagName = "-fasm"
, flagDescription =
"Use the :ref:`native code generator <native-code-gen>`"
, flagType = DynamicFlag
, flagReverse = "-fllvm"
}
, flag { flagName = "-fllvm"
, flagDescription =
"Compile using the :ref:`LLVM code generator <llvm-code-gen>`"
, flagType = DynamicFlag
, flagReverse = "-fasm"
}
, flag { flagName = "-fno-code"
, flagDescription = "Omit code generation"
, flagType = DynamicFlag
}
, flag { flagName = "-fwrite-interface"
, flagDescription = "Always write interface files"
, flagType = DynamicFlag
}
, flag { flagName = "-fbyte-code"
, flagDescription = "Generate byte-code"
, flagType = DynamicFlag
}
, flag { flagName = "-fobject-code"
, flagDescription = "Generate object code"
, flagType = DynamicFlag
}
, flag { flagName = "-g⟨n⟩"
, flagDescription =
"Produce DWARF debug information in compiled object files." ++
"⟨n⟩ can be 0, 1, or 2, with higher numbers producing richer " ++
"output. If ⟨n⟩ is omitted level 2 is assumed."
, flagType = DynamicFlag
}
, flag { flagName = "-dynamic"
, flagDescription = "Build dynamically-linked object files and executables"
, flagType = DynamicFlag
}
, flag { flagName = "-dynamic-too"
, flagDescription =
"Build dynamic object files *as well as* static object files " ++
"during compilation"
, flagType = DynamicFlag
}
]
This diff is collapsed.
module Options.Cpp where
import Types
cppOptions :: [Flag]
cppOptions =
[ flag { flagName = "-cpp"
, flagDescription = "Run the C pre-processor on Haskell source files"
, flagType = DynamicFlag
}
, flag { flagName = "-D⟨symbol⟩[=⟨value⟩]"
, flagDescription = "Define a symbol in the C pre-processor"
, flagType = DynamicFlag
, flagReverse = "-U⟨symbol⟩"
}
, flag { flagName = "-U⟨symbol⟩"
, flagDescription = "Undefine a symbol in the C pre-processor"
, flagType = DynamicFlag
}
, flag { flagName = "-I⟨dir⟩"
, flagDescription =
"Add ⟨dir⟩ to the directory search list for ``#include`` files"
, flagType = DynamicFlag
}
]
module Options.FindingImports where
import Types
findingImportsOptions :: [Flag]
findingImportsOptions =
[ flag { flagName = "-i⟨dir⟩[:⟨dir⟩]*"
, flagDescription = "add ⟨dir⟩, ⟨dir2⟩, etc. to import path"
, flagType = DynamicSettableFlag
}
, flag { flagName = "-i"
, flagDescription = "Empty the import directory list"
, flagType = DynamicSettableFlag
}
]
module Options.Interactive where
import Types
interactiveOptions :: [Flag]
interactiveOptions =
[ flag { flagName = "-ignore-dot-ghci"
, flagDescription = "Disable reading of ``.ghci`` files"
, flagType = DynamicFlag
}
, flag { flagName = "-ghci-script"
, flagDescription = "Read additional ``.ghci`` files"
, flagType = DynamicFlag
}
, flag { flagName = "-fbreak-on-error"
, flagDescription =
":ref:`Break on uncaught exceptions and errors " ++
"<ghci-debugger-exceptions>`"
, flagType = DynamicFlag
, flagReverse = "-fno-break-on-error"
}
, flag { flagName = "-fbreak-on-exception"
, flagDescription =
":ref:`Break on any exception thrown <ghci-debugger-exceptions>`"
, flagType = DynamicFlag
, flagReverse = "-fno-break-on-exception"
}
, flag { flagName = "-fghci-hist-size=⟨n⟩"
, flagDescription =
"Set the number of entries GHCi keeps for ``:history``." ++
" See :ref:`ghci-debugger`."
, flagType = DynamicFlag
, flagReverse = ""
}
, flag { flagName = "-fprint-evld-with-show"
, flagDescription =
"Enable usage of ``Show`` instances in ``:print``. "++
"See :ref:`breakpoints`."
, flagType = DynamicFlag
, flagReverse = "-fno-print-evld-with-show"
}
, flag { flagName = "-fprint-bind-result"
, flagDescription =
":ref:`Turn on printing of binding results in GHCi <ghci-stmts>`"
, flagType = DynamicFlag
, flagReverse = "-fno-print-bind-result"
}
, flag { flagName = "-fno-print-bind-contents"
, flagDescription =
":ref:`Turn off printing of binding contents in GHCi <breakpoints>`"
, flagType = DynamicFlag
}
, flag { flagName = "-fno-implicit-import-qualified"
, flagDescription =
":ref:`Turn off implicit qualified import of everything in GHCi " ++
"<ghci-import-qualified>`"
, flagType = DynamicFlag
}
, flag { flagName = "-interactive-print ⟨expr⟩"
, flagDescription =
":ref:`Select the function to use for printing evaluated " ++
"expressions in GHCi <ghci-interactive-print>`"
, flagType = DynamicFlag
}
]
module Options.InterfaceFiles where
import Types
interfaceFilesOptions :: [Flag]
interfaceFilesOptions =
[ flag { flagName = "-ddump-hi"
, flagDescription = "Dump the new interface to stdout"
, flagType = DynamicFlag
}
, flag { flagName = "-ddump-hi-diffs"
, flagDescription = "Show the differences vs. the old interface"
, flagType = DynamicFlag
}
, flag { flagName = "-ddump-minimal-imports"
, flagDescription = "Dump a minimal set of imports"
, flagType = DynamicFlag
}
, flag { flagName = "--show-iface ⟨file⟩"
, flagDescription = "See :ref:`modes`."
, flagType = ModeFlag
}
]
module Options.KeepingIntermediates where
import Types
keepingIntermediatesOptions :: [Flag]
keepingIntermediatesOptions =
[ flag { flagName = "-keep-hc-file, -keep-hc-files"
, flagDescription = "Retain intermediate ``.hc`` files."
, flagType = DynamicFlag
}
, flag { flagName = "-keep-hi-files"
, flagDescription =
"Retain intermediate ``.hi`` files (the default)."
, flagType = DynamicFlag
, flagReverse = "-no-keep-hi-files"
}
, flag { flagName = "-keep-llvm-file, -keep-llvm-files"
, flagDescription = "Retain intermediate LLVM ``.ll`` files. "++
"Implies :ghc-flag:`-fllvm`."
, flagType = DynamicFlag
}
, flag { flagName = "-keep-o-files"
, flagDescription =
"Retain intermediate ``.o`` files (the default)."
, flagType = DynamicFlag
, flagReverse = "-no-keep-o-files"
}
, flag { flagName = "-keep-s-file, -keep-s-files"
, flagDescription = "Retain intermediate ``.s`` files."
, flagType = DynamicFlag
}
, flag { flagName = "-keep-tmp-files"
, flagDescription = "Retain all intermediate temporary files."
, flagType = DynamicFlag
}
]
This diff is collapsed.
module Options.Linking where
import Types
linkingOptions :: [Flag]
linkingOptions =
[ flag { flagName = "-shared"
, flagDescription =
"Generate a shared library (as opposed to an executable)"
, flagType = DynamicFlag
}
, flag { flagName = "-staticlib"
, flagDescription =
"Generate a standalone static library (as opposed to an " ++
"executable). This is useful when cross compiling. The " ++
"library together with all its dependencies ends up in in a " ++
"single static library that can be linked against."
, flagType = DynamicFlag
}
, flag { flagName = "-fPIC"
, flagDescription =
"Generate position-independent code (where available)"
, flagType = DynamicFlag
}
, flag { flagName = "-dynload"
, flagDescription =
"Selects one of a number of modes for finding shared libraries at runtime."
, flagType = DynamicFlag
}
, flag { flagName = "-framework ⟨name⟩"
, flagDescription =
"On Darwin/OS X/iOS only, link in the framework ⟨name⟩. This " ++
"option corresponds to the ``-framework`` option for Apple's Linker."
, flagType = DynamicFlag
}
, flag { flagName = "-framework-path ⟨dir⟩"
, flagDescription =
"On Darwin/OS X/iOS only, add ⟨dir⟩ to the list of directories " ++
"searched for frameworks. This option corresponds to the ``-F`` "++
"option for Apple's Linker."
, flagType = DynamicFlag
}
, flag { flagName = "-l ⟨lib⟩"
, flagDescription = "Link in library ⟨lib⟩"
, flagType = DynamicFlag
}
, flag { flagName = "-L ⟨dir⟩"
, flagDescription =
"Add ⟨dir⟩ to the list of directories searched for libraries"
, flagType = DynamicFlag
}
, flag { flagName = "-main-is ⟨thing⟩"
, flagDescription = "Set main module and function"
, flagType = DynamicFlag
}
, flag { flagName = "--mk-dll"
, flagDescription = "DLL-creation mode (Windows only)"
, flagType = DynamicFlag
}
, flag { flagName = "-no-hs-main"
, flagDescription = "Don't assume this program contains ``main``"
, flagType = DynamicFlag
}
, flag { flagName = "-rtsopts[=⟨none|some|all⟩]"
, flagDescription =
"Control whether the RTS behaviour can be tweaked via command-line"++
"flags and the ``GHCRTS`` environment variable. Using ``none`` " ++
"means no RTS flags can be given; ``some`` means only a minimum " ++
"of safe options can be given (the default), and ``all`` (or no " ++
"argument at all) means that all RTS flags are permitted."
, flagType = DynamicFlag
}
, flag { flagName = "-with-rtsopts=⟨opts⟩"
, flagDescription = "Set the default RTS options to ⟨opts⟩."
, flagType = DynamicFlag
}
, flag { flagName = "-no-rtsopts-suggestions"
, flagDescription =
"Don't print RTS suggestions about linking with "++
":ghc-flag:`-rtsopts[=⟨none|some|all⟩]`."
, flagType = DynamicFlag
}
, flag { flagName = "-no-link"
, flagDescription = "Omit linking"
, flagType = DynamicFlag
}
, flag { flagName = "-split-objs"
, flagDescription = "Split objects (for libraries)"
, flagType = DynamicFlag
}
, flag { flagName = "-split-sections"
, flagDescription = "Split sections for link-time dead-code stripping"
, flagType = DynamicFlag
}
, flag { flagName = "-static"
, flagDescription = "Use static Haskell libraries"
, flagType = DynamicFlag
}
, flag { flagName = "-threaded"
, flagDescription = "Use the threaded runtime"
, flagType = DynamicFlag
}
, flag { flagName = "-debug"
, flagDescription = "Use the debugging runtime"
, flagType = DynamicFlag
}
, flag { flagName = "-ticky"
, flagDescription =
"For linking, this simply implies :ghc-flag:`-debug`; "++
"see :ref:`ticky-ticky`."
, flagType = DynamicFlag
}
, flag { flagName = "-eventlog"
, flagDescription = "Enable runtime event tracing"
, flagType = DynamicFlag
}
, flag { flagName = "-fno-gen-manifest"
, flagDescription = "Do not generate a manifest file (Windows only)"
, flagType = DynamicFlag
}
, flag { flagName = "-fno-embed-manifest"
, flagDescription =
"Do not embed the manifest in the executable (Windows only)"
, flagType = DynamicFlag
}
, flag { flagName = "-fno-shared-implib"
, flagDescription =
"Don't generate an import library for a DLL (Windows only)"
, flagType = DynamicFlag
}
, flag { flagName = "-dylib-install-name ⟨path⟩"
, flagDescription =
"Set the install name (via ``-install_name`` passed to Apple's " ++
"linker), specifying the full install path of the library file. " ++
"Any libraries or executables that link with it later will pick " ++
"up that path as their runtime search location for it. " ++
"(Darwin/OS X only)"