ddc-build-0.4.2.2: Disciplined Disciple Compiler build framework.

Safe HaskellNone
LanguageHaskell98

DDC.Build.Builder

Synopsis

Documentation

data BuilderConfig Source

Configuration information for a builder that is not platform specific.

Constructors

BuilderConfig 

Fields

builderConfigBaseSrcDir :: FilePath

Directory that holds the source for the runtime system and base library.

builderConfigBaseLibDir :: FilePath

Directory that holds the shared objects for the runtime system and base library.

builderConfigLibFile :: FilePath -> FilePath -> FilePath

Runtime library to link with.

data BuilderHost Source

Builder information that we determine by interrogating the host platform. This tells us what we need to know about the environment that we're building in, versions of software tools etc. This is separate

Constructors

BuilderHost 

data Builder Source

Actions to use to invoke external compilation tools.

Constructors

Builder 

Fields

builderName :: String

The name of this platform.

buildHost :: Platform

The platform the build is being performed on.

buildTarget :: Platform

The platform we're compiling code for.

buildSpec :: Platform

The LLVM target specification. Gives the widths of pointers and primitive numeric types.

buildBaseSrcDir :: FilePath

Directory that holds the source for the runtime system and base library.

buildBaseLibDir :: FilePath

Directory that holds the shared objects for the runtime system and base library.

buildCC :: FilePath -> FilePath -> IO ()

Invoke the C compiler to compile a .c file into a .o file.

buildLlc :: FilePath -> FilePath -> IO ()

Invoke the LLVM compiler to compile a .ll file into a .s file.

buildLlvmVersion :: String

Version string of the LLVM compiler suite we are using.

buildAs :: FilePath -> FilePath -> IO ()

Invoke the system assembler to assemble a .s file into a .o file.

buildLdExe :: [FilePath] -> FilePath -> IO ()

Link an executable.

buildLdLibStatic :: [FilePath] -> FilePath -> IO ()

Link a static library.

buildLdLibShared :: [FilePath] -> FilePath -> IO ()

Link a shared library.

data BuilderResult Source

The result of a build command.

We use these so that the called doesn't need to worry about interpreting numeric exit codes.

Constructors

BuilderSuccess

Build command completed successfully.

BuilderCanceled

Build command was cancelled or killed by the user. eg by Control-C on the console.

BuilderFailed

Build command failed. There is probably something wrong with the generated file. Unrecognised exit codes also result in this BuilderResult.

builders :: BuilderConfig -> BuilderHost -> [Builder] Source

All supported builders. The host and target platforms are the same.

Supported builders are: x86_32-darwin, x86_64-darwin, x86_32-linux, x86_64-linux, x86_32-cygwin, ppc32-linux

determineDefaultBuilder :: BuilderConfig -> IO (Maybe Builder) Source

Determine the default builder based on the arch and uname commands. This assumes that the host and target platforms are the same.

If we don't recognise the result of arch or uname, or don't have a default builder config for this platform then Nothing.

determineDefaultBuilderHost :: IO (Maybe BuilderHost) Source

Determine the default builder host configuration, this the default set of build tools that we can see in the current path.