home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
pmmk100.zip
/
PMMAKE.HLP
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1995-12-21
|
39KB
|
1,160 lines
ΓòÉΓòÉΓòÉ 1. About PM Make ΓòÉΓòÉΓòÉ
PM Make Utility for OS/2
Created by Peter Koller, La vieille Maison d'Anglais, Trebuon, 29530 Plonevez
du Faou, France. (...more...)
About La Maison d'Anglais
La Maison d'Anglais pictured above is a 17th century (169?) weavers cottage of
either English or Flemish (Angles) origin. The products originating therein are
the products of Peter Koller, a dedicated Hardware and Software engineer of
more than 18 years experience in the design of computers, their software, and
their interface to the real world.
PM Make is a programmers project builder with a number of features.-
Built in project backup and restore.
User menus defined in the makefile can set compiler, etc., options.
Can include 'global' makefiles as headers.
Can stop on error.
Allows review of error messages.
Force make according to compiler or linker options or make all.
Can make .exe, .hlp, .dll, etc... all in one build.
Background build with 'pop up on error' mode.
Will work in multiple directories.
Fast.
Applicable to any third party compilers, linkers, or other tools.
PM Make evaluation copy is a fully functional product for you to enjoy for 30
days. After that, Please Register....
Other products available
Program Editor
PM Based editor with.-
LOADS of minor features plus...
Customisable edit functions (scripts).
Background Exec to Parse. Test/Make your programs before exiting the
editor.
Works with most compilers.
Customizable goto error keys position you at the error.
Extensively MultiThreaded.
Smooth Scrolling.
Now at V1.20 eg.- Well Tested.
Good General Purpose Editor, esp. large files.
Fast, Reliable, Safe.
Enquiries concerning the production of new products, or the inclusion of this
product into new products, or the inclusion of features from this product into
new products are very welcome.
See Also:-
Installation.
(c) Copyright
Note: This product is designed for use with third party products. These third
party products have their own copyright. This product does not confer any
rights to you in respect of a third party.
ΓòÉΓòÉΓòÉ 2. Installation ΓòÉΓòÉΓòÉ
Installation Instructions
You must use the Install utility provided if you wish to
Install PM Make.
Uninstall PM Make.
Register PM Make.
If you are merely registering, you can uncheck all the buttons before
proceeding. The minimum files installed are pmmake.exe, pmmake.hlp, and
register.doc.
That's it !! Enjoy.
To uninstall PM Make run install.exe and select Uninstall, the press Install.
Be sure the path and help path is entered correctly before uninstalling. Only
those files supplied in the original package will be deleted. You must delete
any Objects or Folders by hand.
ΓòÉΓòÉΓòÉ 3. (c)copyright ΓòÉΓòÉΓòÉ
This program is the (c) copyright of
Peter Koller,
La vieille Maison d'Anglais,
Trebuon,
29530, Plonevez du Faou,
FRANCE.
All Rights Reserved.
Note: This copyright includes the whole product, including the makefile
language format, the installation program, and all documentation associated
with the product.
1. You may use the program only on a single machine at any one time.If you
have purchased a multiple copy, you may use an according number of copies
simultaneously.
2. You may copy the program into machine readable or printed form for backup
or data compression purposes. You may not reverse engineer or disassemble
the program.
3. You may give this copy to others. You may also charge the end user
reasonable costs incurred by your distribution of this product. Please
ensure you distribute the entire package as shown below.
4. This product is Shareware. You Must be registered if you continue to use
this product after you have evaluated it. Unregistered software will time
out after one month.
5. If you have a Customer Registration Code (CRN), you must not disclose it
to anyone. Please quote the number shown in the statistics dialog, rather
than the full CRN, when seeking technical support.
The Author accepts no liability for fitness of purpose, or damages caused
whether incidental, or consequential, by the use of this product, howsoever
caused. This product is Sold As Seen. In those countries where this statement
conflicts with your statutory rights your statutory rights shall remain
unaffected.
This product consists of
load.cmd Run OS/2 unpack** to convert...
pmmk_p.ack this file into...-
install.exe The program install utility.
pmpfold.cmd REXX folder creation, used by install.exe
pmmake.exe The executable file.
pmmake.hlp This help File.
pmmake.inf This help File in .inf format.
register.doc The product registration sheet.
read.me Late breaking information.
make.inc Example Make include file
makefile Example Makefile
uninstal.doc How to remove (uninstall) PM Make
Note: ** IBM unpack (c) IBM. Registered trademarks of International Business
Machines Corporation
ΓòÉΓòÉΓòÉ 4. File Menu ΓòÉΓòÉΓòÉ
This menu enables you to open a makefile. Makefiles can come in several parts.
An include file specified on the Command Line. This file is always loaded
first if specified.
A make file. You can also drag and drop make files onto PM Make. If an
include file is specified on the Command Line, it is always loaded, and
always loaded first.
Any number of other files you may wish to append to the makefile. If you
open a new make file, the appended files are not reloaded automatically.
Appended files are added to the end of the makefile.
ΓòÉΓòÉΓòÉ 4.1. Open a Makefile ΓòÉΓòÉΓòÉ
Select open and you will see a standard file dialog. After you have pressed Ok,
an Include file is loaded (if specified on the Command Line) before the
selected file is opened.
You can also drag and drop make files onto PM Make. If an include file is
specified on the Command Line, it is loaded before the selected file is opened.
If an include file is specified the resultant makefile in memory is the
includefile with the makefile appended.
ΓòÉΓòÉΓòÉ 4.2. Append to a Makefile ΓòÉΓòÉΓòÉ
Any other files you may wish to append to the makefile. If you open a new make
file, the appended files are not reloaded automatically. Appended files are
added to the end of the makefile.
ΓòÉΓòÉΓòÉ 5. Command Line Usage ΓòÉΓòÉΓòÉ
pmmake (options) filename
eg pmmake /id:\make\make.inc /s /r /x mymake.mak
If you have a number of different objects for PM Make, you can put different
options into the parameters field of each object. To find out more about the
different things that can be achieved by object settings, look at the OS/2
system documentation.
These are the options available.
/a ...causes a make all. The makefile is run automatically.
/r ...causes a make update. The makefile is run automatically.
/t ...causes a test make. The makefile is NOT run automatically. include
/r or /a.
/s ...run minimised (silent mode). Restores to default size on error.
/x ...auto exit. exit when done. Will not exit if there is an error.
/i ...include file is always loaded first. This option is usually
present.
Errors
Use a batch command as shown below to cause an error exit during make.-
if errorlevel 1 exit
When you specify actions, you can use the full range of OS/2 batch commands
available.
Examples
pmmake /id:\make\make.inc /t /a makefile
Test runs a make all on make.inc + makefile.
pmmake /id:\make\make.inc /s /r /x makefile
Runs make.inc + makefile and exits if no errors were found. Runs minimised.
Note: There is no space between options and their contents. Using /x,
/X, -x, and -X, (where x is an example option) are all equivalent.
ΓòÉΓòÉΓòÉ 6. Edit Menu ΓòÉΓòÉΓòÉ
This menu is used to.-
Undo the last action.
Cut a Selected area to the clipboard
Copy a Selected area to the clipboard
Paste from the clipboard over a selected area.
Clear a Selected area. (ERASE it !!)
ΓòÉΓòÉΓòÉ 6.1. Undoing Changes ΓòÉΓòÉΓòÉ
Select Undo from the Edit menu or type alt+backspace to undo the last action.
You Cannot undo two different actions. eg. if you type something and then
delete a char and then type something else, only the last bit of typing is
undone.
ΓòÉΓòÉΓòÉ 6.2. Cutting out blocks ΓòÉΓòÉΓòÉ
First select a piece of text to hilite it.
Select Cut from the Edit menu or press shift+del to copy the selected text to
the clipboard and delete the hilited area.
See also
Copy a Selected area to the clipboard
Paste from the clipboard over a selected area.
Clear a Selected area. (ERASE it !!)
ΓòÉΓòÉΓòÉ 6.3. Copying blocks ΓòÉΓòÉΓòÉ
First select a piece of text to hilite it.
Select Copy from the Edit menu or press ctrl+ins to copy the selected text to
the clipboard, this does not delete the hilited area.
See also
Cut a Selected area to the clipboard
Paste from the clipboard over a selected area.
Clear a Selected area. (ERASE it !!)
ΓòÉΓòÉΓòÉ 6.4. Pasting blocks ΓòÉΓòÉΓòÉ
Select Paste from the Edit menu or press shift+ins to delete any area that may
be hilited and then copy any text in the clipboard into the file at the
position previously occupied by the hilited area (eg. at the cursor position).
See also
Cut a Selected area to the clipboard
Copy a Selected area to the clipboard
Clear a Selected area. (ERASE it !!)
ΓòÉΓòÉΓòÉ 6.5. Clearing selected text ΓòÉΓòÉΓòÉ
First select a piece of text to hilite it.
Select Clear from the Edit menu or press del to delete the hilited area.
Data is not copied to the clipboard.
See also
Cut a Selected area to the clipboard
Copy a Selected area to the clipboard
Paste from the clipboard over a selected area.
ΓòÉΓòÉΓòÉ 6.6. Selecting Text ΓòÉΓòÉΓòÉ
To select a block of text....
1. Position the cursor at the start or end of the block you wish to select.
2. Hold down the left mouse button and move the mouse over the area
required.
OR
1. Position the cursor at the start or end of the block you wish to select.
2. Hold down the Shift Key and use the cursor movement (arrow, home, end,
etc.) Keys.
Note: The Selected block will be hilited.
Because ctrl+ins (copy) and shift+ins (paste) as well as selecting text works
in any entry field, you can copy a string to the clipboard and then into the
entryfield desired.
ΓòÉΓòÉΓòÉ 7. Project Menu ΓòÉΓòÉΓòÉ
This menu is used to.-
Backup the project files.
Restore the project files.
Query Dependencies within the project.
Test Make the project.
Make Update the project.
Make All the project.
ΓòÉΓòÉΓòÉ 7.1. Backup ΓòÉΓòÉΓòÉ
Before you begin.-
1. Make sure you have a formatted disk in your backup drive (if applicable)
2. Run a test backup first!!! This will test your makefile and give you an
idea of space requirements. Make sure all the required files are going to
be backed up.
3. Do NOT interrupt a backup once started.
4. You may need to set the following commands in your makefile
^projectroot()
^filepath()
^files()
Make sure that you also backup such items as the makefile and docs. Here is an
example.
^projectroot(d:\projects\myproj);
^filepath(..\docs);
^files()
{
makefile
read.me
internal.doc
}
All the remaining files are extracted from the make profiles, so that if PM
Make can make your project it can also back it up.
During backup the file sizes and free space on your backup drive are
displayed. If there is an older version of the file on disk, this is taken
into account as free space. This means that often the space required to save a
file is less than the file size shown. If there is insufficient space, PM Make
will prompt for a new disk up to three times before giving up. This is true
even if you are backing up to a hard disk.
It pays to keep two backups of your project.
ΓòÉΓòÉΓòÉ 7.2. Restore ΓòÉΓòÉΓòÉ
Restore is used to recover files from the backup drive. For restore to work,
the makefile must be loaded and the backup disk must contain the files in the
right places. For this reason, you should only try and restore from disk's
backed up with PM Make.
Warning
Restore will happily copy old backup files over new files. Be sure that you
really want to restore a particular file from your backup. Test Restore first.
You can.-
Restore All files.
Restore Source files.
Select the files to restore.
The list box is updated whenever you click on the restore all or restore
source radio buttons.
If you decide to select the files to restore, you can select multiple files
from the list box by dragging, by using ctrl and clicking, or by using shift
and clicking. A little experimentation will reveal all.
Restore will restore the files into the directories specified in your make
file. If these directories do not exist, they will be created.
ΓòÉΓòÉΓòÉ 7.3. Testing the Makefile ΓòÉΓòÉΓòÉ
When you have loaded your make file and before you make (compile and link) your
project, you ought to run a test make. Test make shows you the batch/command
file that will be created when you run make. If you wish to see what a
batchfile for make all looks like, you can do it from the command line.
eg.-
pmmake /t /a ...any other options... makefile
More realistically.-
pmmake /id:\make\make.inc /t /a d:\project\myproj\mymake.mak
ΓòÉΓòÉΓòÉ 7.4. Make ΓòÉΓòÉΓòÉ
Make will create a batch file to update your project and will then run the
batch file.
You can update a number of exe's, dll's, hlp's, etc at the same time.
ΓòÉΓòÉΓòÉ 7.5. Make All ΓòÉΓòÉΓòÉ
Make all will rebuild your project from scratch. Every make is performed.
You can start a make all and then minimize PM Make. If your PC is up to it, you
can then do something else. Note that compilation is very power hungry.
If you attempt to run two PM Make's at the same time you will get a mutual
exclusion error message asking you to try later.
ΓòÉΓòÉΓòÉ 7.6. Query Dependencies ΓòÉΓòÉΓòÉ
Select a file from the dropdown listbox marked 'This File', and PM Make will
search the makefile to find all the output files that depend upon this file.
This is of most use for header files as an aid to rationalising large projects.
Often, a header of little consequence is included in every file, whereas a
little judicious subdividing of headers can reduce compile times drastically.
Bear in mind that if you have a ^get() function, or a $Variable in your ^make()
function to define a filename, the results may well depend on user menu
selections.
ΓòÉΓòÉΓòÉ 8. Options Menu ΓòÉΓòÉΓòÉ
No options are automatically saved. It is up to you to 'customize' PM Make as
you wish. You can use uninstall to clear all saved options.
ΓòÉΓòÉΓòÉ 8.1. Saving the window size ΓòÉΓòÉΓòÉ
You can save the size of the PM Make window. You cannot save it's position.
PM Make will then always startup with the saved window size.
ΓòÉΓòÉΓòÉ 8.2. Saving the backup options ΓòÉΓòÉΓòÉ
The options saved are the state of the CheckButtons in both backup and restore
dialogs, as well as the Backup Path.
ΓòÉΓòÉΓòÉ 8.3. Statistics ΓòÉΓòÉΓòÉ
This dialog shows current PM Make memory usage. Enjoy!
Note: Allocated space may be wildly different from used space. This may be
because of allocation block size, guard memory, and cleared (no longer used)
workareas.
ΓòÉΓòÉΓòÉ 9. User Menus ΓòÉΓòÉΓòÉ
This is where you will find user created dialogs. These dialogs are specified
in the makefile.
ΓòÉΓòÉΓòÉ 10. Help Menu ΓòÉΓòÉΓòÉ
Help is provided by this menu. You may use F1 to get help at any time.
ΓòÉΓòÉΓòÉ 10.1. Keys Help ΓòÉΓòÉΓòÉ
The only relevant key not shown on the menu's is ESC.
This key will TRY and stop a make, backup etc. There is no guarantee that it
will succeed. This is because separate sessions can refuse to be killed.
The recommended approach is to Test Everything first!
ΓòÉΓòÉΓòÉ 11. Introducing PM Makefiles ΓòÉΓòÉΓòÉ
This chapter introduces makefiles for PM Make, and shows you how to construct
your own. For further information see also Makefile function syntax
A number of compilers, linkers etc will produce output files in the directory
in which they are run. Linkers often link large numbers of objects together, if
each one had to have a full path attached things quickly get out of hand.
Often the options for compilation, linking and testing are interrelated.
Changing a compiler option has repercussions on which files need to be
re-built.
It is for the above reasons that PM Make uses it's own makefile format. This
format allows you to change directories, change compilation and linker options,
force particular files to make, and backup any changes.
In short.-
1. Change Directories.
a. ^workpath()
Allows you to run different makes in different directories
2. Change Compilation and linker options.
a. ^actions()
b. ^vars()
c. ^menu()
d. ^get()
See Also PM Make Include file
3. Forcing Makes
a. ^make()
For example ^make(..\build\main.obj, $Compile, ^get($ForceID,1,0);){main.c;}
4. Backup and Restore
a. ^projectroot()
b. ^filepath()
c. ^files()
See Also Backup.
ΓòÉΓòÉΓòÉ 11.1. Internal Operation ΓòÉΓòÉΓòÉ
This section describes how PM Make handles makefiles.
This is useful to know if you are having problems. PM Make does not read
makefiles in one hit but in two passes. The first pass being on open, the
others depending on what is wanted.
ΓòÉΓòÉΓòÉ 11.1.1. Open ΓòÉΓòÉΓòÉ
When the makefile is opened PM Make reads the include file if there is one,
then appends makefile and sets up a series of string buffers for.-
^actions()
^vars()
^menu()
If the user appends another file, the operation is repeated.
The only vars evaluated are those associated with menu's. If ^get() is used in
^menu(), then the associated menuitem must be declared first.
ΓòÉΓòÉΓòÉ 11.1.2. Make ΓòÉΓòÉΓòÉ
On Test Make, Make, or Make All, the following functions are run.-
^workpath()
^make()
^out()
At this stage all vars and ^get()'s used are evaluated.
For Make and Make All, PM Make opens a file in the directory specified by the
TMP environment variable. You must declare TMP in config.sys.
eg.-
SET TMP=C:\tmp
The filename of this file is pmmk~~~~.cmd. This file is then run using
DosStartSession.
A mutual exclusion semaphore prevents other copies of PM Make attemping to
make at the same time.
ΓòÉΓòÉΓòÉ 11.1.3. Backup and Restore ΓòÉΓòÉΓòÉ
On Backup and restore the following functions are run.-
^projectroot()
^filepath()
^workpath() ...runs ^filepath()
^make() ...runs internal version of ^files()
^files()
This builds a table of either the source files or all the files in memory.
If ^projectroot() is not specified then all files are backed up to the backup
path.
Backup and restore use this memory table to determine which files to copy.
Copying is done using the ordinary copy command (with /v for verify).
ΓòÉΓòÉΓòÉ 11.2. A Minimal makefile ΓòÉΓòÉΓòÉ
Here is a minimal makefile for pmmake....
"A comment is usually in quotes and always OUTSIDE the functions"
^actions()
{
Compile =
icc /Fo$*.obj /C /Ss $*.c
;
Link =
ilink /out:$*.exe /optf /BASE:65536 /ALIGN:16 $*.obj cppos30.lib $*.def
rc $*.res $*.exe
;
Resource = rc -r -x $*.rc;
Help = ipfc $*.ipf;
}
^workpath(d:\program\pmmake\csource);
^make(..\build\about.obj,$Compile, 0)
{
about.c;
about.h;
pmmake.hr;
}
"... A number of makes have been deleted for clarity ..."
^make(..\build\runcmd.obj,$Compile, 0)
{
runcmd.c;
runcmd.h;
mainvars.h;
message.h;
pmmake.hr;
}
^workpath(d:\program\pmmake\dialogs);
^make(pmmake.res,$Resource, 0)
{
pmmake.rc;
..\csource\pmmake.hr;
..\csource\help.hp;
help.dlg;
about.dlg;
pmuser.dlg;
pmmake.ico;
}
^workpath(d:\program\pmmake\build);
^make(..\pmmake.exe,$Link, 0)
{
..\dialogs\pmmake.res;
about.obj;
backup.obj;
cmdline.obj;
debug.obj;
dialog.obj;
fileio.obj;
help.obj;
message.obj;
mkparse.obj;
pmmake.obj;
runcmd.obj;
..\pmmake.def;
}
^workpath(d:\program\pmmake\ipfhelp);
^make(pmmake.hlp, $Help, 0)
{
pmmake.ipf;
}
There is a complete copy of the makefile and includefile for PM Make supplied.
In addition to the above, this contains menu's for a number of options,
conditional makes etc. You may use these files for the basis of your own
project.
ΓòÉΓòÉΓòÉ 11.3. PM Make Include file ΓòÉΓòÉΓòÉ
This example is a working include file for PM Make. It sets up a number of
menu's and variables. Though rather complex, it shows what can be achieved. If
you own IBM's VisualAge** or C Set++** this will help get you started.
Note: **(c)IBM. Registered trademarks of International Business Machines
Corporation.
" *****************************************************************************
* ICC Make Include File
*
* (c) Peter Koller 1995
*
* ICC, ILINK, RC, IPFC, etc. are all (c)IBM.
******************************************************************************"
"********************* Generic Menu's ******************************"
^vars()
{
FALSE = 0;
TRUE = 1;
MENU_GENERAL_ID = 100;
ERREXIT_ID = 101;
MENU_COMP_ID = 200;
LIST_ID = 201;
DEBG_ID = 202;
OPT_ID = 203;
FINT_ID = 204;
FFLT_ID = 205;
MLIB_ID = 206;
DYNA_ID = 207;
DLL_ID = 208;
MENU_LINK_ID = 300;
L_EXEP_ID = 301;
L_MAP_ID = 302;
L_OPTL_ID = 303;
}
^menu($MENU_GENERAL_ID,"General Options")
{
($ERREXIT_ID, "Exit on Error", $TRUE);
}
^menu($MENU_COMP_ID,"Compiler Options")
{
($LIST_ID, "Generate Listing", $FALSE);
($DEBG_ID, "Select Debug Mode", $FALSE);
($OPT_ID, "Optimize", $TRUE);
($FINT_ID,"Fast Integer Maths", $TRUE);
($FFLT_ID,"Fast Floating Point Maths", $TRUE);
($MLIB_ID,"Use Multithread Library", $TRUE);
($DYNA_ID, "Use Dynamic Linking", $FALSE);
($DLL_ID, "Make a DLL", $FALSE);
}
^menu($MENU_LINK_ID,"Linker Options")
{
($L_EXEP_ID,"Pack (compress) File",$TRUE);
($L_MAP_ID,"Create map file",$FALSE);
($L_OPTL_ID,"Remove unused functions",$TRUE);
}
^vars()
{
C_GEN = "/C /Ss";
C_OPT = ^get($OPT_ID,"/O",);
C_INT = ^get($FINT_ID,"/Gi",);
C_FLT = ^get($FFLT_ID,"/Gf",);
C_LIB = ^get($MLIB_ID,"/Gm",);
C_DBG = ^get($DEBG_ID,"/Ti",);
C_LST = ^get($LIST_ID,"/L",);
C_DYN = ^get($DYNA_ID,"/Gd",);
C_DLL = ^get($DLL_ID,"/Ge-",);
L_OPT = ^get($L_OPTL_ID,"/optf",);
L_MAP = ^get($L_MAP_ID,"/m",);
L_EXP = ^get($L_EXEP_ID,"/e",);
L_DBG = ^get($DEBG_ID,"/de /db",);
L_DLL = ^get($DLL_ID,"/dll","/exec");
L_GEN = "/BASE:65536 /ALIGN:16";
L_LIB = ^get($MLIB_ID,"cppom30.lib","cppos30.lib");
ERR_LEV = ^get($ERREXIT_ID,"@if errorlevel 1 exit",);
}
^actions()
{
Compile =
@echo ╨┐╨┐╨┐
@echo ╨╛╨╛╨╛ Compiling $*.c ╨┐╨┐╨┐
@echo ╨┐╨┐╨┐
icc /Fo$*.obj $C_GEN $C_OPT $C_INT $C_FLT $C_LIB $C_DBG $C_LST $C_DYN $C_DLL $*.c
$ERR_LEV
;
Link =
@echo ╨┐╨┐╨┐
@echo ╨╛╨╛╨╛ Building $*.exe ╨┐╨┐╨┐
@echo ╨┐╨┐╨┐
ilink /out:$*.exe $L_GEN $L_OPT $L_MAP $L_EXP $L_DBG $L_DLL $*.obj $L_LIB $*.def
$ERR_LEV
rc $*.res $*.exe
$ERR_LEV
;
Resource =
@echo ╨┐╨┐╨┐
@echo ╨╛╨╛╨╛ Running resource compiler on $*.rc ╨┐╨┐╨┐
@echo ╨┐╨┐╨┐
rc -r -x $*.rc
$ERR_LEV
;
Help =
@echo ╨┐╨┐╨┐
@echo ╨╛╨╛╨╛ Building $*.hlp ╨┐╨┐╨┐
@echo ╨┐╨┐╨┐
ipfc $*.ipf
$ERR_LEV
;
}
ΓòÉΓòÉΓòÉ 12. Makefile function syntax ΓòÉΓòÉΓòÉ
This chapter gives the syntax definition of each function.
^actions()
^filepath()
^files()
^get()
^make()
^menu()
^out()
^projectroot()
^vars()
^workpath()
ΓòÉΓòÉΓòÉ 12.1. ^actions() ΓòÉΓòÉΓòÉ
Syntax
^actions()
{
action = Text or "Text" ^get(..,..,..){} $Variable $*.ext;
}
Action text may contain.-
Variables in the form $Variable
The ^get() function if not terminated in ; ...unless the last item.
$*. filename substitution variables. These are not normal filename
wildcards but '$*.' followed by a file extention with NO OTHER wildcards
Action text may not contain.-
Semicolon ; unless in quotes or to terminate.
Other Actions
Functions other that ^get()
Action names must be unique and not be substrings of other actions or
variables.
The action function is run on makefile load. The action text is not evaluated
by this function and may contain undeclared variables.
Actions are only used by ^make().
$*. substitution on making.- if more that one match is found eg a.obj, and
b.obj.- '$*.obj' will become 'a.obj b.obj'.
^actions()
{
QuickCompilation = icc $*.c;
}
ΓòÉΓòÉΓòÉ 12.2. ^filepath() ΓòÉΓòÉΓòÉ
Syntax
^filepath(path);
The first time you use ^filepath(), ^workpath(), or ^projectroot() it should
contain a fully unqualified path such as c:\path\mypath. All these functions
set the workpath of PM Make.
Unlike ^workpath(), ^filepath() does not output change directory information
to the make batch file.
^filepath(..\docs);
ΓòÉΓòÉΓòÉ 12.3. ^files() ΓòÉΓòÉΓòÉ
Syntax
^files()
{
filename;
filename;
etc...;
}
^files() is used to declare files such as documents and the makefile itself.
Used for backup and restore.
Often used in conjunction with ^filepath(). Alternatively the full filename
and path can be used.
ΓòÉΓòÉΓòÉ 12.4. ^get() ΓòÉΓòÉΓòÉ
Syntax
^get(ItemID,"true","false"); ...or {}
^get() may contain ^get() or $Variable. ^get() will return a value according
to the ButtonCheckstate of the menuitem ItemID. (see ^menu)
Test your knowledge of Boolean algebra by using ^get() within ^get().
Anding two ^get()'s
^get(Item_one_id,^get(Item_two_id,"true","not true"){},"not true");
Oring two ^get()'s
^get(Item_one_id,"true",^get(Item_two_id,"true","not true"){});
ΓòÉΓòÉΓòÉ 12.5. ^make() ΓòÉΓòÉΓòÉ
Syntax
^make(resultfilename, $Action, ForcedMakeFlag)
{
filename;
filename;
etc...;
}
^make() may contain ^get() or $Variable. file names may contain paths, It is
usual to declare a ^workpath() at least at the beginning of the makefile and
then use short filenames (it's less typing).
^make() is run in order. You cannot link first and then compile. Usually you
compile each object, and then build the resource file, the message file, and
then link the lot at the end. After that, you can compile the help file, an
entirely different project or subproject and so on.
ΓòÉΓòÉΓòÉ 12.6. ^menu() ΓòÉΓòÉΓòÉ
Syntax
^menu(MenuID, "Menu Title Text")
{
(ItemID, "First Item Text", ButtonCheckstate);
(ItemID, "Second Item Text", ButtonCheckstate);
(ItemID, "Third Item Text", ButtonCheckstate);
(ItemID, "Fourth Item Text", ButtonCheckstate);
}
All ID's must be unique. ButtonCheckstate.- 0 = Not Checked; 1 = Checked.
Used to build a user menu. You may use variable substitution and ^get() but
beware that such expressions are evaluated and must be valid.
ΓòÉΓòÉΓòÉ 12.7. ^out() ΓòÉΓòÉΓòÉ
Syntax
^out()
{
Text
}
Used to output text to a make batchfile. Text may contain ^get(); or $vars or
quoted strings "hello".
Semicolons ; are output. Leading whitespace is stripped. All ^get()'s and
$vars are evaluated.
ΓòÉΓòÉΓòÉ 12.8. ^projectroot() ΓòÉΓòÉΓòÉ
Syntax
^projectroot(path);
The first time you use ^filepath(), ^workpath(), or ^projectroot() it should
contain a fully unqualified path such as c:\path\mypath. All these functions
set the workpath of PM Make.
^projectroot() is used specifically for backup and restore. You may only use
this function once.
^projectroot() is used to create subdirectories in your backup. eg.-
Assume projectroot is c:\projects\myproj and the backup path is A:
c:\projects\myproj maps to A:
c:\projects\myproj\csource maps to A:\csource
c:\projects\myproj\docs maps to A:\docs
c:\icons\myicons maps to A:
ΓòÉΓòÉΓòÉ 12.9. ^vars() ΓòÉΓòÉΓòÉ
Syntax
^vars()
{
Variable = Text or "Text" ^get(..,..,..){} $Variable;
}
Variable text may contain.-
Other variables in the form $Variable
The ^get() function if not terminated in ; ...unless the last item.
Variable text may not contain.-
Semicolon ; unless in quotes or to terminate.
Other Actions
Functions other that ^get()
Variable names must be unique and not be substrings of other actions or
variables.
The vars function is run on makefile load. The variable text is not evaluated
by this function and may contain undeclared variables.
If variables are used for the menu function they must be declared before the
menu function, as this function will evaluate the variable. The menu function
is run on makefile load.
ΓòÉΓòÉΓòÉ 12.10. ^workpath() ΓòÉΓòÉΓòÉ
Syntax
^workpath(path);
The first time you use ^filepath(), ^workpath(), or ^projectroot() it should
contain a fully unqualified path such as c:\path\mypath. All these functions
set the workpath of PM Make.
Unlike ^filepath(), ^workpath() outputs change directory information to the
make batch file.
^workpath() is usually called just before a ^make() eg.-
^workpath(c:\project\csource);
^make(..\build\myprog.obj, $Compile, 0)
{
myproj.cpp
}
ΓòÉΓòÉΓòÉ 12.11. General syntax ΓòÉΓòÉΓòÉ
Generic function
^function(){}
or
^function();
There is no standard for arguments in curly{} brackets.
In round() brackets each argument is single and separated from its neighbor by
a comma (whitespace is ignored).
^function(argument1, argument2, argument3){}
Quoted strings
"This is a quoted string"
"
This is also a quoted string.
Quoted strings are often used outside
functions to make comments.
"
Quoted strings can be used in functions to denote text that is not evaluated
^vars()
{
Message = "Hello World!";
}
^out()
{
"$Message = "$Message
}
This example outputs.-
$Message = Hello World!
Comments
Anything outside a function is a comment. All functions start with a caret '^'.
You can use quotation marks ".." to comment out unwanted functions.
You do not need to put comments in quotes, but it may nevertheless be a good
idea. Beware that it is very easy to forget a quote and very hard to debug as
the whole file can be inadvertently commented out. PM Make will stop at the
last unmatched quote, not necessarily where the error is.