Macro’s

PMake allows for custom defined variables and options that can be set and read at runtime from the PMake.tx file. The following functions are defined for this purpose;

procedure set_(name: string; value: boolean);
procedure set_(name: string; value: integer);
procedure set_(name: string; value: string);
procedure set_(name: string; value: double);

function val_(name: string): string;
function val_(name: string): boolean;
function val_(name: string): integer;
function val_(name: string): double;

You can use set_ to create a custom variable and use val_ in any PMake.txt file.

All API functions will do a macro expand internally. The following ;

$(PMAKE_HOST_SYSTEM_NAME)
Expands to the target OS that PMake is invoked on. Example is win64 on a 64bit windows machine.
$(PMAKE_HOST_SYSTEM_PROCESSOR)
Expands to the target CPU that PMake is invoked on. Example is x86_64 on a 64bit machine.
$(PMAKE_PAS_COMPILER)
The full path to the pascal compiler
$(PMAKE_SOURCE_DIR)
The path to the top level of the source tree.
$(PMAKE_CURRENT_SOURCE_DIR)
The path to the source directory currently being processed.
$(PMAKE_BINARY_DIR)
The path to the top level of the build tree.
$(PMAKE_CURRENT_BINARY_DIR)
The path to the binary directory currently being processed.
$(PMAKE_PAS_COMPILER_VERSION)
Compiler version string.
$(UNITSOUTPUTDIR)

Expands to the unit output directory that is defined for the specific package. The value is equivalent to:

.\units\$(PMAKE_HOST_SYSTEM_PROCESSOR)-$(PMAKE_HOST_SYSTEM_NAME)
$(BINOUTPUTDIR)

Expands to the binary output directory that is defined for the specific package. The value is equivalent to:

.\bin\$(PMAKE_HOST_SYSTEM_PROCESSOR)-$(PMAKE_HOST_SYSTEM_NAME)
$(EXE)
Expands to the executable file extension defined for the platform PMake is invoked on. On UNIX systems executables have no extension by default, on the other platforms this is .exe.
$(DLL)
Expands to the shared library file extension defined for the platform PMake is invoked on.
Operating systems Library prefix Library extension
Apple lib .so
BeOS lib .so
FreeBSD lib .so
Linux lib .so
NetBSD lib .so
Windows none .dll