Files
sibo-playground/code/SIBOSDK/sys/tsprj.txt
T
2026-07-06 18:01:36 +01:00

618 lines
17 KiB
Plaintext

! Project Predefined
!! predefine TopSpeed compilers
!if mod
#declare_compiler mod=
'#set make=%%remake_jpi
#if %%make #then #rundll TSMOD %%src %%obj #endif
#pragma link(%%obj)
#set tsm2=on'
!end
!if pas
#declare_compiler pas=
'#set make=%%remake_jpi
#if %%make #then #rundll TSPAS %%src %%obj #endif
#pragma link(%%obj)
#set tspas=on'
#declare_compiler plg=
'#set make=%%remake_jpi
#if %%make #then #rundll TSPAS_LG %%src %%obj #endif
#pragma link(%%obj)
#set tspas=on'
!end
!if cpp
#declare_compiler cpp=
'#set make=%%remake_jpi
#if %%make #then
#rundll TSCPP %%src %%obj
#if %%system=epoc #then
#run "ecppfx -s %%obj" no_window no_abort
#endif
#endif
#pragma link_option(decode=>on)
#pragma link(%%obj)
#set tsc=on #set tscpp=on'
!! This declaration is overriden by the one below if TopSpeed C is installed
#declare_compiler c=
'#set make=%%remake_jpi
#if %%make #then #rundll TSCPP %%src %%obj #endif
#pragma link(%%obj)
#set tsc=on'
!end
!if c
#declare_compiler c=
'#set make=%%remake_jpi
#if %%make #then #rundll TSC %%src %%obj #endif
#pragma link(%%obj)
#set tsc=on'
!end
!if asm
#declare_compiler a=
'#set make=%%remake_jpi
#if %%make #then #rundll TSASM %%src %%obj #endif
#pragma link(%%obj)'
!end
!if masm
#declare_compiler asm=
'#set make=%%remake
#if %%make #then
#edit save %%src
#run "masm %%src,%%obj; >masmtmp.$$$" no_window no_abort
#file adderrors masmtmp.$$$
#file delete masmtmp.$$$
#endif
#pragma link(%%obj)'
!end
#declare_compiler rc=
'#split %%obj
#set obj = %%name.res
#set make=%%remake
#if %%make #then
#edit save %%src
#run "tsrc %%src >rctmp.$$$" no_window no_abort
#file adderrors rctmp.$$$
#file delete rctmp.$$$
#endif
#pragma link(%%obj)'
#declare_compiler cat=
'#split %%src
#set make=%%remake
#if %%make #or %%name.g #older %%name.cat #then
#run "ctran %%name -c -s -v -l -e..\include\ -x..\include\ -g..\include\" no_window no_abort
#rundll TSC %%name.c %%name.obj
#run "ecobj %%name.obj" no_window no_abort
#endif
#pragma link(%%name.obj)'
#if %action%=compile #then
!! declarations to allow compilation of include files
!if mod
#declare_compiler def='#rundll TSMOD %%src %%obj'
!end
!if cpp
#declare_compiler hpp='#rundll TSCPP %%src %%obj'
#declare_compiler h='#rundll TSCPP %%src %%obj'
!end
!if C
#declare_compiler h='#rundll TSC %%src %%obj'
!end
#endif
!! End of compiler predefinition section
!! =========================================================================
! Project Model
!! The following lines are executed whenever the #model command is used
!! in a project file.
#pragma call(near_call=>on,same_ds=>on,ds_eq_ss=>on,overlay=>off)
#pragma data(far_ext=>off,near_ptr=>on,threshold=>65535,const_in_code=>off,ss_in_dgroup=>on,ds_dynamic=>off)
#pragma define(_fdata=>off,_fcall=>off,_fptr=>off,_mthread=>off)
#pragma link_option(map=>on,case=>on,pack=>on,oldexe=>off)
#pragma define(M_I86SM=>off,M_I86CM=>off,M_I86MM=>off,M_I86LM=>off,M_I86XM=>off,M_I86TM=>off,M_I86MTM=>off,M_I86OM=>off,M_I86DM=>off)
!! PSION SIBO change
#pragma optimize(speed=>off)
#if %system=epoc #then
#if #not %model=small #then
#error "ERROR - must use small model for epoc"
#endif
#if #not %filetype=img #then
#if #not %filetype=dyl #then
#error "ERROR - illegal parameter in #system: %filetype"
#endif
#endif
#if "%epocinit"="" #then
#set epocinit=iclib
#endif
#endif
!! end of PSION SIBO change
#if "%system"="" #then
#error "#model not preceded by #system"
!if smallmodel
#elsif %model=small #then
#set M=S
#pragma define(M_I86SM=>on)
!end
!if compactmodel
#elsif %model=compact #then
#set M=C
#pragma call(ds_eq_ss=>off)
#pragma data(near_ptr=>off,threshold=>32767,ss_in_dgroup=>off)
#pragma define(_fptr=>on)
#pragma define(M_I86CM=>on)
!end
!if mediummodel
#elsif %model=medium #then
#set M=M
#pragma call(near_call=>off)
#pragma define(_fcall=>on)
#pragma define(M_I86MM=>on)
!end
!if largemodel
#elsif %model=large #then
#set M=L
#pragma call(near_call=>off,ds_eq_ss=>off),data(near_ptr=>off,threshold=>32767,ss_in_dgroup=>off)
#pragma define(_fcall=>on,_fptr=>on)
#pragma define(M_I86LM=>on)
!end
!if xlargemodel
#elsif %model=xlarge #then
#if #not %system=win #then
#set M=X
#pragma call(near_call=>off,same_ds=>off,ds_eq_ss=>off),data(far_ext=>on,near_ptr=>off,const_in_code=>on,ss_in_dgroup=>off,ds_dynamic=>on)
#pragma define(_fcall=>on, _fdata=>on,_fptr=>on)
#pragma define(M_I86XM=>on)
#else
#error "Extra-large model not available for Windows programs"
#endif
!end
!if mthreadmodel
#elsif %model=mthread #then
#if #not %system=win #then
#set M=T
#pragma call(near_call=>off,same_ds=>off,ds_eq_ss=>off),data(far_ext=>on,near_ptr=>off,const_in_code=>on,ss_in_dgroup=>off,ds_dynamic=>on)
#pragma define(_fcall=>on, _fdata=>on,_fptr=>on,_mthread=>on)
#pragma define(M_I86TM=>on,M_I86MTM=>on)
#else
#error "Multi-thread model not available for Windows programs"
#endif
!end
!if overlaymodel
#elsif %model=overlay #then
#if %system=dos #then
#set M=O
#pragma call(near_call=>off,same_ds=>off,overlay=>on,ds_eq_ss=>off),data(far_ext=>on,near_ptr=>off,const_in_code=>off,ss_in_dgroup=>off,ds_dynamic=>on)
#pragma define(_fcall=>on,_fdata=>on,_fptr=>on,_mthread=>on)
#pragma define(M_I86OM=>on)
#else
#error "Overlay model not available for %system programs"
#endif
!end
!if dynalinkmodel
#elsif %model=dynalink #then
#if #not %system=win #then
#set M=D
#pragma call(near_call=>off,same_ds=>off,ds_eq_ss=>off),data(far_ext=>on,near_ptr=>off,ss_in_dgroup=>off,ds_dynamic=>on)
#if %system=dos #then
#pragma call(overlay=>on)
#else
#pragma data(const_in_code=>on)
#endif
#pragma define(_fcall=>on,_fdata=>on,_fptr=>on,_mthread=>on)
#pragma define(M_I86DM=>on)
#pragma link_option(smart_method=>off)
#else
#error "Dynalink model not available for Windows programs"
#endif
!end
#else
#error "Unrecognized argument %model"
#endif
#if "%jpicall"="" #then #set jpicall=jpi #endif
#if %jpicall=jpi #then
#pragma call(reg_saved=>(ax,bx,cx,dx,si,di,ds,st1,st2))
#pragma call(reg_param=>(ax,bx,cx,dx,st0,st6,st5,st4,st3))
#pragma call(reg_return=>(ax,dx,st0))
#pragma call(standard_conv=>off,standard_float=>off,opt_var_arg=>on)
#if %model=overlay #or (%model=dynalink #and %system=dos) #then
#pragma call(opt_var_arg=>off)
#endif
#set C=_
#pragma define(_jpicall=>on)
#elsif %jpicall=stack #then
#pragma call(reg_saved=>(si,di,ds,st1,st2))
#pragma call(reg_param=>())
#pragma call(reg_return=>(ax,dx))
#pragma call(standard_conv=>on,standard_float=>on,opt_var_arg=>off)
#set C=F
#pragma define(_jpicall=>off)
#else
#error "Unrecognized argument %jpicall"
#endif
#if %system=win #then
#set O=W
#pragma link_option(pack=>off,windows=>on),call(windows=>on)
#elsif %system=dos #then
#set O=R
#pragma link_option(oldexe=>on,pack=>off),call(windows=>off)
#pragma optimize(cpu=>86)
#elsif %system=os2 #then
#set O=P
#pragma optimize(cpu=>286),call(windows=>off)
!! PSION SIBO change
#elsif %system=epoc #then
#set O=R
#pragma link_option(case=>on,oldexe=>on,pack=>off)
#pragma optimize(cpu=>86)
#pragma data(no_far_data=>on)
#pragma define(EPOC=>1)
#if "%epocinit"="iclib" #then
#pragma data(stack_size=>8192)
#elsif "%epocinit"="iclib4" #then
#pragma data(stack_size=>4096)
#elsif "%epocinit"="iclib2" #then
#pragma data(stack_size=>2048)
#elsif "%epocinit"="iplib8" #then
#pragma data(stack_size=>8192)
#elsif "%epocinit"="iplib" #then
#pragma data(stack_size=>4096)
#elsif "%epocinit"="iplib2" #then
#pragma data(stack_size=>2048)
#else
#error "Unknown epocinit: %epocinit"
#endif
!! end of PSION SIBO change
#else
#error "Unknown argument to #system: %system"
#endif
!! defines used by library source files
!! you may wish to disable these in order to share OS2/DOS object files
!! _DLL may not be disabled
#pragma define(_ENV=>off,_WINDOWS=>off,_DLL=>off,_WINDLL=>off,_OVL=>off,_OS2=>off,__OS2__=>off,__MSDOS__=>off)
#if %system=os2 #then #pragma define(__OS2__=>on,_OS2=>on) #endif
#if %system=dos #then #pragma define(__MSDOS__=>on) #endif
#if %system=win #then #pragma define(_WINDOWS=>on) #endif
#if %model=overlay #then #pragma define(_OVL=>on) #endif
#if %model=dynalink #then #pragma define(_DLL=>on) #endif
!! End of Project model section
!! =========================================================================
! Project Link
!! The following lines are executed whenever a #link command is executed in
!! a project file
#autocompile
!! Calculate lfiletype - the type of file being made for this #link only
!! Default is the filetype specified by #system (%filetype)
#if "%filetype"="" #then
!! PSION SIBO change
#if %system=epoc #then
#set filetype=img
#else
#set filetype=exe
#endif
!! end of PSION SIBO change
#endif
#split %link_arg
#if "%ext"="" #then
#set lfiletype_=%filetype
#set ext=%filetype
#elsif (%ext=exe) #or (%ext=dll) #or (%ext=lib) #then
#set lfiletype_=%ext
#else
#set lfiletype_=%filetype
#endif
!! PSION SIBO change
#if %system=epoc #then
#if %filetype=img #then
#set epoctype=t1
#elsif %filetype=dyl #then
#set epoctype=t4
#endif
#endif
!! end of PSION SIBO change
!! Calculate any additional libraries or object files that need to be linked
#if #not %lfiletype_=lib #then
#if %system=win #then
#if %lfiletype_=dll #then
#compile initwdll.a
#pragma linkfirst(initwdll.obj)
#elsif %filetype=exe #then
#if "%tsm2" #or "%tspas" #then
#compile initmwin.a
#pragma linkfirst(initmwin.obj)
#else
#compile initwin.a
#pragma linkfirst(initwin.obj)
#endif
#else
#error "Unknown argument to #system: %filetype"
#endif
#else
#if %lfiletype_=dll #then
#pragma linkfirst(initdll.obj)
#elsif %lfiletype_=exe #then
#if (#not ("%tsc" #or "%tscpp")) #and (%system = dos)
#and (("%model"=xlarge) #or ("%model"=mthread)) #then
#pragma linkfirst(initnew.obj)
#elsif "%pm_api" #and (%system=os2) #then
#pragma link_option(pm=>on,non_pm=>off)
#pragma linkfirst(initpm.obj)
!! PSION SIBO change
#elsif %system=epoc #then
#if %filetype=img #then
#pragma linkfirst(%epocinit.obj)
#else
#pragma linkfirst(icat.obj)
#endif
!! end of PSION SIBO change
#else
#pragma linkfirst(initexe.obj)
#endif
#if (%system=os2) #then
#if "%pm_compat" #then
#pragma link_option(pm=>on,non_pm=>on)
#elsif "%pm_noncompat" #then
#pragma link_option(pm=>off,non_pm=>on)
#endif
#endif
#else
!! PSION SIBO change
#if %system=epoc #then
#if %filetype=img #then
#pragma linkfirst(%epocinit.obj)
#else
#pragma linkfirst(icat.obj)
#endif
#else
#error "Unknown argument to #system: %filetype"
#endif
!! end of PSION SIBO change
#endif
#endif
!! calculate jpilib_
#set prefix_="%O%%M%%C%"
#if (%lfiletype_=dll) #and (%system=win) #then
#set jpilib_="%prefix_%comd.lib"
#else
#set jpilib_="%prefix_%com.lib"
#endif
#if "%tsc" #then
#set jpilib_="%jpilib_,%prefix_%clib.lib"
#endif
#if "%tscpp" #then
#if %model=dynalink #then
#set CPPprefix_="%O%%M%%C%"
#else
#set CPPprefix_="C%M%%C%"
#endif
#set jpilib_="%jpilib_,%CPPprefix_%slib.lib"
#if "%usertool" #then
#set jpilib_="%jpilib_,%CPPprefix_%rtool.lib"
#endif
#if "%usermath" #then
#set jpilib_="%jpilib_,%CPPprefix_%rmath.lib"
#endif
#endif
#if "%tsm2" #then
#set jpilib_="%jpilib_,%prefix_%m2.lib"
#if "%tsc" #then
#set jpilib_="%jpilib_, %prefix_%mlibc.lib"
#if "%cwindow"=jpi #then
#set jpilib_="%jpilib_, %prefix_%wind.lib"
#endif
#else
#set jpilib_="%jpilib_, %prefix_%mlib.lib"
#endif
#endif
#if "%tspas" #then
#if %model=dynalink #then
#if %tsc #then
#set jpilib_="%jpilib_,%prefix_%pasc.lib"
#elsif %tsm2 #then
#set jpilib_="%jpilib_,%prefix_%pasm.lib"
#else
#set jpilib_="%jpilib_,%prefix_%pas.lib"
#endif
#else
#set jpilib_="%jpilib_,%prefix_%pas.lib"
#endif
#if "%tsc" #then
#set jpilib_="%jpilib_,%prefix_%mlibc.lib"
#if "%cwindow"=jpi #then
#set jpilib_="%jpilib_,%prefix_%wind.lib"
#endif
#elsif "%tsm2" #then
#set jpilib_="%jpilib_,%prefix_%mlib.lib"
#else
#set jpilib_="%jpilib_,%prefix_%plib.lib"
#endif
#pragma link_option(case=>off)
#endif
#if "%cgraph"=jpi #then
#set jpilib_="%jpilib_,%prefix_%graph.lib"
#elsif "%cgraph"=borland #then
#set jpilib_="%jpilib_,graphics.lib"
#endif
#if ("%cwindow"=jpi) #and #not(("%tsm2") #or("%tspas")) #then
#set jpilib_="%jpilib_,%prefix_%wind.lib"
#elsif "%cwindow"=borland #then
#set jpilib_="%jpilib_,%prefix_%borw.lib"
#endif
#if "%system"=os2 #then
#if "%pm_api" #then
#set jpilib_="%jpilib_,pmjpi.lib,os2jpi.lib"
#else
#set jpilib_="%jpilib_,os2jpi.lib"
#endif
#elsif (%model=overlay) #or (%model=dynalink) #then
#set jpilib_="%jpilib_,loader.lib"
#endif
!! PSION SIBO change
#if %system=epoc #then
#if "%epocinit"="iclib" #or "%epocinit"="iclib4" #or "%epocinit"="iclib2" #then
#if %filetype=img #then
#pragma link(clib.lib)
#endif
#endif
#set jpilib_="plib.lib"
#endif
!! end of PSION SIBO change
#pragma link(%jpilib_)
!! PSION SIBO change
#if %system=epoc #then
#pragma link(wlib.lib)
#pragma link(rlib.lib)
#endif
!! end of PSION SIBO change
#endif
!! Now do the link
#if (%ext=dll) #then
#pragma link_option(smart_method=>off)
#if (%system=dos) #then
#if #not ((%model=overlay) #or (%model=dynalink)) #then
#error "DOS DLLs must use overlay or dynalink model"
#endif
#elsif (%system=os2) #then
#if #not ((%model=xlarge) #or (%model=mthread) #or (%model=dynalink)) #then
#error "OS2 DLLs must use xlarge, mthread or dynalink model"
#endif
#endif
#endif
#if "%ext%"=lib #then
#dolink %name%.%ext%
#elsif ("%model"=overlay) #or ((%system=dos) #and ("%model"=dynalink)) #then
#if "%ext%"=dll #then
#if #not "%manual_export" #then
#if #exists %name%.exp #then
#implib %name%.lib %name%.exp
#else
#implib %name%.lib
#endif
#endif
#else
#pragma link_option(stub=>ovlload.exe)
#endif
#pragma link_option(map=>on,oldexe=>off,overlay=>on,pack=>off)
#dolink %name%.%ext%
#message "link complete"
#set ovrexe_=%name%.%ext%
#set ovrmap_=%name%.map
#if #exists %name%.exp #then
#set ovrexp_=%name%.exp
#else
#set ovrexp_=overlay.exp
#endif
#if %make #or %ovrexe_ #older %ovrexp_ #then
#message "Patching EXE header"
#exemod %ovrexe_ %ovrexp_ %ovrmap_
#endif
#elsif (%system=os2) #and ("%ext%"=dll) #then
#if #not "%manual_export" #then
#if #exists %name%.exp #then
#implib %name%.lib %name%.exp
#else
#implib %name%.lib
#endif
#endif
#pragma link_option(map=>on,oldexe=>off)
#dolink %name%.%ext%
#message "link complete"
#elsif %system = win #then
#set link_arg=%name%.%ext%
#set winexp_=%name%.exp
#set winexe_=%name%.%ext%
#set winlib_=%name%.lib
#set winmap_=%name%.map
#implib %winlib_ %winexp_
#pragma link_option(map=>on,oldexe=>off,windows=>on,export=>on)
#pragma link(windows.lib)
#if "%winmath" = chip #then
#pragma link(noemul.obj)
#elsif "%winmath" = emu #then
#pragma link(winfloat.obj)
#pragma link(win87em.lib)
#elsif "%winmath" = none #then
#pragma link(nofloat.obj)
#else
#error "Please set project system macro 'winmath' to 'chip', 'emu' or 'none'"
#endif
#dolink %link_arg
#message "link complete"
#if "%make" #then
#exemod %winexe_ %winexp_ %winmap_
#endif
!! PSION SIBO change
#elsif %system=epoc #then
#dolink %name%.exe
!! end of PSION SIBO change
#else
#dolink %name%.%ext%
#endif
!! PSION SIBO change
!! convert the .exe file to a .img or .dyl file
#if %system=epoc #then
#if %name%.%filetype% #older %name%.exe #then
#set afl=""
#set dfl=""
#if "%version"="" #then #set version=0x100f #endif
#message "Making %name%.%filetype%"
#if %filetype=img #then
#if #exists %name%.afl #then #set afl="-a%name%.afl" #endif
#if #exists %name%.dfl #then #set dfl="-d%name%.dfl" #endif
#if "%priority"="" #then #set priority=0x80 #endif
#if "%heapsize"="" #then #set heapsize=0x80 #endif
#else
#set priority=""
#set heapsize=""
#endif
#run "emake >make.$$$ -b %afl% %dfl% -o%name% -s -v%version% -p%priority% -h%heapsize% -%epoctype% %name%.exe" no_window no_abort
#file adderrors make.$$$
#file delete make.$$$
#endif
#endif
!! #run "emake >make.$$$ -b -o%name% -s -v%version% -%epoctype% %name%" no_window no_abort
!! end of PSION SIBO change
!! Reset macros indicating what libraries are required
#set tsc=off
#set tscpp=off
#set tspas=off
#set tsm2=off
#set cwindow=""
#set cgraph=""
#set pm_api=""
#set pm_compat=""
#set pm_noncompat=""
#set manual_export=""
!! End of Project Link section
! Project End
!! =========================================================================