Project reference#

Makefiles: Top-level | Instance | Master

Inheritance: Project

Project is the root class for all projects. It is defined in $(GNUSTEP_MAKEFILES)/rules.make. It doesn’t actually exist – it’s more like a protocol.

Project properties#

Installation#

xxx_COPY_INTO_DIR#

By adding the line

xxx_COPY_INTO_DIR = ../Vanity.framework/Resources

to you GNUmakefile, you cause the after-xxx-all:: stage of compilation of xxx to copy the created stuff into the local directory ../Vanity.framework/Resources (this path should be relative). It also disables installation of xxx.

This is normally used, for example, to bundle a tool into a framework. You compile the framework, then the tool, then you can request the tool to be copied into the framework, becoming part of the framework (it is installed with the framework etc).

xxx_STANDARD_INSTALL#

By setting this to no, you can disable the standard installation code for a certain project. This can be useful if you are installing manually in some other way (or for some other reason you don’t want installation to be performed ever) and don’t want the standard installation to be performed. Please note that before-xxx-install and after-xxx-install are still executed, so if you want, you can add your code in those targets to perform your custom installation.

xxx_INSTALL_DIRS#

By adding an xxx_INSTALL_DIRS variable you can request additional installation directories to be created before the first installation target is executed. You can also have general ADDITIONAL_INSTALL_DIRS directories that are always created before install is executed; this is done top-level in the Master invocation.

Linkage#

xxx_NEEDS_GUI#

You can control whether you want to link against the gui library by using one of the two commands –

xxx_NEEDS_GUI = yes
xxx_NEEDS_GUI = no

(where ‘xxx’ is the name of your application/bundle/etc.)

You can also change it for all applications/bundles/etc by doing

NEEDS_GUI = yes # (or no)

If you don’t specify anything, the default for the project type will be used (this is the NEEDS_GUI = yes/no that is at the top of all project types’ makefiles).

If the project type doesn’t specify anything (eg, doesn’t need linking to ObjC libraries, or it is buggy/old or it is from a third-party and hasn’t been updated yet) then the default is NO.

xxx_OBJ_FILES#

The list of object files that are not produced during the normal compilation stage to link into the resulting binary.

xxx_LDFLAGS#

Source files#

xxx_OBJC_FILES#

The list of Objective-C source files to be compiled

xxx_C_FILES#

The list of C source files to be compiled

xxx_OBJCC_FILES#

The list of Objective-C++ source files to be compiled

xxx_CC_FILES#

The list of C++ source files to be compiled

xxx_PSWRAP_FILES#

The list of PostScript Wrap (.psw) source files to be compiled into a C source and header file, which will be compiled and added to the project.

xxx_JAVA_FILES#

The list of Java source files to be compiled into bytecode.

xxx_JAVA_JNI_FILES#

The list of Java files to be converted into Java JNI headers.

xxx_WINDRES_FILES#

It’s unclear what this is for. See the windres man page.

Compiler flags#

xxx_INCLUDE_DIRS#

The list of additional directories that the compiler will search when it is looking for include files. These flags are specific to the xxx target; see ADDITIONAL_INCLUDE_DIRS to see how to specify additional global include directories. The directories should be specified as -I flags to the compiler. The additional include directories will be placed before the normal GNUstep and system include directories, and before any global include directories specified with ADDITIONAL_INCLUDE_DIRS, so they will always be searched first.

See also: ADDITIONAL_INCLUDE_DIRS

xxx_CPPFLAGS#

Additional flags that will be passed to the C preprocessor when compiling C-family files to generate the xxx library. Adding flags here does not override the default CPPFLAGS, see CPPFLAGS, they are in addition to CPPFLAGS. These flags are specific to the xxx library, see ADDITIONAL_CPPFLAGS, to see how to specify global preprocessor flags.

xxx_CFLAGS#
xxx_OBJCFLAGS#
xxx_CCFLAGS#
xxx_OBJCCFLAGS#

Dependencies#

xxx_OBJC_LIBS#

The list of additional libraries that the linker will use when linking the target. These libraries are specific to the xxx target, see ADDITIONAL_OBJC_LIBS, to see how to specify additional global libraries. These libraries are placed before all of the Objective-C Runtime and system libraries, and before the global libraries specified with ADDITIONAL_OBJC_LIBS, so that they will be searched first when linking. The additional libraries should be specified as -l flags to the linker as the following example illustrates:

xxx_OBJC_LIBS = -lSwarm -lHello

See also: ADDITIONAL_OBJC_LIBS

xxx_LIBS#
xxx_LIBRARY_LIBS#
xxx_NATIVE_LIBS#
xxx_LIB_DIRS#

The list of additional directories that the linker will search when it is looking for library files. The directories should be specified as ‘-L’ flags to the linker. The additional library directories will be placed before the GNUstep and system library directories so that they will be searched first by the linker. The following example illustrates two additional library directories; /usr/local/gnu/lib will be searched first, then /usr/gnu/lib, and finally the GNUstep and system directories which are automatically defined by the Makefile Package.

ADDITIONAL_LIB_DIRS = -L/usr/local/gnu/lib -L/usr/gnu/lib
xxx_CLASSPATH#
xxx_LIBRARIES_DEPEND_UPON#