PmFiles.dcl 1.9 KB
Newer Older
Diederik van Arkel's avatar
Diederik van Arkel committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
definition module PmFiles

//	File I/O routines for the project manager.

import StdPathname, StdMaybe
import UtilOptions
import PmCompilerOptions
import PmTypes

ProjectTable			:: OptionsTable ProjectGlobalOptions

CompilerOptionsTable	:: OptionsTable CompilerOptions
CodeGenOptionsTable		:: OptionsTable CodeGenOptions
LinkOptionsTable		:: OptionsTable LinkOptions
ApplicationOptionsTable	:: OptionsTable ApplicationOptions
//ProjectOptionsTable	:: OptionsTable ProjectOptions

ProjectFileVersion :== "1.4"

:: ProjectGlobalOptions =
	{ pg_built				:: !Bool
	, pg_codegen			:: CodeGenOptions
	, pg_application		:: ApplicationOptions
//	, pg_projectOptions		:: ProjectOptions
	, pg_link				:: LinkOptions
	, pg_projectPaths		:: List Pathname
	, pg_otherModules		:: List ModInfoAndName
	, pg_mainModuleInfo		:: ModInfoAndName
	, pg_staticLibInfo		:: StaticLibInfo
	, pg_target				:: String					// specify used environment
	, pg_execpath			:: String					// move to ApplicationOptions
	, pg_static				:: !ProjectStaticInfo
	, pg_dynamic			:: !ProjectDynamicInfo
//	, pg_generateDLL		:: !Bool
//	, pg_exportedDLL		:: !String
	, pg_precompile			:: !Maybe String			// experiment: move to LinkOptions
	, pg_postlink			:: !Maybe String			// experiment: move to LinkOptions
	}

:: ProjectStaticInfo =
	{ stat_mods				:: !List Pathname
	, stat_slibs			:: !List Pathname
	, stat_dlibs			:: !List Pathname
	, stat_paths			:: !List Pathname
	}

:: ProjectDynamicInfo =
	{ dyn_syms				:: !List UndefSymbol
	, dyn_mods				:: !List UndefModule
	, dyn_objs				:: !List Pathname
	, dyn_slibs				:: !List Pathname
	, dyn_dlibs				:: !List Pathname
	, dyn_paths				:: !List Pathname
	}

EmptyStaticInfo		:: ProjectStaticInfo
EmptyDynamicInfo	:: ProjectDynamicInfo

:: UndefSymbol =
	{ symbol_name	:: !String
	, path			:: !String
	}
 
:: UndefModule =
	{ module_name	:: !String
	, path			:: !String
	}
 
EmptyUndefSymbol	:: UndefSymbol
EmptyUndefModule	:: UndefModule