The gsmake command

The gsmake command is a command line option to build projects. The tool is located in the $GSTDIR/bin (or, if you are on a Mac, $GSTDIR/Contents/MacOS) directory.

Syntax

gsmake [options] file_list

where file_list is a list of target Project (4pw) files, with or without the extension.

Table 1. gsmake - Help and version information
Argument Description
-h Display help information.
-V Display this program name and version.
Table 2. gsmake - Targets
Targets Parameter Description
-active Target the default application, as set in the project.
-all Target the complete project (default behavior).
-t TARGET Add TARGET to the list of targets to build. The target can be the name of a node in the project or a path to the node to compile; the path can be absolute or relative but you have to respect the XML heirarchy of the target.

You can specify a whole (XML) path. The XML path is based on XPath, but it is a sub-set of the XPath syntax that can be used.

For example, if you want to compile the file OrderReport.4gl from the Reports.4pw project, you could do it in the following ways:
gsmake -t OrderReport.4gl -r Reports.4pw
gsmake -t OrderReport/src/OrderReport.4gl -r Reports.4pw
gsmake -t Reports/Applications/OrderReport/src/OrderReport.4gl -r Reports.4pw
However you could not do it in this way:
gsmake -t Reports/OrderReport/src/OrderReport.4gl -r Reports.4pw

The -t argument can be used multiple times to build several targets.

Table 3. gsmake - Operations (exclusive)
Operations Parameter Description
-b Build the target (default behavior). The files that are not up-to-date are compiled, the others are not changed.
-r Rebuild the target. The output files are deleted, then all files are compiled.
-c Clean the target. The output files are deleted.
-convert Convert the project to the latest format.
-force-build Force the build/rebuild of the target. The files are compiled, whether or not they are up-to-date.
-env FILE_PATH Generate a script that sets the environment defined in the project (as set on the project nodes as well as additional environment variables computed through dependencies) and changes the directory to the project directory.

Provide the filename (and optional path) as the parameter.

The goal is to replicate a project environment in a console. For example, starting from a Genero Workplace (envgenero), you can run the generated script to set the additional project-specific environment, and then run the application in the same environment that it would run under Genero Studio.

-exec Executes the application specified by the target.
Table 4. gsmake - Options
Options Parameter Description
-j num_jobs Set the number of parallel jobs to num_jobs. The default is 1.

Set num_jobs to 0 to use the number of CPUs on the local computer.

When this option is used, gsmake attempts to start multiple compilations in parallel, which should speed up the global compilation time.

-encoding ENCODING Set the encoding to ENCODING. The default is System encoding.
-max-errors num_max_err Set the maximum number of erroneous files to num_max_err. The default is 5.

Set num_max_err to 0 (zero) for an unlimited number of error files.

-disable-dependencies Disable the computation of the dependencies database. The deafult is false.
-ag-templateDir TEMPLATE Set the Application Generator template directory to TEMPLATE.
-generate-4pwdb Generate the 4pwdb file only. Default is False.
-wcDir WEBCOMPONENTS_DIR Set the WebComponents Directory path
-verbose Specify verbose mode for build / link / execution rules.
-port PORT Set the port number.
-javaServerPort JAVAPORT Set the Java Server port number.
-javaServerLog LOGLEVEL Set the Java Server log level.
Option Description
FINE Turn on all logs.
INFO Turn on log level to info message.
WARNING Turn on log level to warnings.
SEVERE Turn on log level to severe errors (default).
OFF Turn off logs.
-filters MESSAGE_ID By default, any TODO or BUG comments in the source code appear as messages in the output when using the gsmake tool from the command line to build a project.

To exclude TODO and BUG comments, as well as any specific error message, use the -filters option followed by a comma-delimited list of items to exclude.

For example, to compile the HelloWorld project but exclude any TODO and BUG comments from the output:

gsmake -filters TODO,BUG HelloWorld.4pw

To compile the HelloWorld project but exclude any TODO comments and any -6609 errors from the output:

gsmake -filters TODO,-6609 HelloWorld.4pw