home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / proglang / cs56.arj / ENGLISH.DOC < prev    next >
Encoding:
Text File  |  1990-10-15  |  24.8 KB  |  615 lines

  1. CS 5.6 - Compiler Shell - (c) Kai Uwe Rommel - Sep 30 1990
  2.  
  3.  
  4. 1. Introduction
  5. ---------------
  6.  
  7. CS is a driver program or shell for the following
  8. Microsoft program development tools:
  9.  
  10. - Macro Assembler (5.00 and newer)
  11. - C Compiler (5.00 and newer, 6.00 is supported)
  12. - Pascal Compiler (4.00 and newer)
  13. - FORTRAN Compiler (4.00 and newer)
  14. - Windows Resource Compiler (2.00 and newer)
  15. - OS/2 Resource Compiler
  16. - LINK (5.00 and newer)
  17. - ILINK
  18. - BIND
  19. - EXE2BIN
  20. - CVPACK
  21. - LIB (3.08 and newer)
  22. - CREF
  23. - PWBRMAKE
  24.  
  25. In addition, the following programs are supported:
  26.  
  27. - FLEX scanner generator (2.3 and newer)
  28. - GNU BISON parser generator (1.03 and newer)
  29.  
  30. CS simplifies the usage of these programs and preserves you from
  31. typing of often used options and commands, looks for files in configured
  32. directories and calls your compiler(s) with a MAKE-like strategy.
  33.  
  34. You do not have to create a complicated description of all dependencies
  35. and commands in a makefile. Instead, you write the names of all input
  36. files of a project into a CS project file (see below) together with
  37. some options or enter them directly on the command line (depending of
  38. the size of your project). CS detects the file types from the extension
  39. of their names and automatically knows, what it has to do with them,
  40. call a compiler, add them to the LINK or BIND command and so on.
  41. It also knows from the file dates which files are out of date and have
  42. to be recompiled and which files are up to date. This is similar to the
  43. strategy of the MAKE program. Another feature of CS is, that it allows
  44. you to maintain sets of often used options for the compilers and the
  45. linker in sections of the system-wide TOOLS.INI file (the file used
  46. by the Microsoft Editor and the MAKE and NMAKE programs for their
  47. configuration data). All configuration data for CS itself is also
  48. held in TOOLS.INI.
  49.  
  50. CS is a family mode application and runs under MS-DOS and under OS/2
  51. in both real and protected mode.
  52.  
  53. The following files can be produced from your sources using CS:
  54.  
  55. a) real mode programs
  56.    - DOS EXE format
  57.    - DOS COM format
  58.    - DOS Windows EXE format (including DLL's)
  59.  
  60. b) protected mode programs
  61.    - OS/2 EXE format (including DLL's and Presentation Manager programs)
  62.    - Bound EXE format (family applications for OS/2 and DOS)
  63.  
  64.    (The creation of programs for the Presentation Manager differs from
  65.    creation of standard OS/2 applications only in that another import
  66.    library, OS2.LIB, is used instead of DOSCALLS.LIB).
  67.  
  68. c) linker maps
  69.  
  70. d) listings
  71.  
  72. e) object libraries
  73.  
  74.  
  75. 2. Syntax
  76. ---------
  77.  
  78. Usage:    CS argument*
  79.  
  80.     argument  = globalopt | fileset
  81.     fileset   = filespec  | '(' item+ ')'
  82.     item      = localopt  | filespec | '(' special ')'
  83.     special   = genopt    | filespec
  84.     filespec  = filename  | filename '{' filename+ '}'
  85.  
  86. Where:    globalopt ε { -? -H -Am -Ff -Le -Sn -Oid -Q -I -X -P 
  87.               -C -L -E -N -B -M -LS -SB -K -NS -NF }
  88.  
  89.         m         = model identifier T, S, M, C, L, H or MT
  90.         f         = float type identifier E, 7, A or D
  91.         e         = program type identifier R, C, P, PM, B, W or L
  92.         id        = name of TOOLS.INI section with compiler options
  93.         n         = stack size in bytes (decimal or hex with prefix 0x)
  94.  
  95.     filename  = any valid DOS filename, all filenames in a fileset in ()
  96.             must have the same extension (C, PAS, FOR or ASM)
  97.     localopt  = any option available for the compiler associated with the
  98.             extension of the files in a fileset
  99.     genopt    = any parser or scanner generator option
  100.  
  101. Input files can have the extensions C, PAS, FOR, ASM, L, Y, OBJ, LIB, RC
  102. or DEF (linker definition file), BAD (list for BIND of symbols to be
  103. bound to BadDynLink) or CS (CS project file). The '(' special ')' argument
  104. is only allowed for files with L or Y extensions. A file with extension MDT
  105. can also be given, to specify the file for incremental compilation info of
  106. the C 6.00 QCC (see option -Q)
  107.  
  108. To specify additional API libraries for BIND instead for LINK (they
  109. have the same extension), append an exclamation mark directly to the
  110. name of the library to distinguish it from LINK libraries. CS looks
  111. for BIND API libraries through the PLIB variable (see section 5.1).
  112.  
  113. If there are special options for one ore more source files to the compiler
  114. associated with their type, they can be enclosed with the files for
  115. which they should be used in parentheses. For all filesets enclosed
  116. in () the compiler is called separately (normally, the compilers are
  117. called with as much file names as arguments as fit on the command line,
  118. for those compilers that support multiple file arguments, namely CL and FL).
  119. For FLEX and BISON source files, both options for these programs and for
  120. the C compiler can be given (see below).
  121.  
  122. To help CS to handle more complicated dependencies, one or more files
  123. can be associated with each source file, which depends on them. This is
  124. often useful for include or header files. All names of files on which
  125. a particular source file depends, must be enclosed in curly brackets {}
  126. and follow the source file immediately. This files are used ONLY for
  127. the MAKE-strategy, i.e. to determine if a source file has to be recompiled
  128. or not.
  129.  
  130. If there are files given on the command line or in the project file
  131. with extensions EXE, SYS, DLL, COM, MAP, LST or BSC, then these names define
  132. the names of the output files and define their type (EXE/COM/DLL) or cause
  133. their production (MAP/LST/BSC) if given. That means, if you give the names
  134. FOO.COM and BAR.MAP as arguments to CS, it will try to compile the source
  135. files to a DOS COM program named FOO.COM and it will tell LINK to write
  136. a link map to the file BAR.MAP. DLL and SYS are just synonyms for EXE. To
  137. create a DOS SYS device driver in binary format, the option -LC has to be
  138. specified in addition to the SYS name, but DOS can also load device drivers
  139. in EXE format.
  140.  
  141. Example:
  142. CS -lp main.c{def.h} prog.exe (mod1.c mod2.c -Gt) mod3.asm mod4.c mod5.pas
  143.  
  144. (If this appears to be cryptical of difficult to type, this shows the
  145. usefulness of CS project files, see the equivalent project file below.)
  146.  
  147. Wildcard expansion is supported, with the restriction, that names containing
  148. wildcards have to be separated with blanks from the context on both sides.
  149.  
  150. Wrong:  CS main.c (mod*.c -G2)
  151. Right:  CS main.c ( mod*.c -G2)
  152.  
  153. For BISON and FLEX, it is often needed to specify options for these
  154. generators as well as for the C compiler, when it is called to compile
  155. the generated C programs. For this purpose, a second () nesting level
  156. is allowed for BISON and FLEX source files (but only for these).
  157.  
  158. Example: CS -lp main.c (-W1 (-d grammar.y))
  159.  
  160. The -d option is passed to BISON while the -W1 option is passed to the C
  161. compiler when called to compile the generated grammar.c.
  162. This is not a true nesting level but only a way to separate the options.
  163. Therefore, in the following example
  164.  
  165. CS -lp main.c (-W1 (-d gram1.y) (-v gram2.y))
  166.  
  167. the -d AND the -v options are passed to BISON for BOTH grammar files.
  168. The correct syntax for this purpose is
  169.  
  170. CS -lp main.c (-W1 (-d gram1.y)) (-W1 (-v gram2.y))
  171.  
  172. The BISON and FLEX generators are called with the appropriate options to
  173. create output files with the same base name as the input file, but with .C
  174. extension. The output files are created in the same directory where the input
  175. files are, NOT in the OUTPUT directory (see section 5.1).
  176. Therefore, the -t option of FLEX and the -o option of BISON must not be used.
  177. They are always used by CS.
  178.  
  179.  
  180. 3. CS project files
  181. -------------------
  182.  
  183. If CS encounters any file with extension CS in its arguments, the
  184. contents of the file is read and evaluated if it was given as arguments.
  185. The text read from the file is logically placed on the command line
  186. instead of the file name. These files are called PROJECT FILES.
  187. They can have any number of lines but must not contain wildcards
  188. in filenames listed in them.
  189.  
  190. The extension CS of project files can be omitted. This is the ONLY
  191. type of file known to CS of which the extension is optional. That means
  192. you only have to enter "CS foo" if FOO.CS exists in the current directory
  193. or in any directory listed in the SOURCE variable (see below).
  194.  
  195. For better readability, the text of a project file can (should) be
  196. written on multiple lines. Lines starting with ; or # are treated as
  197. comment lines and are ignored up to the next line feed.
  198.  
  199. CS project files are intended for bigger projects which consist of
  200. many files and more complicated dependency trees or special options.
  201. The usage of () and {} on the command line is not very comfortable,
  202. for projects which require their usage, you will probably use
  203. project files.
  204.  
  205. Such a project file is MUCH shorter and easier to wite than a makefile.
  206. For programs like GNU awk or perl (widely used freeware programs) the
  207. makefiles are 100 or more lines long but the equivalent CS project files
  208. fit into 10 lines. Also, they require less "debugging".
  209.  
  210. The project file for the sample command line above could look like:
  211.  
  212. ; Project: xyz
  213. ; Date:   1.4.1989
  214. ;
  215. ; main module
  216. main.c {def.h}
  217. ;
  218. ; subroutines with special options
  219. (mod1.c mod2.c -Gt)
  220. ;
  221. ; other subroutines
  222. mod3.asm
  223. mod4.c
  224. mod5.pas
  225. ;
  226. ; output file name for family mode application
  227. prog.exe -lb
  228.  
  229. If CS is called without any arguments or the arguments to CS do not
  230. contain any file name of a source file with extension C, PAS, FOR, ASM or
  231. OBJ, it looks fo a file PROJECT.CS in the current directory. If it
  232. exists it is read as if it was given to CS as an argument. This makes
  233. the functionality of PROJECT.CS almost like "makefile" for the standard
  234. make utility.
  235.  
  236.  
  237. 4. Options
  238. ----------
  239.  
  240. -Am     Defines the memory model for C, FORTRAN and MASM. To MASM, the
  241.         model is passed as "-Dmodel=small" etc. which requires your
  242.         sources to contain a statement like "% .MODEL model" at the very
  243.         beginning of the text if you want to choose the memory model at
  244.         compile time for assembler programs.
  245.         For m the letters T, S, M, C, L, H and MT are valid. MT stands for
  246.         the custom model for multithreaded OS/2 programs with LLIBCMT.LIB.
  247.         T (tiny) is only valid for C 6.00 and newer.
  248.  
  249. -Le     Defines the output format of the linker (e = R, C, W, P, PM, B oder L).
  250. -LR     -> Real-Mode-EXE for DOS
  251. -LC     -> Real-Mode-COM for DOS
  252. -LW     -> Real-Mode-Windows-EXE
  253. -LP     -> Protected-Mode-EXE for OS/2 (without Presentation Manager)
  254. -LPM    -> Protected-Mode-EXE for OS/2 (with Presentation Manager)
  255. -LB     -> Bound-EXE
  256. -LL     -> LIB is used instead of LINK to create an object library
  257.            where the object modules of all sources are put.
  258.  
  259. -Ff     Defines the type of the floating point arithmetics.
  260. -FE     Floating point with emulator.                    This also influences
  261. -F7     Floating point with 80x87 coprocessor.           the type of standard
  262. -FA     Alternate floating point library.                library used !
  263. -FD     Decimal arithmetics (only for Pascal).
  264.  
  265. -Oid    The id selects the section in TOOLS.INI with the compiler options
  266.         to be used. CS looks for a section named [CS-id]. From this section
  267.         the values for the environment variables CL, PL, FL, MASM and LINK
  268.         are read. The id should be 15 characters or less in length.
  269.  
  270. -Sn     Defines the stack size for the linker. It can be entered decimal
  271.         or hex with the prefix 0x (standard C notation).
  272.  
  273. -C      Compile only.
  274.  
  275. -L      Link only.
  276.  
  277. -E      Echo all commands before executing them.
  278.  
  279. -N      No execution of commands, only show them.
  280.  
  281. -K      Keep logfile of all program output (see below).
  282.  
  283. -B      Don't use MAKE strategy, build all files regardless of file dates.
  284.  
  285. -X      Link without standard libraries.
  286.  
  287. -Q      Compile incrementally with QCC (only C 6.00 and newer)
  288.  
  289. -I      Link incrementally with ILINK whenever possible (see below).
  290.  
  291. -P      Call CVPACK if the output executable contains debugging information.
  292.  
  293. -M      Create a linker map and, if -LB is used, also a binder map.
  294.  
  295. -LS     Create compiler listings.
  296.  
  297. -SB     Create PWB source browser database (with BSC extension).
  298.         This is currently only supported by C 6.00 but no other languages.
  299.         The SBR files from each C module are created in the output
  300.         directory automatically but you can optionally specify the name
  301.         and path of the BSC file.
  302.  
  303. -NF     Use full qualified path names when passing names of source files
  304.         to the compilers. This is useful when using CodeView because it
  305.         can always find the source files even if they are not in the
  306.         current directory.
  307.  
  308. -NS     Opposite of above option. Use simple file names whenever posible
  309.         except for the source files located via SOURCE variable.
  310.  
  311.  
  312. 5. TOOLS.INI
  313. ------------
  314.  
  315. The characteristics of your system needed for CS have to be configured
  316. in the system-wide file TOOLS.INI. This file must be accessible through
  317. environment variables INIT or PATH. It is also used by the Microsoft
  318. Editor and MAKE and NMAKE programs, so you may be familiar with this file
  319. and its format. It is similar in its format to WIN.INI of Microsoft
  320. Windows. Each program that knows about it can create sections denoted
  321. with "[name]" and store data in it in "name=value" or "name:value" formats.
  322. That makes it ideal as a system-wide database for initialization and
  323. configuration information. The OS2.INI file is an extension of this
  324. method but uses a binary format not readable by humans.
  325. See the sample configuration in CS.INI. You can append this file to your
  326. TOOLS.INI and modifiy the setting for your needs.
  327.  
  328.  
  329. 5.1. Section [CS]
  330. -----------------
  331.  
  332. In this section various default values for CS are specified that can
  333. be overridden by command line options or project files.
  334.  
  335. MODEL=<model>
  336. Valid models are TINY, SMALL, MEDIUM, COMPACT, LARGE, HUGE or MTHREAD.
  337. This defines the default memory model if no -Am option is used on the
  338. CS command line or in a project file. Equivalent to -Am option.
  339.  
  340. EXETYPE=<type>
  341. Valid types are DEFAULT, DOS, COM, OS2, OS2PM, BOUND, WINDOWS or LIBRARY.
  342. If DEFAULT is specified, depending on the machine mode either DOS or OS2
  343. is choosen automatically. When LIBRARY is used, all object modules are
  344. written to an object library with LIB and no EXE file is created.
  345. Equivalent to -Le option.
  346.  
  347. FLOAT=<type>
  348. Valid types are EMULATOR, 80X87, ALTERNATE or DECIMAL.
  349. Equivalent to -Ff option.
  350.  
  351. OPTIONS=<id>
  352. Specifies the name of the TOOLS.INI section with the default compiler
  353. and linker options. Equivalent to -Oid option.
  354.  
  355. STACK=<size>
  356. Defines the default stack size for LINK. Equivalent to -Sn option.
  357.  
  358. ILINK=<options>
  359. Defines the options to be used for link in order to prepare an executable
  360. file for incremental linking (seem ILINK manual). It should contain
  361. /PADC:x and /PADD:y options but not the /INC option. Set x and y after
  362. your personal requirements. No command line equivalent.
  363.  
  364. NAMES=FULL or NAMES=SHORT
  365. Equivalent to -NF and -NS command line options (see above). This
  366. specifies default behaviour, if none of the both command line options
  367. is used.
  368.  
  369. BUILD=NO or BUILD=YES
  370. The setting BUILD=YES disables the MAKE strategy of CS. Normally,
  371. BUILD=NO should be used. See -B command line option.
  372.  
  373. RAMDISK=<path>
  374. If a nonempty path is specified that points into a RAM disk, then some
  375. header or include files for the compilers to be called later are copied
  376. to this directory if they are not already there. This can reduce harddisk
  377. access considerably. List the path in your INCLUDE variable too (see below).
  378. See section 4.3.
  379.  
  380. SOURCE=<pathlist>
  381. You can define several directories in PATH syntax which are searched
  382. for source files that were specified on the command line or in a project
  383. file but do not exist in the current directory. CS searches using this
  384. variable for file of types ASM, C, PAS, FOR, DEF, BAD and CS.
  385.  
  386. OBJ=<pathlist>
  387. Same purpose as SOURCE but used to search for object files.
  388.  
  389. OUTPUT=<path>
  390. Specifies the output directory for all files created by the programs
  391. called by CS. Best is to let it point to a big RAM disk. If you want to
  392. override this setting on the command line or in a project file,
  393. include drives or paths to the file names.
  394.  
  395. INCLUDE=<pathlist>
  396. TMP=<path>
  397. These variables specify the values of the environment variables with
  398. the same names that are set before the compilers and the linker are called.
  399.  
  400. RLIB=<pathlist> 
  401. PLIB=<pathlist> 
  402. WLIB=<pathlist>
  403. These variables define the value of the LIB environment variable for
  404. the linker. RLIB is used when real mode programs (EXE or COM) are created,
  405. PLIB is used when protected mode programs (with or without PM and bound
  406. programs) are created and WLIB is used for linking Windows programs.
  407.  
  408. In the variables RAMDISK, SOURCE, OBJ, OUTPUT, INCLUDE, TMP, RLIB, PLIB und
  409. WLIB you can use the values of environment variables. Enclose their names
  410. in % for this purpose (like in batch files).
  411. Example: INCLUDE=%TMP%\INCLUDE;D:\LIB\INCLUDE;C:\MS\INCLUDE
  412. The %TMP% will be replaced by the value of the environment variable TMP.
  413.  
  414.  
  415. 5.2. Sections [CS-id]
  416. ---------------------
  417.  
  418. This sections contain the five entries for the environment variables
  419. with the options to be used for them compilers and the linker.
  420.  
  421. Example:
  422.  
  423. [CS-STD]
  424. CL=-W3 -Zdep1 -J -G2s -Oxn
  425. PL=-w3 -Zdz
  426. FL=-W1 -Zd -FPi -G2s -Ox
  427. MASM=-W2 -Ml -X -Zd
  428. LINK=/BAT /NOIG /NOE
  429.  
  430.  
  431. 5.3. Sections [CS+ASM], [CS+C], [CS+FOR] and [CS+PAS]
  432. -----------------------------------------------------
  433.  
  434. In this sections is defined, which include files for the languages
  435. have to be copied to the RAMDISK directory and where they are located
  436. on the harddisk.
  437.  
  438. Each section may have as much entries as needed. They should have
  439. the format:
  440.  
  441. FLAGFILE=SOURCE
  442.  
  443. where FLAGFILE is the name of a file, that is tested for existence in
  444. the RAMDISK before the compiler for this language is called. If it does
  445. not exist in the RAM disk, the file name specification (with wildcards)
  446. in SOURCE is copied to the RAM disk directory. SOURCE has to contain a
  447. full path name.
  448.  
  449. Example:
  450.  
  451. [CS+ASM]
  452. DOS.INC=C:\INCLUDE\*.INC
  453. OS2.INC=C:\INCLUDE\OS2\*.INC
  454. MACROS.INC=D:\INCLUDE\*.INC
  455.  
  456. That means, that CS looks for DOS.INC in the directory specified in the
  457. RAMDISK variable before calling MASM to assemble a source file. If CS does
  458. not find it there, it copies C:\INCLUDE\*.INC to this directory. It is
  459. important, that the SOURCE file pattern matches also for the FLAGFILE
  460. to get this also copied to the RAMDISK. Then further tests will find it
  461. there. If you do not need this feature, leave this sections empty, but
  462. do not delete their [names] and set the RAMDISK variable empty (section 5.1).
  463.  
  464.  
  465. 6. Other features
  466. -----------------
  467.  
  468. If the linker encounters any error, its standard input response file
  469. is left as CS.INP in the OUTPUT directory. You may take a look at it
  470. to see if the right options and libraries were specified.
  471.  
  472. If the linker bundled with the compilers and the assembler is used to
  473. create Windows applications, you should put the statement "EXETYPE WINDOWS"
  474. into the linker definition file of your program. The default setting of
  475. the normal segmented-executable linker is "EXETYPE OS2" where the default
  476. setting of the version in ther Windows SDK is "EXETYPE WINDOWS".
  477. This is only needed for programs without resources, because the
  478. resource compiler corrects the type otherwise. Windows would not load
  479. a program with "EXETYPE OS2" even if it is a Windows program but this
  480. is not documented in the Microsoft documentation anywhere.
  481.  
  482. The standard libraries of Microsoft C, Pascal and FORTRAN must have
  483. the machine-mode suffix on their names, i.e. CLIBCER.LIB, CLIBCEP.LIB
  484. and CLIBCEW.LIB instead of CLIBCE.LIB and LIBPASER.LIB, LIBPASEP.LIB
  485. instead of LIBPASE.LIB and MLIBFER.LIB, MLIBFEP.LIB instead of MLIBFORE.LIB
  486. and so on for all memory and floating point models.
  487.  
  488. Although CS uses the SOURCE variable to look for missing source files,
  489. it may be better to have the current directory set to your sources
  490. because they may include files from this directory without explicit path
  491. name (#include "name.h" in C programs) which the compilers will NOT find
  492. because they do know nothing about the SOURCE variable.
  493.  
  494. This is required for the Windows resource compiler because it does not
  495. accept full path names.
  496.  
  497. The resource compiler puts the RES file into the same directory where
  498. the RC file is, not in the OUTPUT directory.
  499.  
  500. There are two different resource compilers RC.EXE, one for OS/2
  501. Presentation Manager and one for Windows. Make shure that the Windows
  502. one is accessible through the DOS executable search PATH when creating
  503. Windows executables and the OS/2 one is accessible through the OS/2
  504. PATH when creating OS/2 PM executables.
  505.  
  506.  
  507. 7. Automatic file names
  508. -----------------------
  509.  
  510. If no names are defined for the output files (EXE, MAP, LST ...)
  511. then CS will create them from the first name passed to it as an argument
  512. but with the correct extension.
  513.  
  514. If a protected mode program or family mode application is created and
  515. no DEF or BAD file was given, CS looks for a DEF and BAD file with the same
  516. base name as the first file name argument and automatically passed these
  517. files to LINK or BIND if they exist.
  518.  
  519. If a Windows program is created and no names of the DEF or RC files were
  520. given, CS looks for them the same way. This applies also for OS/2 PM
  521. programs for the DEF and RC files.
  522.  
  523. That means, if you call, for example, "CS -AS -LW winprog.c" and there
  524. exist a winprog.def and a winprog.rc file, CS passes winprog.def to
  525. the linker and calls the resource compiler with winprog.rc automatically.
  526.  
  527. This simplifies the compilation of small programs for which no project
  528. file is needed therefore. You only have to give all related DEF, BAD
  529. and RC files the same base name.
  530.  
  531. Tho create OS/2 PM programs you have to link with the OS2.LIB import
  532. library instead of the DOSCALLS.LIB import library. This is achieved by
  533. using -LPM instead of -LP or by setting EXETYPE=OS2PM in TOOLS.INI.
  534. The import library and that CS processes a resource file if -LPM is given,
  535. are the only differences between -LP and -LPM and EXETYPE=OS2 and
  536. EXETYPE=OS2PM.
  537.  
  538.  
  539. 8. Log file
  540. -----------
  541.  
  542. Sometimes it is useful to keep a protocol of all output of CS and the
  543. called compilers, linker etc. in a log file. This would allow, for example,
  544. to start a big job and the go to lunch and look for all the hundredths
  545. of warnings on return ...
  546. With the -K option, a protocol is written to a file with same base name
  547. and in the same directory as the target executable file but with extension
  548. LOG. All output of the called programs and from CS (produced by -E option,
  549. for example) is duplicated to that file.
  550. Under DOS, this has the disadvantage, that the output from each step
  551. (compiler, linker ...) is only echoed to the display, when the step
  552. finished. Under OS/2, with the -K option, the programs are run through
  553. pipes which are splitted to display and log file. This provides both
  554. immediate screen output and a log file.
  555. A log file is useful in particular, when switching to a higher warning
  556. level for a compiler. This may cause LOTS of warnings on older sources
  557. which can be captured in the log file and read with a text editor later
  558. without beeing without feedback at compilation time (with large programs,
  559. for example, or on slow machines).
  560.  
  561.  
  562. 9. DLL's
  563. --------
  564.  
  565. DLL's are most often created with custom memory models like "-Asnu" or
  566. "-ASnw" or "-Alfw" and so on. As the C compiler manual says, are these models
  567. equivalent to "-AS -Au" or "-AS -Aw" and "-AL -Aw" and so on.
  568. That means you should specify one of the standard memory models to CS
  569. and put -Aw or -Au into () with the source files to which they apply.
  570.  
  571. -Asnw --> -AS -Aw    dto. for -Au
  572. -Asfw --> -AC -Aw
  573. -Alnw --> -AM -Aw
  574. -Alfw --> -AL -Aw
  575.  
  576. To get CS calling "CL -Asnw -G2s graflib.c", you have to enter
  577. "CS -AS (-Aw -G2s graflib.c)" or write an equivalent project file.
  578.  
  579. For linking DLL's the option -X is often useful to exclude the
  580. standard libraries ftom the link run.
  581.  
  582. For DLL's are several extensions used. For Windows EXE, DLL or DRV are used,
  583. for OS/2 is DLL most commonly used. CS allows an extension of DLL alternatively
  584. to EXE on the command line or in project files. For other extensions, rename
  585. the EXE file.
  586.  
  587. Remember to put the LIBRARY statement into the DEF file instead of the
  588. NAME statement.
  589.  
  590.  
  591. 10. Exit codes
  592. --------------
  593.  
  594. CS returns the following exit codes to the caller:
  595.  
  596.   0 - successful run
  597.   1 - nothing to do (everything was up to date)
  598.   2 - a called program produced an error
  599.       (compiler, assembler, linker ...)
  600.   3 - syntax error in the command line or in a project file
  601.   4 - wrong configuration in TOOLS.INI
  602.   5 - an input file does not exist.
  603.   6 - error in CS.EXE (not enough memory, I/O error ...)
  604.  
  605.   256 - termination by user (^C, ^BREAK)
  606.  
  607.  
  608. 11. Restrictions
  609. ----------------
  610.  
  611. - none since version 5 :-)
  612.  
  613. I don't know other features to put into this program.
  614. Let me know, if you wish to have a new feature ...
  615.