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