TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: Jeffrey White
from: Mike Bilow
date: 1996-01-24 10:42:46
subject: PM programs with Watc

Jeffrey White wrote in a message to MIKE BILOW:

 JW>  Mike I'm starting to use Watcom C++ for OS/2 - now I
 JW> understand that  other compilers use a .def file and that
 JW> Watcom uses a linker file - could  you please show us how
 JW> you use Watcom ( I believe you use .def file  for other
 JW> compilers and use a "make file" to read and write a Watcom 
 JW> linker file out of the .def file) ?  In other words should I
 JW> always write  a .def file (all book examples have a .def
 JW> file) so that when I compile  under another compiler
 JW> .........

All of the things that the more common linkers handle with the DEF file are
handled instead from the command line with WLINK, the Watcom Linker.  The
WLINK command line can, however, be supplied from a control file, specified
on the command line with the "{at}" directive.  In some cases,
especially if you don't use C++ name mangling, it is possible to use
LINK386 with Watcom OBJ files.  Watcom also provides a tool, MS2WLINK,
which somewhat mostly converts DEF files into WLINK command scripts.  Here
is the syntax used by WLINK, a bizarre and non-standard world unto itself:


Copyright by WATCOM International Corp. 1985, 1994. All rights reserved.
WATCOM is a trademark of WATCOM International Corp.
usage: wlink {directive}

commands valid for all executable formats:

directive  ::= "File"        obj_spec{","obj_spec}
            | "Name"         exe_file
            | "OPtion"       option{","option}
            | "Library"      library_file{","library_file}
            | "Path"         path_name{";"path_name}
            | "LIBPath"      path_name{";"path_name}
            | "LIBFile"      obj_file{","obj_file}
            | "Debug"        "Watcom" dblist |
"Codeview" | "Dwarf" | "All"
            | "MODTrace"     module_name{","module_name}
            | "SYMTrace"     symbol_name{","symbol_name}
            | "SYStem"       system_name
            | "SYStem Begin" system_name directive {directive}
"End"
            | "FORMat"       form
            | "Alias"       
alias"="symbol_name{","alias"="symbol_name}
            | "REFerence"    symbol_name{","symbol_name}
            | "{at}"            directive_file
            | "#"            comment


commands valid for all executable formats (continued):

            | "DISAble"      msg_num{","msg_num}
            | "SOrt"         ["GLobal"]
["ALPhabetical"]
            | "LANGuage"     ("JApanese" |
"CHinese" | "KOrean")
obj_spec  ::= obj_file["("obj_member")"] |
library_file["("lib_member")"]
dblist    ::= [dboption{","dboption}]
dboption  ::= "LInes" | "Types" | "LOcals" |
"All" | "STatic"
option    ::= "Map"["="map_file] |
"NODefaultlibs" | "STack="n | "Dosseg"
            | "Verbose" | "OSName="string |
"Caseexact" | "NAMELen="n | "Quiet"
            | "SYMFile"["="symbol_file] |
"Undefsok" | "STRip" | "MAXErrors="n
            | "NOCASEexact" | "CAChe" |
"NOCAChe" | "MANGlednames" | "STATics"
            | "ARTificial" | "REDefsok" | "NOREDefsok"


commands valid for the MS-DOS executable format only:

form      ::= "Dos" ["COM"]
directive ::= "Begin"       ovl_sect {ovl_sect} "End"
            | "OVerlay"     class{","class}
            | "NEWsegment"
            | "FIXedlib"    library_file{","library_file}
            | "VEctor"      symbol_name{","symbol_name}
            | "NOVector"    symbol_name{","symbol_name}
            | "FORCEVEctor" symbol_name{","symbol_name}
option    ::= "SMall" | "PACKCode="n |
"DIStribute" | "DYNamic" | "ARea="n
            | "NOIndirect" | "STANdard" |
"PADSections" | "PACKData="n
ovl_sect  ::= ("Section" | "AUTOSection")
["INto" overlay_file] {directive}


commands valid for the OS/2 and Rational Systems executable formats only:

form      ::= "OS2"
["FLat"|"LE"|"LX"] ["PHYSdevice" |
"VIRTdevice"
            |
["DLl"["INITGlobal"|"INITInstance"
["TERMInstance"|"TERMGlobal"]]
            | "PM" | "PMCompatible" | "FULLscreen"] 
directive ::= "NEWsegment"
            | "SEGment"     segdesc{","segdesc}
            | "IMPort"      import{","import}
            | "EXPort"      export{","export}
            | "EXPort"      "="wlib_directive_file
segdesc   ::= segspec segmodel {segmodel}
segspec   ::= seg_name | "Class" class_name | "TYpe"
("CODE" | "DATA")
import    ::= entryname module["."(extname | ordinal)]
option    ::= "Alignment="n | "OLDlibrary="dll_name |
"VERSion="major.[minor]
            | "DEscription" description |
"MODName="module_name | "Heapsize="n
            | ("ONEautodata" | "MANYautodata" |
"NOAutodata") | "PACKCode="n
            | "OFFset="n | "OLDlibrary="dll_name |
"NEWFiles" | "PROTmode"
            | "STUB="stub_name | "PACKData="n
export    ::=
entryname["."ordinal]["="internal]["Resident"][iopl_words]
segmodel  ::= ("PReload" | "LOadoncall") |
("SHared" | "NONShared")
            | ("EXECUTEOnly" | "EXECUTERead" |
"READOnly" | "READWrite")
            | ("Iopl" | "NOIopl") |
("CONforming" | "NONConforming")
            | ("PERManent" | "NONPERManent") |
"INValid" | "RESident"
            | "CONTiguous" | "DYNamic"


commands valid for the Microsoft Windows executable formats only:

form      ::= "WIndows" ["DLl"["INITGlobal" |
"INITInstance"]] [MEMory] [FOnt]
directive ::= "NEWsegment"
            | "SEGment"     segdesc{","segdesc}
            | "IMPort"      import{","import}
            | "EXPort"      export{","export}
            | "EXPort"      "="wlib_directive_file
segdesc   ::= segspec segmodel {segmodel}
segspec   ::= seg_name | "Class" class_name | "TYpe"
("CODE" | "DATA")
import    ::= entryname module["."(extname | ordinal)]
option    ::= "Alignment="n | "OLDlibrary="dll_name |
"VERSion="major.[minor]
            | "DEscription" description |
"MODName="module_name | "Heapsize="n
            | ("ONEautodata" | "MANYautodata" |
"NOAutodata") | "RWReloccheck"
            | "PACKCode="n | "PACKData="n |
"OLDlibrary="dll_name
            | "STUB="stub_name
export    ::=
entryname["."ordinal]["="internal]["Resident"]
segmodel  ::= ("PReload" | "LOadoncall") |
("SHared" | "NONShared")
            | ("EXECUTEOnly" | "EXECUTERead" |
"READOnly" | "READWrite")
            | ("MOVeable" | "FIXed") | "DIScardable"


commands valid for the Microsoft Windows NT executable formats only:

form      ::= "WIndows NT" ["TNT"]
            |
["DLl"["INITGlobal"|"INITInstance"
["TERMInstance"|"TERMGlobal"]]
directive ::= "RUntime"     runoption
            | "SEGment"     segdesc{","segdesc}
            | "IMPort"      import{","import}
            | "EXPort"      export{","export}
            | "EXPort"      "="wlib_directive_file
            | "COMmit"       commitopt{","commitopt}
segdesc   ::= segspec segmodel {segmodel}
segspec   ::= seg_name | "Class" class_name | "TYpe"
("CODE" | "DATA")
import    ::= entryname module["."(extname | ordinal)]
option    ::= "Alignment="n | "OLDlibrary="dll_name |
"VERSion="major.[minor]
            | "DEscription" description |
"MODName="module_name | "Heapsize="n
            | "OBJAlign="size | "OLDlibrary="dll_name |
"STUB="stub_name
export    ::=
entryname["."ordinal]["="internal]["Resident"]
segmodel  ::= ("SHared" | "NONShared") |
("PAGEable" | "NONPageable")
runoption ::= ("NATive" | "WINdows" |
"CONsole" | "POSix" | "OS2" |
"DOSstyle")
commitopt ::= "STack="n | "Heap="n

 
commands valid for the Phar Lap executable formats only:
 
form      ::= "PHARlap" ["EXTended" | "REX"]
directive ::= "RUntime"     runoption{","runoption}
option    ::= "MINData="n | "MAXData="n |
"OFFset="n | "STUB="stub_name
runoption ::= "MINReal="n | "MAXReal="n |
"CALLBufs="n | "MINIBuf="n
            | "MAXIBuf="n | "NISTack="n |
"ISTKsize="n | "PRIVileged"
            | "REALBreak="(n | symbol_name ) | "UNPRIVileged"
 
 
commands valid for the Novell Netware executable format only:
 
form      ::= "NOVell" ["NLM" | "LAN" |
"DSK" | "NAM"] description
directive ::= "MODUle"      module_name{","module_name}
            | "IMPort"      import{","import}
            | "EXPort"      export{","export}
            | "Debug"       "Novell"
["ONLyexports"] ["REFerenced"]
option    ::= "SCReenname" description |
"CHeck="symbol_name | "MULTILoad"
            | "REentrant" | "CUSTom="file_name |
"START="symbol_name
            | "SYnchronize" | "EXit="symbol_name |
"THReadname" name
            | "PSeudopreemption" |
"VERsion="major[.minor[.revision]]
            | "MESsages="file_name | "HElp="file_name |
"XDCdata="file_name
            | "COPYRight" [string] | "SHArelib="file_name
import    ::= entryname
export    ::= entryname
 
 
commands valid for the QNX executable format only:
 
form      ::= "QNX" ["Flat"]
directive ::= "SEGment"     segdesc{","segdesc}
            | "NEWsegment"
option    ::= "NORelocs" | "LOnglived" |
"Heapsize="n | "PACKCode="n
            | "PRIVilege"=n |
"RESource"("="res_file_name | string)
            | "LInearrelocs" | "OFFset="n |
"PACKData="n
segdesc   ::= segspec segmodel {segmodel}
segspec   ::= seg_name | "Class" class_name | "TYpe"
("CODE" | "DATA")
segmodel  ::= "EXECUTEOnly" | "EXECUTERead" |
"READOnly" | "READWrite"
 
 
commands valid for the ELF executable format only:
 
form      ::= "ELF" ["Dll"]
directive ::= "MODUle"      module_name{","module_name}
            | "IMPort"      import{","import}
            | "EXPort"      export{","export}
option    ::= "Alignment="n
import    ::= entryname
export    ::= entryname
 
 
-- Mike


--- 
* Origin: N1BEE BBS +1 401 944 8498 V.34/V.FC/V.32bis/HST16.8 (1:323/107)
SEEN-BY: 50/99 270/101 620/243 711/401 409 410 413 430 808 809 934 955
SEEN-BY: 712/407 515 517 628 713/888 800/1 7877/2809
@PATH: 323/107 170/400 396/1 270/101 712/515 711/808 809 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.