home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Spezial / SPEZIAL2_97.zip / SPEZIAL2_97.iso / ANWEND / DEVELOP / EPRO104 / epro.doc < prev    next >
Text File  |  1997-01-28  |  8KB  |  196 lines

  1.                             EditProject Version 1.04
  2.  
  3.                           Makefile maintenance utility
  4.  
  5.                                Bernhard Bablok
  6.  
  7.                                  January 1997
  8. History:
  9. ~~~~~~~
  10. 1.04: - Support Visual Age C++ (makefile extension: *.va)
  11.       - Recursively invoke make for all makefiles in subdirectories before target
  12.         is rebuilt
  13.       - Use a responsefile for LIB and ILIB
  14.  
  15. 1.02: - Changes to enable inclusion of resources in DLLs
  16.         Bugfix: Treat *.xh, *.xih and *.ih files like c-files
  17.  
  18. 1.01: - Small bugfix: include-files which didn't exist produced an error.
  19.  
  20. 1.00: - EditProject is now distributed separately from EPMGCC, the EPM-interface
  21.         to GCC.
  22.  
  23.       - EditProject now supports four types of targets: simple (text-mode)
  24.         exe-files, PM-applications, LIB-files (archives) and DLLs.
  25.  
  26.       - The following compilers are supported: GCC (emx and gcc/2), ICC and BCC.
  27.         The makefile extension (.emx, .gcc, .icc and .bcc) is used to determine
  28.         the compiler.
  29.  
  30.       - Object-files are put in a subdirectory. For debug-mode, the directory
  31.         used is 'objD', for production-mode 'objP' is used (This might cause
  32.         problems on FAT-formatted drives, since GNU-make is partially case
  33.         sensitive).
  34.  
  35.       - To generate dependencies, include-files are now scanned recursively.
  36.  
  37.       - Resource-files are scanned for the following directives/statements to
  38.         find dependencies: #include, RCINCLUDE, DLGINCLUDE, BITMAP, POINTER
  39.         and ICON. Only files in the project directory are considered.
  40.  
  41.       - It is now possible to add lines at the end of the generated
  42.         makefile. These user added lines are preserved if the makefile is
  43.         regenerated using EditProject.
  44.  
  45.       - The menu-item 'Save project' is now missing (due to a limitation in
  46.         VREXX), but since the user is prompted whether to save the makefile or
  47.         not if 'CANCEL' is selected, this menu-item was obsolete anyway.
  48.  
  49.       - In addition, some minor bugs were corrected.
  50.  
  51. 0.61: - Bug fix (changing an existing makefile would change the MODE variable
  52.         from e.g. MODE = D to MODE = Debug)
  53.  
  54. 0.60: - First public release
  55.  
  56.  
  57. Legal stuff:
  58. ~~~~~~~~~~~
  59. See the file license.txt.
  60.  
  61.  
  62. Requirements:
  63. ~~~~~~~~~~~~
  64. EditProject requires VREXX (Visual REXX), a package of external functions adding
  65. "PM"-support to REXX. VREXX is IBM employee written software and available free
  66. of charge from various ftp-sites (look for a file called vrexx2.zip).
  67.  
  68.  
  69. Introduction:
  70. ~~~~~~~~~~~~
  71. EditProject is a VREXX-script designed to maintain makefiles.  It can be used
  72. stand alone or together with EPMGCC, the EPM-interface to GCC.  The script
  73. allows you to add and delete files to be included in a project and to specify
  74. compile and link options.  Module definition files and resource script files can
  75. also be defined for the project. Dependencies to none-system include-files are
  76. automatically recognized.  The output of EditProject is a makefile to be used
  77. with GNU-make.
  78.  
  79.  
  80. Installation:
  81. ~~~~~~~~~~~~
  82. Follow the instructions given in the VREXX-package to install VREXX (very
  83. simple). Then, copy epro.cmd to a directory in your PATH. If you made any
  84. changes to your config.sys, reboot your system.
  85.  
  86.  
  87. Usage:
  88. ~~~~~
  89. Just type  epro  or  epro <filename>  at an OS2-prompt. A master menu with
  90. radio buttons pops up. Possible choices:
  91.  
  92.   - Select project   Select a makefile.  ".emx" is the default extension.  Use
  93.                      ".gcc" as the extension for gcc/2, ".icc" to generate a
  94.                      makefile for IBM's ICC (version 2.1), ".va" for IBM's ICC
  95.                      (version 3) and ".bcc" to generate a makefile
  96.                      for Borland's BCC. No extension will have the same effect
  97.                      as ".emx".
  98.  
  99.   - Select target    Choose the type of target to be generated. Possible choices
  100.     type             are: EXE    (simple text-mode executable)
  101.                           PM-EXE (PM-applications)
  102.                           LIB    (archives of object files)
  103.                           DLL    (dynamic link libraries)
  104.                      Note that the choice of the target type only generates the
  105.                      correct rule to make the target. The necessary compiler and
  106.                      linker options are not added automatically.
  107.  
  108.   - Resource file    Specify a resource file (needed for PM-applications)
  109.  
  110.   - Module           Specify a module definition file. This is necessary for
  111.     definition file  PM-applications and DLLs and can be used for simple
  112.                      executables as well.
  113.  
  114.   - Add files        Add source files to the project. If fileA.c has a include
  115.                      statement like #include "fileB.h", then fileB.h will be
  116.                      included in the dependencies for fileA.o.
  117.                      Double click on a file or select "OK" to add a file. Select
  118.                      "CANCEL" to leave.
  119.                      The source files are displayed left of a standard file-box.
  120.                      Since VREXX only knows modal entry-boxes, I have to use an
  121.                      output-window (without paging support). If many files are
  122.                      added, they might not show up even though they are added.
  123.                      Files can only be added once.
  124.  
  125.   - Delete files     Displays a listbox with all files belonging to the project.
  126.                      Pressing "OK" will delete the selected file from the list
  127.                      of files. Select "CANCEL" to leave.
  128.  
  129.   - Build option     Defines debug or production mode as default mode for
  130.                      builds. The value can be overridden from the command line
  131.                      using make MODE=P ...
  132.  
  133.   - Compiler options Define global, debug and production options.
  134.  
  135.   - Link options     Define link options (like additional files, libraries etc.)
  136.  
  137.   - Make             Invoke make with the current makefile and the build option
  138.                      in effect.
  139.  
  140.  
  141. Limitations:
  142. ~~~~~~~~~~~
  143. Due to a bug in VREXX, only one VREXX-script can be run at a time. Under certain
  144. circumstances, VREXX-cleanup doesn't work as expected if a VREXX-script
  145. crashes. In this case the process running vrexx.exe (use PSTAT|FIND /i "vrexx")
  146. has to be killed manually.
  147.  
  148. Because of the limited length of the OS/2 commandline, building projects with
  149. many object files won't work. A workaround are responsefiles. In this release,
  150. they are implemented for lib/ilib of CSet++/VAC++. As time permits, the rules
  151. for other compilers and targets will be changed accordingly.
  152.  
  153. EditProject generates single-target makefiles. Additional targets can be added
  154. manually. Adding this code at the end of the makefile after the line saying
  155.  
  156. # == Do not delete this line. User added code after this line is preserved. ==
  157.  
  158. will preserve the code after regenerating the makefile with EditProject.
  159.  
  160.  
  161. Future plans:
  162. ~~~~~~~~~~~~
  163. Change rules to use responsefiles for other compilers/targets.
  164.  
  165. I also plan to write a true PM-application overcoming most of the limitations
  166. set by VREXX, but this will take some time (this sentence is in here since the
  167. beginning :-(. I definitely plan to start this year!).
  168.  
  169.  
  170. Changing the code:
  171. ~~~~~~~~~~~~~~~~~
  172. I have not tested EditProject with other resolutions than SVGA.  If you have
  173. problems with the size of the add-file box and/or delete-file box, you might try
  174. changing the variables
  175.  
  176.    sources.diff          (the space between listed files)
  177.    DeleteFiles.height    (sets number of lines in delete-file listbox).
  178.  
  179. Support for additional compilers can be implemented quite easily. There is an
  180. internal procedure called SetupRules. Modifying this routine should be enough to
  181. implement specific rules. Existing rules can also be changed in this way, e.g.
  182. if you want to include the value of MODE in the name of the target.
  183.  
  184. Disclaimer:
  185. ~~~~~~~~~~
  186. If you think you have found a genuine bug, or would like to make suggestions,
  187. contributions, or enhancements to this code please drop me a note.  Since I have
  188. released this code without charge, I cannot offer a warranty or customer
  189. support.
  190.  
  191.  
  192. 01/28/97
  193. Bernhard Bablok
  194. D-82256 Fuerstenfeldbruck, Germany
  195. INTERNET: ua302cb@sunmail.lrz-muenchen.de
  196.