Commit 897f1a1b authored by John van Groningen's avatar John van Groningen
Browse files

use -tcl option of the compiler if the dynamic linker is used

parent 5669c657
Pipeline #49777 passed with stage
in 57 seconds
...@@ -246,7 +246,7 @@ where ...@@ -246,7 +246,7 @@ where
:+: TextControl "Initial Heap Size" [] :+: TextControl "Initial Heap Size" []
// marking collector // marking collector
:+: CheckControl :+: CheckControl
[ ( "Enable dynamics" [ ( "Dynamic linker"
, Nothing , Nothing
, if (lo.method == LM_Static) NoMark Mark , if (lo.method == LM_Static) NoMark Mark
, noPS (\l->{l & lo = {l.lo & method = if (l.lo.method == LM_Static) LM_Dynamic LM_Static}}) , noPS (\l->{l & lo = {l.lo & method = if (l.lo.method == LM_Static) LM_Dynamic LM_Static}})
......
...@@ -21,6 +21,7 @@ from PmDirCache import :: DirCache ...@@ -21,6 +21,7 @@ from PmDirCache import :: DirCache
, abcGenericFusion :: !Bool , abcGenericFusion :: !Bool
, abc64Bits :: !Bool , abc64Bits :: !Bool
, abcDynamics :: !Bool , abcDynamics :: !Bool
, abcTclFile :: !Bool
} }
DefaultABCOptions :: ABCOptions DefaultABCOptions :: ABCOptions
......
...@@ -32,6 +32,7 @@ from StdLibMisc import :: Date{..}, :: Time{..} ...@@ -32,6 +32,7 @@ from StdLibMisc import :: Date{..}, :: Time{..}
, abcGenericFusion :: !Bool , abcGenericFusion :: !Bool
, abc64Bits :: !Bool , abc64Bits :: !Bool
, abcDynamics :: !Bool , abcDynamics :: !Bool
, abcTclFile :: !Bool
} }
DefaultABCOptions :: ABCOptions; DefaultABCOptions :: ABCOptions;
...@@ -48,6 +49,7 @@ DefaultABCOptions = ...@@ -48,6 +49,7 @@ DefaultABCOptions =
, abcGenericFusion = False , abcGenericFusion = False
, abc64Bits = False , abc64Bits = False
, abcDynamics = False , abcDynamics = False
, abcTclFile = False
} }
//-- abc file handling //-- abc file handling
...@@ -75,9 +77,10 @@ Abc64BitsOffset :==10; ...@@ -75,9 +77,10 @@ Abc64BitsOffset :==10;
DynamicsBitsOffset :==11; DynamicsBitsOffset :==11;
GenericFusionOffset :==12; GenericFusionOffset :==12;
CallgraphProfileOffset :==13; CallgraphProfileOffset :==13;
TclFileOffset :==14;
MinimumNrOfOptions :== 9; MinimumNrOfOptions :== 9;
NrOfOptions :== 14; NrOfOptions :== 15;
ParseABCInfoAndDependencies :: !Pathname !DATE !ABCCache !Files -> (!((!Bool, !Bool, !Int, !ABCOptions),(!List Modulename, !Maybe ModuleDate, !List ModuleDate, !List LinkObjFileName, !List LinkLibraryName),!ABCCache),!Files) ParseABCInfoAndDependencies :: !Pathname !DATE !ABCCache !Files -> (!((!Bool, !Bool, !Int, !ABCOptions),(!List Modulename, !Maybe ModuleDate, !List ModuleDate, !List LinkObjFileName, !List LinkLibraryName),!ABCCache),!Files)
ParseABCInfoAndDependencies path date abccache files ParseABCInfoAndDependencies path date abccache files
...@@ -169,7 +172,8 @@ StringToCompilerOptions start end opt ...@@ -169,7 +172,8 @@ StringToCompilerOptions start end opt
abcGenericFusion = start+GenericFusionOffset<end && opt.[start+GenericFusionOffset]=='1', abcGenericFusion = start+GenericFusionOffset<end && opt.[start+GenericFusionOffset]=='1',
abc64Bits = start+Abc64BitsOffset<end && opt.[start+Abc64BitsOffset]=='1', abc64Bits = start+Abc64BitsOffset<end && opt.[start+Abc64BitsOffset]=='1',
abcDynamics = start+DynamicsBitsOffset<end && opt.[start+DynamicsBitsOffset]=='1', abcDynamics = start+DynamicsBitsOffset<end && opt.[start+DynamicsBitsOffset]=='1',
abcCallgraphProfile = start+CallgraphProfileOffset<end && opt.[start+CallgraphProfileOffset]=='1' abcCallgraphProfile = start+CallgraphProfileOffset<end && opt.[start+CallgraphProfileOffset]=='1',
abcTclFile = start+TclFileOffset<end && opt.[start+TclFileOffset]=='1'
}; };
ProjectABCFile :: !Int !String -> Bool; ProjectABCFile :: !Int !String -> Bool;
......
...@@ -1537,8 +1537,10 @@ check_module_options modname info=:{version,abcOptions} co project_compiler_opti ...@@ -1537,8 +1537,10 @@ check_module_options modname info=:{version,abcOptions} co project_compiler_opti
= incorrect_option modname "Fusion" = incorrect_option modname "Fusion"
| abcOptions.abcGenericFusion<>case co.fusion of FusionDefault -> project_compiler_options.pco_generic_fusion; _ -> False | abcOptions.abcGenericFusion<>case co.fusion of FusionDefault -> project_compiler_options.pco_generic_fusion; _ -> False
= incorrect_option modname "Generic Fusion" = incorrect_option modname "Generic Fusion"
| abcOptions.abcDynamics <> project_compiler_options.pco_dynamics | abcOptions.abcDynamics <> (project_compiler_options.pco_dynamics || project_compiler_options.pco_link_dynamic)
= incorrect_option modname "Dynamics" = incorrect_option modname "Dynamics"
| abcOptions.abcTclFile <> project_compiler_options.pco_link_dynamic
= incorrect_option modname "Dynamic Linking"
= (True,"") = (True,"")
where where
expectedDescriptors = project_compiler_options.pco_desc_exl || project_compiler_options.pco_link_dynamic || (project_compiler_options.pco_memory_profiling && (not co.neverMemoryProfile)) expectedDescriptors = project_compiler_options.pco_desc_exl || project_compiler_options.pco_link_dynamic || (project_compiler_options.pco_memory_profiling && (not co.neverMemoryProfile))
......
...@@ -478,7 +478,7 @@ MakeCompilerOptionsString :: !CompileOrCheckSyntax !ProjectCompilerOptions !Comp ...@@ -478,7 +478,7 @@ MakeCompilerOptionsString :: !CompileOrCheckSyntax !ProjectCompilerOptions !Comp
MakeCompilerOptionsString compileOrCheckSyntax MakeCompilerOptionsString compileOrCheckSyntax
{pco_memory_profiling,pco_time_profiling,pco_callgraph_profiling,pco_desc_exl,pco_generic_fusion,pco_dynamics,pco_link_dynamic} {pco_memory_profiling,pco_time_profiling,pco_callgraph_profiling,pco_desc_exl,pco_generic_fusion,pco_dynamics,pco_link_dynamic}
{neverMemoryProfile, neverTimeProfile,sa,gw,gc,listTypes,attr,reuseUniqueNodes,fusion} {neverMemoryProfile, neverTimeProfile,sa,gw,gc,listTypes,attr,reuseUniqueNodes,fusion}
= (add_dynamics_option (add_fusion_option (add_exl_option = (add_dynamics_options (add_fusion_option (add_exl_option
(checksyntax +++ timeProfileSwitch +++ callgraphProfileSwitch +++ memoryProfileSwitch +++ strictness +++ warnings +++ comments +++listtypes+++show_attr+++reuse) (checksyntax +++ timeProfileSwitch +++ callgraphProfileSwitch +++ memoryProfileSwitch +++ strictness +++ warnings +++ comments +++listtypes+++show_attr+++reuse)
))) +++" " ))) +++" "
where where
...@@ -531,7 +531,12 @@ where ...@@ -531,7 +531,12 @@ where
add_fusion_option s add_fusion_option s
= case fusion of FusionOn -> s+++" -fusion"; FusionDefault | pco_generic_fusion -> s+++" -generic_fusion"; _ -> s = case fusion of FusionOn -> s+++" -fusion"; FusionDefault | pco_generic_fusion -> s+++" -generic_fusion"; _ -> s
add_dynamics_option s = if (pco_dynamics || pco_link_dynamic) (s+++" -dynamics") s add_dynamics_options s
| pco_link_dynamic
= s+++" -tcl -dynamics"
| pco_dynamics
= s+++" -dynamics"
= s
/* Generates code for the given file: /* Generates code for the given file:
*/ */
......
Supports Markdown
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