Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
clean-and-itasks
clean-ide
Commits
ca2c9481
Verified
Commit
ca2c9481
authored
Nov 03, 2018
by
Camil Staps
Browse files
Add options for ABC optimisation, bytecode generation and bytecode linking
parent
ee702065
Changes
15
Hide whitespace changes
Inline
Side-by-side
BatchBuild/IdeState.dcl
View file @
ca2c9481
...
...
@@ -63,6 +63,9 @@ getCurrentSlibs :: !*GeneralSt -> (!(List String),!*GeneralSt)
getCurrentObjts
::
!*
GeneralSt
->
(!(
List
String
),!*
GeneralSt
)
getCurrentComp
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentCgen
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentAbcOpt
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentBCgen
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentBClink
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentLink
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentDynl
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentVers
::
!*
GeneralSt
->
(!
Int
,!*
GeneralSt
)
...
...
BatchBuild/IdeState.icl
View file @
ca2c9481
...
...
@@ -178,6 +178,21 @@ getCurrentCgen ps
#
(
ct
,
ps
)
=
accPLoc
(\
p
=:{
pm_targets
,
pm_curtarg
}->(
pm_targets
!!
pm_curtarg
,
p
))
ps
=
(
ct
.
target_cgen
,
ps
)
getCurrentAbcOpt
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentAbcOpt
ps
#
(
ct
,
ps
)
=
accPLoc
(\
p
=:{
pm_targets
,
pm_curtarg
}->(
pm_targets
!!
pm_curtarg
,
p
))
ps
=
(
ct
.
target_abcopt
,
ps
)
getCurrentBCgen
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentBCgen
ps
#
(
ct
,
ps
)
=
accPLoc
(\
p
=:{
pm_targets
,
pm_curtarg
}->(
pm_targets
!!
pm_curtarg
,
p
))
ps
=
(
ct
.
target_bcgen
,
ps
)
getCurrentBClink
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentBClink
ps
#
(
ct
,
ps
)
=
accPLoc
(\
p
=:{
pm_targets
,
pm_curtarg
}->(
pm_targets
!!
pm_curtarg
,
p
))
ps
=
(
ct
.
target_bclink
,
ps
)
getCurrentLink
::
!*
GeneralSt
->
(!
String
,!*
GeneralSt
)
getCurrentLink
ps
#
(
ct
,
ps
)
=
accPLoc
(\
p
=:{
pm_targets
,
pm_curtarg
}->(
pm_targets
!!
pm_curtarg
,
p
))
ps
...
...
Ide/IdeState.dcl
View file @
ca2c9481
...
...
@@ -179,6 +179,9 @@ getCurrentObjts :: !*(PSt *General) -> (!(List String),!*PSt *General)
getCurrentComp
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentCgen
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentAbcOpt
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentBCgen
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentBClink
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentLink
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentDynl
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentVers
::
!*(
PSt
*
General
)
->
(!
Int
,!*
PSt
*
General
)
...
...
Ide/IdeState.icl
View file @
ca2c9481
...
...
@@ -440,6 +440,21 @@ getCurrentCgen ps
#
(
ct
,
ps
)
=
accPLoc
(\
p
=:{
pm_targets
,
pm_curtarg
}->(
pm_targets
!!
pm_curtarg
,
p
))
ps
=
(
ct
.
target_cgen
,
ps
)
getCurrentAbcOpt
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentAbcOpt
ps
#
(
ct
,
ps
)
=
accPLoc
(\
p
=:{
pm_targets
,
pm_curtarg
}->(
pm_targets
!!
pm_curtarg
,
p
))
ps
=
(
ct
.
target_abcopt
,
ps
)
getCurrentBCgen
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentBCgen
ps
#
(
ct
,
ps
)
=
accPLoc
(\
p
=:{
pm_targets
,
pm_curtarg
}->(
pm_targets
!!
pm_curtarg
,
p
))
ps
=
(
ct
.
target_bcgen
,
ps
)
getCurrentBClink
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentBClink
ps
#
(
ct
,
ps
)
=
accPLoc
(\
p
=:{
pm_targets
,
pm_curtarg
}->(
pm_targets
!!
pm_curtarg
,
p
))
ps
=
(
ct
.
target_bclink
,
ps
)
getCurrentLink
::
!*(
PSt
*
General
)
->
(!
String
,!*
PSt
*
General
)
getCurrentLink
ps
#
(
ct
,
ps
)
=
accPLoc
(\
p
=:{
pm_targets
,
pm_curtarg
}->(
pm_targets
!!
pm_curtarg
,
p
))
ps
...
...
Pm/PmDriver.icl
View file @
ca2c9481
...
...
@@ -20,6 +20,8 @@ import PmAbcMagic,PmFileInfo,PmDirCache
import
Platform
from
StdLibMisc
import
::
Date
{..},
::
Time
{..}
import
System
.
Process
verboseInfo
verbose
info
ps
:==
verbi
verbose
info
ps
where
verbi
verbose
info
ps
...
...
@@ -813,6 +815,8 @@ step intr (DLink ds=:{ok, newpaths, fileinfo, libsinfo, modpaths, abccache, proj
#
ps
=
showInfo
line
ps
=
continue
False
newpaths
False
fileinfo
libsinfo
modpaths
project
intr
(
abccache
,
ps
)
#
ps
=
if
(
PR_GetByteCodePath
project
<>
""
)
(
ByteCodeLink
fileinfo
project
ps
)
ps
#
execpath
=
PR_GetExecPath
project
#
prj_path`
=
PR_GetRootDir
project
#
execpath
=
fulPath
app_path
prj_path`
execpath
...
...
@@ -1461,6 +1465,8 @@ GenCodeTheProjectModule :: !Bool !Bool !CodeGenerateAsmOrCode !ModuleDirAndName
GenCodeTheProjectModule
outofdate
sys
genAsmOrCode
mdn
abc_path
abccache
fileinfo
project
ps
#
module_name
=
mdn
.
mdn_name
#
(
proc
,
ps
)
=
getCurrentProc
ps
#
cgo
=
PR_GetCodeGenOptions
project
#
ps
=
if
cgo
.
generate_bytecode
(
ByteCodeGen
mdn
abc_path
project
ps
)
ps
#
((
info
,
abccache
,
fileinfo
),
ps
)
=
FI_GetFileInfo
proc
mdn
abccache
fileinfo
ps
|
not
outofdate
=
(
ps
,
abccache
,
fileinfo
,
project
,
True
,
info
.
objpath
)
...
...
@@ -1472,7 +1478,6 @@ GenCodeTheProjectModule outofdate sys genAsmOrCode mdn abc_path abccache fileinf
ao
=
PR_GetApplicationOptions
project
timeprofile
=
ao
.
profiling
&&
(
not
neverTimeProfile
)
obj_path
=
ModuleDirAndNameToObjSystemPathname
proc
mdn
cgo
=
PR_GetCodeGenOptions
project
#
(
obj_path
,
res
,
compiler_process_ids
,
ps
)
=
CodeGen
cgen
use_compiler_process_ids
updateErrorWindow
genAsmOrCode
abc_path
obj_path
timeprofile
cgo
proc
ao
startupdir
compiler_process_ids
ps
#
ps
=
setCompilerProcessIds
compiler_process_ids
ps
|
genAsmOrCode
==
CodeGeneration
&&
res
...
...
@@ -1652,3 +1657,52 @@ where
#
(
startupdir
,
ps
)
=
getStup
ps
#
(_,
ps
)
=
ClearCompilerCache
ccstring
startupdir
ps
->
ps
//-- Bytecode generation and linking
ByteCodeGen
::
!
ModuleDirAndName
!
Pathname
!
Project
!*
GeneralSt
->
*
GeneralSt
ByteCodeGen
mdn
abc_path
project
ps
#
(
startupdir
,
ps
)
=
getStup
ps
(
abcopt
,
ps
)
=
getCurrentAbcOpt
ps
abcopt
=
startupdir
+++
DirSeparatorString
+++
abcopt
(
bcgen
,
ps
)
=
getCurrentBCgen
ps
bcgen
=
startupdir
+++
DirSeparatorString
+++
bcgen
#
abcopt_path
=
abc_path
%
(
0
,
size
abc_path
-4
)
+++
"opt.abc"
bc_path
=
abc_path
%
(
0
,
size
abc_path
-4
)
+++
"bc"
#
ps
=
showInfo
(
Level2
(
"Optimising ABC for '"
+++
mdn
.
mdn_name
+++
"'."
))
ps
#
(
h
,
w
)
=
runProcess
abcopt
[
abc_path
,
"-o"
,
abcopt_path
]
Nothing
ps
.
gst_world
|
isError
h
=
abort
"failed to execute the ABC optimiser
\n
"
#
(
r
,
w
)
=
waitForProcess
(
fromOk
h
)
w
|
isError
r
=
abort
"failed to wait for the ABC optimiser
\n
"
|
fromOk
r
<>
0
=
abort
(
"ABC optimiser failed with non-zero exit code "
+++
toString
(
fromOk
r
)
+++
"
\n
"
)
#
ps
&
gst_world
=
w
#
ps
=
showInfo
(
Level2
(
"Generating bytecode for '"
+++
mdn
.
mdn_name
+++
"'."
))
ps
#
(
h
,
w
)
=
runProcess
bcgen
[
abcopt_path
,
"-o"
,
bc_path
]
Nothing
ps
.
gst_world
|
isError
h
=
abort
"failed to execute the bytecode generator
\n
"
#
(
r
,
w
)
=
waitForProcess
(
fromOk
h
)
w
|
isError
r
=
abort
"failed to wait for the bytecode generator
\n
"
|
fromOk
r
<>
0
=
abort
(
"bytecode generator failed with non-zero exit code "
+++
toString
(
fromOk
r
)
+++
"
\n
"
)
#
ps
&
gst_world
=
w
=
ps
ByteCodeLink
::
!
FileInfoCache
!
Project
!*
GeneralSt
->
*
GeneralSt
ByteCodeLink
fileinfo
project
ps
#
(
startupdir
,
ps
)
=
getStup
ps
(
bclink
,
ps
)
=
getCurrentBClink
ps
bclink
=
startupdir
+++
DirSeparatorString
+++
bclink
#
bcpath
=
fulPath
startupdir
(
PR_GetRootDir
project
)
(
PR_GetByteCodePath
project
)
(
abcpaths
,
fileinfo
)
=
FI_GetAbcFiles
fileinfo
abcpaths
=
[
p
%
(
0
,
size
p
-4
)
+++
"bc"
\\
p
<|-
abcpaths
]
#
ps
=
showInfo
(
Level2
(
"Linking bytecode for '"
+++
RemovePath
bcpath
+++
"'"
))
ps
#
(
h
,
w
)
=
runProcess
bclink
(
abcpaths
++
[
"-o"
,
bcpath
])
Nothing
ps
.
gst_world
|
isError
h
=
abort
"failed to execute the bytecode linker
\n
"
#
(
r
,
w
)
=
waitForProcess
(
fromOk
h
)
w
|
isError
r
=
abort
"failed to wait for the bytecode linker
\n
"
|
fromOk
r
<>
0
=
abort
(
"bytecode linker failed with non-zero exit code "
+++
toString
(
fromOk
r
)
+++
"
\n
"
)
#
ps
&
gst_world
=
w
=
ps
Pm/PmEnvironment.dcl
View file @
ca2c9481
...
...
@@ -14,6 +14,9 @@ EnvsFileName :== "IDEEnvs"
,
target_stat
::
!
List
String
// static libraries
,
target_comp
::
!
String
// compiler
,
target_cgen
::
!
String
// code generator
,
target_abcopt
::
!
String
// abc optimiser
,
target_bcgen
::
!
String
// bytecode generator
,
target_bclink
::
!
String
// bytecode linker
,
target_link
::
!
String
// static/eager linker
,
target_dynl
::
!
String
// dynamic linker
,
target_vers
::
!
Int
// abc version
...
...
Pm/PmEnvironment.icl
View file @
ca2c9481
...
...
@@ -27,6 +27,9 @@ t_StdEnv
,
target_stat
::
!
List
String
// static libraries
,
target_comp
::
!
String
// compiler
,
target_cgen
::
!
String
// code generator
,
target_abcopt
::
!
String
// abc optimiser
,
target_bcgen
::
!
String
// bytecode generator
,
target_bclink
::
!
String
// bytecode linker
,
target_link
::
!
String
// static/eager linker
,
target_dynl
::
!
String
// dynamic linker
,
target_vers
::
!
Int
// abc version
...
...
@@ -129,6 +132,9 @@ emptyTarget =
,
target_stat
=
Nil
,
target_comp
=
""
,
target_cgen
=
""
,
target_abcopt
=
""
,
target_bcgen
=
""
,
target_bclink
=
""
,
target_link
=
""
,
target_dynl
=
""
,
target_vers
=
42
...
...
@@ -159,6 +165,9 @@ TargetTable =
,
ListOption
"EnvironmentStaticLibs"
(
PathOption
)
""
(\
a
->
a
.
target_stat
)
(\
v
a
->{
a
&
target_stat
=
v
})
,
SimpleOption
"EnvironmentCompiler"
(\
a
->
a
.
target_comp
)
(\
v
a
->{
a
&
target_comp
=
v
})
,
SimpleOption
"EnvironmentCodeGen"
(\
a
->
a
.
target_cgen
)
(\
v
a
->{
a
&
target_cgen
=
v
})
,
SimpleOption
"EnvironmentABCOptimise"
(\
a
->
a
.
target_abcopt
)
(\
v
a
->{
a
&
target_abcopt
=
v
})
,
SimpleOption
"EnvironmentByteCodeGen"
(\
a
->
a
.
target_bcgen
)
(\
v
a
->{
a
&
target_bcgen
=
v
})
,
SimpleOption
"EnvironmentByteCodeLink"
(\
a
->
a
.
target_bclink
)
(\
v
a
->{
a
&
target_bclink
=
v
})
,
SimpleOption
"EnvironmentLinker"
(\
a
->
a
.
target_link
)
(\
v
a
->{
a
&
target_link
=
v
})
,
SimpleOption
"EnvironmentDynLink"
(\
a
->
a
.
target_dynl
)
(\
v
a
->{
a
&
target_dynl
=
v
})
,
SimpleOption
"EnvironmentVersion"
(\
a
->
toString
a
.
target_vers
)
(\
v
a
->{
a
&
target_vers
=
toInt
v
})
...
...
@@ -196,6 +205,9 @@ t_StdEnv20
,
target_stat
=
Nil
,
target_comp
=
compiler_and_linker_directory
+++
DirSeparatorString
+++
IF_WINDOWS
"CleanCompiler.exe"
"cocl"
,
target_cgen
=
compiler_and_linker_directory
+++
DirSeparatorString
+++
IF_WINDOWS
"CodeGenerator.exe"
"cg"
,
target_abcopt
=
compiler_and_linker_directory
+++
DirSeparatorString
+++
IF_WINDOWS
"ABCOptimiser.exe"
"abcopt"
,
target_bcgen
=
compiler_and_linker_directory
+++
DirSeparatorString
+++
IF_WINDOWS
"ByteCodeGenerator.exe"
"bcgen"
,
target_bclink
=
compiler_and_linker_directory
+++
DirSeparatorString
+++
IF_WINDOWS
"ByteCodeLinker.exe"
"bclink"
,
target_link
=
IF_MACOSX
"/usr/bin/gcc"
(
compiler_and_linker_directory
+++
DirSeparatorString
+++
IF_WINDOWS
"StaticLinker.exe"
"linker"
)
,
target_dynl
=
"Tools"
+++
DirSeparatorString
+++
"Dynamics"
+++
DirSeparatorString
+++
"DynamicLinker.exe"
,
target_vers
=
920
...
...
@@ -234,4 +246,4 @@ where
libs`
=
symAppPaths
stup
libs
objs`
=
symAppPaths
stup
objs
stat`
=
symAppPaths
stup
stat
\ No newline at end of file
Pm/PmFileInfo.dcl
View file @
ca2c9481
...
...
@@ -25,6 +25,7 @@ FI_GetFileInfo :: !Processor !ModuleDirAndName !ABCCache !FileInfoCache !*env -
FI_UpdateAbcDate
::
!
Modulename
!
Pathname
!
Bool
!
FileInfoCache
!*
Files
->
((!
DATE
,!
FileInfoCache
),
!*
Files
)
FI_UpdateObjDate
::
!
Modulename
!
Pathname
!
FileInfoCache
!*
Files
->
(!
FileInfoCache
,
!*
Files
)
FI_UpdateFileInfo
::
!
Modulename
!(
FileInfo
->
FileInfo
)
!
FileInfoCache
->
FileInfoCache
FI_GetAbcFiles
::
!
FileInfoCache
->
(!
List
Pathname
,
!
FileInfoCache
)
FI_GetCleanModules
::
!
Pathname
!
StaticLibInfo
!
FileInfoCache
->
(!
List
Pathname
,
!
FileInfoCache
)
YoungestObj
::
!
DATE
!
FileInfoCache
->
DATE
Pm/PmFileInfo.icl
View file @
ca2c9481
...
...
@@ -88,6 +88,11 @@ FI_UpdateObjDate module_name objPath fileInfo files
fileInfo
=
FI_UpdateFileInfo
module_name
update
fileInfo
=
(
fileInfo
,
files
)
FI_GetAbcFiles
::
!
FileInfoCache
->
(!
List
Pathname
,
!
FileInfoCache
)
FI_GetAbcFiles
fileinfo
#
abcpaths
=
Map
(\{
abcpath
}->
abcpath
)
fileinfo
=
(
abcpaths
,
fileinfo
)
FI_GetCleanModules
::
!
Pathname
!
StaticLibInfo
!
FileInfoCache
->
(!
List
Pathname
,
!
FileInfoCache
)
FI_GetCleanModules
system_obj_path
libsinfo
fileinfo
#
clmodpaths
=
Map
(\{
objpath
}->
objpath
)
fileinfo
...
...
Pm/PmFiles.dcl
View file @
ca2c9481
...
...
@@ -28,6 +28,7 @@ ProjectFileVersion :== "1.4"
,
pg_staticLibInfo
::
StaticLibInfo
,
pg_target
::
String
// specify used environment
,
pg_execpath
::
String
// move to ApplicationOptions
,
pg_bytecode_path
::
String
,
pg_dynamic
::
!
ProjectDynamicInfo
,
pg_root_directory
::
!
String
,
pg_precompile
::
!
Maybe
String
// experiment: move to LinkOptions
...
...
Pm/PmFiles.icl
View file @
ca2c9481
...
...
@@ -20,6 +20,7 @@ ProjectFileVersion :== "1.4"
,
pg_staticLibInfo
::
StaticLibInfo
,
pg_target
::
String
,
pg_execpath
::
String
,
pg_bytecode_path
::
String
,
pg_dynamic
::
!
ProjectDynamicInfo
,
pg_root_directory
::
!
String
,
pg_precompile
::
!
Maybe
String
...
...
@@ -104,6 +105,7 @@ ProjectGlobalOptionsTable =
{
project_root_option
,
target_option
,
SimpleWithStringConversionOption
convert_exec_path_separators_and_extension
"Exec"
(\
a
->
a
.
pg_execpath
)
(\
v
a
->{
a
&
pg_execpath
=
v
})
,
SimpleWithStringConversionOption
convert_path_separators
"ByteCode"
(\
a
->
a
.
pg_bytecode_path
)
(\
v
a
->{
a
&
pg_bytecode_path
=
v
})
,
code_gen_option
,
application_option
,
link_option
...
...
@@ -297,9 +299,10 @@ CodeGenOptionsTable :: OptionsTable CodeGenOptions
CodeGenOptionsTable
=
{
SimpleOption
"CheckStacks"
(\
a
->
a
.
cs
)
(\
v
a
->{
a
&
cs
=
v
}),
SimpleOption
"CheckIndexes"
(\
a
->
a
.
ci
)
(\
v
a
->{
a
&
ci
=
v
})
SimpleOption
"CheckIndexes"
(\
a
->
a
.
ci
)
(\
v
a
->{
a
&
ci
=
v
})
,
// SimpleOption "KeepABC" (\a->a.kaf) (\v a->{a & kaf=v}),
// SimpleOption "TargetProcessor" (\a->a.tp) (\v a->{a & tp=v})
SimpleOption
"GenerateByteCode"
(\
a
->
a
.
generate_bytecode
)
(\
v
a
->{
a
&
generate_bytecode
=
v
})
}
instance
fromString
Int
...
...
Pm/PmProject.dcl
View file @
ca2c9481
...
...
@@ -107,6 +107,8 @@ PR_SetTarget :: !String !Project -> Project
PR_GetExecPath
::
!
Project
->
String
PR_SetExecPath
::
!
String
!
Project
->
Project
PR_GetByteCodePath
::
!
Project
->
String
SL_Add
::
!
String
!
StaticLibInfo
->
StaticLibInfo
SL_Rem
::
![
String
]
!
String
!
String
!
StaticLibInfo
->
StaticLibInfo
SL_Libs
::
!
StaticLibInfo
->
List
String
...
...
Pm/PmProject.icl
View file @
ca2c9481
...
...
@@ -41,6 +41,7 @@ Unmodified :== False;
,
relative_root_directory
::
!
String
// string of '.'s, relative to .prj file
,
root_directory
::
!
String
,
execpath
::
!
String
// move to app_opts
,
bytecode_path
::
!
String
,
prec
::
!
Maybe
String
// " (precompile command)
,
posl
::
!
Maybe
String
// " (postlink command)
}
...
...
@@ -76,6 +77,7 @@ PR_InitProject =
,
root_directory
=
""
,
prec
=
Nothing
,
posl
=
Nothing
,
bytecode_path
=
EmptyPathname
}
PR_GetExecPath
::
!
Project
->
String
...
...
@@ -84,6 +86,9 @@ PR_GetExecPath {execpath} = execpath
PR_SetExecPath
::
!
String
!
Project
->
Project
PR_SetExecPath
pth
prj
=
{
prj
&
execpath
=
pth
}
PR_GetByteCodePath
::
!
Project
->
String
PR_GetByteCodePath
{
bytecode_path
}
=
bytecode_path
DefStaticLibInfo
=
{
sLibs
=
Nil
,
sDcls
=
Nil
...
...
@@ -589,7 +594,7 @@ SetProject applicationDir project_file_dir
{
pg_codegen
,
pg_application
,
pg_projectPaths
,
pg_link
,
pg_mainModuleInfo
={
name
,
info
},
pg_otherModules
,
pg_target
,
pg_staticLibInfo
,
pg_execpath
,
pg_dynamic
,
pg_root_directory
,
pg_precompile
,
pg_postlink
,
pg_root_directory
,
pg_precompile
,
pg_postlink
,
pg_bytecode_path
}
#
project_dir
=
make_project_dir
(
size
pg_root_directory
)
project_file_dir
#
paths
=
ExpandPaths
applicationDir
project_dir
pg_projectPaths
...
...
@@ -600,13 +605,14 @@ SetProject applicationDir project_file_dir
#
project
=
PR_SetStaticLibsInfo
staticLibInfo
project
#
project
=
PR_SetTarget
pg_target
project
#
exepath
=
ExpandPath
applicationDir
project_dir
pg_execpath
#
bytecode_path
=
if
(
pg_bytecode_path
==
""
)
""
(
ExpandPath
applicationDir
project_dir
pg_bytecode_path
)
#
project
=
PR_SetExecPath
exepath
project
// default of used appopts in exe are ok isn't right :-(
#
pg_postlink
=
case
pg_postlink
of
Just
post_link
->
Just
(
ExpandPath
applicationDir
project_dir
post_link
)
Nothing
->
Nothing
=
{
project
&
relative_root_directory
=
pg_root_directory
,
root_directory
=
project_dir
,
dynamic_info
=
pg_dynamic
,
prec
=
pg_precompile
,
posl
=
pg_postlink
}
prec
=
pg_precompile
,
posl
=
pg_postlink
,
bytecode_path
=
bytecode_path
}
where
addModules
Nil
project_dir
project
=
project
...
...
@@ -636,6 +642,7 @@ GetProject applicationDir project
,
pg_staticLibInfo
=
staticLibInfo
,
pg_target
=
target
,
pg_execpath
=
exepath
project_dir
,
pg_bytecode_path
=
bytecodepath
project_dir
,
pg_dynamic
=
project
.
dynamic_info
,
pg_root_directory
=
project
.
relative_root_directory
,
pg_precompile
=
project
.
prec
...
...
@@ -645,6 +652,9 @@ where
exepath
project_dir
#
xp
=
PR_GetExecPath
project
=
symPath
applicationDir
project_dir
xp
bytecodepath
project_dir
#
bcp
=
PR_GetByteCodePath
project
=
if
(
bcp
==
""
)
""
(
symPath
applicationDir
project_dir
bcp
)
getModule
project_dir
name
#
info
=
PR_GetModuleInfo
name
project
...
...
Pm/PmTypes.dcl
View file @
ca2c9481
...
...
@@ -99,6 +99,7 @@ instance == EditOptions
,
ci
::
!
Bool
// generate index checks
// , kaf :: !Bool // keep abc-files
// , tp :: !Processor
,
generate_bytecode
::
!
Bool
// generate ABC bytecode
}
instance
==
CodeGenOptions
...
...
Pm/PmTypes.icl
View file @
ca2c9481
...
...
@@ -283,6 +283,7 @@ where
,
ci
::
!
Bool
// , kaf :: !Bool
// , tp :: !Processor
,
generate_bytecode
::
!
Bool
// generate ABC bytecode
}
instance
==
CodeGenOptions
...
...
@@ -290,12 +291,14 @@ where
(==)
::
!
CodeGenOptions
!
CodeGenOptions
->
Bool
(==)
cg1
cg2
=
cg1
.
cs
==
cg2
.
cs
&&
cg1
.
ci
==
cg2
.
ci
cg1
.
ci
==
cg2
.
ci
&&
cg1
.
generate_bytecode
==
cg2
.
generate_bytecode
DefCodeGenOptions
::
CodeGenOptions
;
DefCodeGenOptions
=
{
cs
=
False
,
ci
=
True
,
generate_bytecode
=
False
}
// The Application Options: default settings for the application.
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment