Commit 8c516bea authored by John van Groningen's avatar John van Groningen
Browse files

recompile if abc file was generated for architecture with different word size (32 or 64 bits)

parent 1ada6375
......@@ -17,6 +17,7 @@ from PmDirCache import :: DirCache
, abcGenerateComments :: !Bool
, abcReuseUniqueNodes :: !Bool
, abcFusion :: !Bool
, abc64Bits :: !Bool
}
DefaultABCOptions :: ABCOptions
......
......@@ -28,6 +28,7 @@ from StdLibMisc import :: Date{..}, :: Time{..}
, abcGenerateComments :: !Bool
, abcReuseUniqueNodes :: !Bool
, abcFusion :: !Bool
, abc64Bits :: !Bool
}
DefaultABCOptions :: ABCOptions;
......@@ -40,6 +41,7 @@ DefaultABCOptions =
, abcGenerateComments = False
, abcReuseUniqueNodes = False
, abcFusion = False
, abc64Bits = False
}
//-- abc file handling
......@@ -63,9 +65,10 @@ VerboseMask :== 6;
WarningsMask :== 7;
SystemMask :== 8;
FusionOffset :== 9;
Abc64BitsOffset :==10;
MinimumNrOfOptions :== 9;
NrOfOptions :== 10;
NrOfOptions :== 11;
Combined :: !Pathname !DATE !ABCCache !Files -> (!((!Bool, !Bool, !Int, !ABCOptions),(!List Modulename, !Maybe ModuleDate, !List ModuleDate, !List LinkObjFileName, !List LinkLibraryName),!ABCCache),!Files)
Combined path date abccache files
......@@ -147,7 +150,8 @@ StringToCompilerOptions start end opt
abcBeVerbose = opt .[start+VerboseMask] == '1',
abcGenerateComments = opt .[start+DebugMask] == '1',
abcReuseUniqueNodes = not (opt.[start+DontReuseUniqueNodesMask] == '1'),
abcFusion = start+FusionOffset<end && opt.[start+FusionOffset]=='1'
abcFusion = start+FusionOffset<end && opt.[start+FusionOffset]=='1',
abc64Bits = start+Abc64BitsOffset<end && opt.[start+Abc64BitsOffset]=='1'
};
ProjectABCFile :: !Int !String -> Bool;
......
......@@ -1087,7 +1087,8 @@ UpdateDependencies force next rest compinfo dircache ds ps`
# ps = showInfo line ps
= (ps,dircache,False,False,rest,compinfo,ds,False)
# (okA,whyA,dircache) = check_dependant_dates modname info.abcpath mods xxx_md xxx_dd dircache
# (okC,whyC) = check_module_options modname info co mp tp eod version
# (use_64_bit_processor,ps) = getCurrent64BitProcessor ps
# (okC,whyC) = check_module_options modname info co mp tp eod use_64_bit_processor version
| okA && okC
# (ok,paths,dircache) = LookupModulePaths mods dircache
......@@ -1405,11 +1406,13 @@ where
| ld.year <> rd.year = False
= True
check_module_options :: !String !.FileInfo !.CompilerOptions !.Bool !.Bool !.Bool !.Int -> (.Bool,{#Char});
check_module_options modname info=:{version,abcOptions} co mp tp expectedEagerOrDynamic expectedVersion
check_module_options :: !String !.FileInfo !.CompilerOptions !.Bool !.Bool !.Bool !Bool !.Int -> (.Bool,{#Char});
check_module_options modname info=:{version,abcOptions} co mp tp expectedEagerOrDynamic use_64_bit_processor expectedVersion
| version <> expectedVersion
= (False,"["+++modname+++".icl,]: .abc out of date, different abc version.")
| abcOptions.abc64Bits<>use_64_bit_processor
= incorrect_option modname "32 or 64 bit code"
| abcOptions.abcBeVerbose <> expectedBeVerbose
= incorrect_option modname "Dynamics"
| abcOptions.abcTimeProfile <> expectedTimeProfile
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment