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 The -t parameter indicates the target node of your project to compile/clean or to execute; the path can be absolute or relative but you have to respect the XML heirarchy of the target.

When compiling/cleaning, the target can be any node of the project except the Configuration and Virtual Folder nodes since the -t parameter indicates the part of the project you want to compile or clean. It can be an Application node, a Library node, a single file, etc.

When executing, the target node must be a Configuration node and has to be called with the parameter -exec.

When executing the target node and the Application and underlying Configuration node have the same name, you must specify the relative path or the absolute path to the Configuration node.

This example specifes the relative path to the target:
$ gsmake -exec -t HelloWorld/HelloWorld HelloWorld.4pw
This example specifes the absolute path to the target:
$ gsmake -exec -t "Hello World/HelloWorld/HelloWorld" HelloWorld.4pw

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.

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.

Enter an absolute path, or a path relative to the $GSTDIR/bin/src/ag/tpl directory. The default value ("default") corresponds to the multiple-dialog template directory.

-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