Release Date: April 2004
For an overview see the nmake for UWIN Overview page.
UWIN release 3.1 is required in order to use nmake for UWIN. The user is responsible for obtaining and installing UWIN. nmake uses the UWIN cpp and UWIN cc wrapper. Some UWIN packages may not have these components.
/'). Colon ('
:') and back-slash ('
\') are not allowed in pathnames in makefiles. Pathnames must be valid on hosting file systems. FAT and NTFS file systems do not allow some characters in pathnames, such as
The following new features are introduced in this release to support the Windows 2000 platform.
::operators can build both static (
.a) and dynamic (
.dll/.lib) libraries. The generated
.libfiles are installed in
LIBDIRby default. Following standard practice on win32 platforms, the generated
.dllfiles are installed in BINDIR. When building dynamic libraries the PIC compiler flag should be included (
CCFLAGS+=$$(CC.PIC)). The following examples show the assertions that can be used to build libraries.
abc :LIBRARY: abc.c
libabc.a) by default, or both static and dynamic libraries (
installcommon action is asserted.
libabc.a :: abc.c
abc.dll :: abc.c
abc.dll) and corresponding compile-time lib file (
abc.lib). A static library (
libabc.a) is also generated and used for the generation of the dynamic library files.
abc.lib :: abc.c
:LIBRARY:operator provides target abstraction for platform portability. When using
::to make dynamic libraries it is recommended to use
$$(CC.SUFFIX.SHARED)for platform portability. For example, the following will make
libabc.soon Solaris, and
libabc$$(CC.SUFFIX.SHARED) :: a.c
lib". When searching for libraries specified as
-lnamenmake will search for files both with and without the leading "
lib" in the filename such that the following library names can be found:
-lname(dynamic libraries take precedence) is:
+lname(static libraries take precedence) is:
CC.SHARED.ALL = -Bwhole-archive
ld. All members of the libraries following this argument are linked in the generated target. This flag is used to make a dynamic library from a static library and include all the symbols from static library.
CC.SHARED.UNDEF = -Bno-whole-archive
ld. Only members that resolve undefined symbols in the libraries following this argument are linked in the generated target.
CC.SUFFIX.DYNAMIC = .dll
CC.SUFFIX.DLL = .exp .def .map
.exesuffix. The executable targets in makefiles do not need to include the
.exesuffix. Binary executables will always be generated with the
.exesuffix, and nmake can find these executables to match the targets in the makefiles.
\r\n" line endings are supported.
This release can not automatically identify the case-ignorant attribute
of a file system. The environment variable,
case_sensitive_file_system, must be used to inform nmake
if a case-ignorant file system is being used. The variable must be
exported in the environment and not set on the nmake command line.
On a case-ignorant file system,
must be unset or set to
0. For example:
unset case_sensitive_file_system or export case_sensitive_file_system=0
On a case-sensitive file system,
should be set to
It is the user's responsibility to keep this variable consistent with the setting of the underlying file system. Failing to set it correctly may cause unexpected results. For more information see Limitations.
Changes for Release from Pre-release 1
:JAR:assertions are now supported on UWIN for compiling java code and making jar files. A wrapper comand, npwj, is used to translate UWIN pathnames to native win32 pathnames for the java commands. See the :JAVA: and :JAR: man pages for more information.
-g, an archive library named
libname-g.awas created, but it tried to generate the shared library from
libname.aso it failed. This is fixed and both the archive the shared libraries are generated.
doc/directory have been updated for UWIN. A new man page for npwj has been added.
Changes for Pre-release 1 from Beta 1
.EXEsuffix, as well as lower case
.exe, when the makefile target does not specify a suffix. Previously it only bound to files with a lower case
:Ledit operator will now properly ignore case when
case_sensitive_file_system = 0.
0x0d0x0awhich previously caused a memory fault.
-I-, is used
jar.mk, in any combination of case, will conflict with the rules files
JAR.mkthat are delivered in nmake_install_root
/lib/make/. When trying to load a rules file
nmakewill see the corresponding user makefile first and will not load the necessary rules which will cause build errors. It is recommened to avoid using filenames that differ only by case with files in nmake_install_root
/home/loginusually corresponds to
C:\Program Files\UWIN3.1\home, so working with the java tools under the default home directory may cause problems. You must work in a UWIN directory that corresponds to a win32 directory that contains no spaces in the path. Javadeps must also be installed in a similar directory with no spaces in the win32 directory path.