shithub: freetype+ttf2subf

Download patch

ref: 858f310b80da8655ba0d30a9551e8fbcc3de4818
parent: e0805659bb6548b4f3098ec28fe91c4ab4696f7b
author: Werner Lemberg <[email protected]>
date: Mon Jun 9 00:46:30 EDT 2003

Completely revised FreeType's make management.

. In all makefiles `/' is used as the path separator.  The
  conversion to the real path separators is done as late as
  possible using $(subst ...).

. $(HOSTSEP) no longer exists.  Now, $(SEP) gives the path separator
  for the operating system, and the new $(COMPILER_SEP) the path
  separator for the compiler tools.

. $(BUILD) has been renamed to $(BUILD_DIR).  In general, all
  directory variables end with `_DIR'.  The variants ending in `_'
  (like `BASE_' have been removed).

The following ChangeLog entries only describe changes which are
not related to the redesign.

* builds/beos/beos-def.mk (BUILD_DIR): Fix typo.
* builds/compiler/watcom.mk (LINK_LIBRARY): Fix linker call to avoid
overlong arguments as suggested by J. Ali Harlow
<[email protected]>.
* builds/dos/dos-wat.mk: New file.
* builds/freetype.mk (FREETYPE_H): Include header files from the
`devel' subdirectory.

* builds/os2/os2-dev.mk, builds/unix/unixddef.mk,
builds/unix/unixddef.mk, builds/win32/w32-bccd.mk,
builds/win32/w32-dev.mk (BUILD_DIR): Fix path.

* builds/unix/configure.ac, builds/unic/configure: Updated.
* builds/unix/unix-def.in (DISTCLEAN): Add `freetype2.pc'.


* devel/ftoption.h: Updated.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,43 @@
+2003-06-08  Werner Lemberg  <[email protected]>
+
+	Completely revised FreeType's make management.
+
+	. In all makefiles `/' is used as the path separator.  The
+	  conversion to the real path separators is done as late as
+	  possible using $(subst ...).
+
+	. $(HOSTSEP) no longer exists.  Now, $(SEP) gives the path separator
+	  for the operating system, and the new $(COMPILER_SEP) the path
+	  separator for the compiler tools.
+
+	. $(BUILD) has been renamed to $(BUILD_DIR).  In general, all
+	  directory variables end with `_DIR'.  The variants ending in `_'
+	  (like `BASE_' have been removed).
+
+	The following ChangeLog entries only describe changes which are
+	not related to the redesign.
+
+	* builds/beos/beos-def.mk (BUILD_DIR): Fix typo.
+	* builds/compiler/watcom.mk (LINK_LIBRARY): Fix linker call to avoid
+	overlong arguments as suggested by J. Ali Harlow
+	<[email protected]>.
+	* builds/dos/dos-wat.mk: New file.
+	* builds/freetype.mk (FREETYPE_H): Include header files from the
+	`devel' subdirectory.
+
+	* builds/os2/os2-dev.mk, builds/unix/unixddef.mk,
+	builds/unix/unixddef.mk, builds/win32/w32-bccd.mk,
+	builds/win32/w32-dev.mk (BUILD_DIR): Fix path.
+
+	* builds/unix/configure.ac, builds/unic/configure: Updated.
+	* builds/unix/unix-def.in (DISTCLEAN): Add `freetype2.pc'.
+
 2003-06-07  Werner Lemberg  <[email protected]>
 
 	* src/base/ftmac.c (FT_New_Face_From_SFNT): s/rlen/sfnt_size/ to
 	make it compile.
+
+	* devel/ftoption.h: Updated.
 
 2002-06-07  Detlef W�rkner  <[email protected]>
 
--- a/builds/ansi/ansi-def.mk
+++ b/builds/ansi/ansi-def.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -17,11 +17,10 @@
   TOP_DIR := .
 endif
 
-DELETE   := rm -f
-SEP      := /
-HOSTSEP  := $(SEP)
-BUILD    := $(TOP_DIR)/builds/ansi
-PLATFORM := ansi
+DELETE    := rm -f
+SEP       := /
+BUILD_DIR := $(TOP_DIR)/builds/ansi
+PLATFORM  := ansi
 
 
 # The directory where all object files are placed.
@@ -34,7 +33,7 @@
 #   make -f $TOP_DIR/Makefile
 #
 ifndef OBJ_DIR
-  OBJ_DIR := $(TOP_DIR)$(SEP)objs
+  OBJ_DIR := $(TOP_DIR)/objs
 endif
 
 
--- a/builds/ansi/ansi.mk
+++ b/builds/ansi/ansi.mk
@@ -17,4 +17,5 @@
 include $(TOP_DIR)/builds/compiler/ansi-cc.mk
 include $(TOP_DIR)/builds/link_std.mk
 
+
 # EOF
--- a/builds/beos/beos-def.mk
+++ b/builds/beos/beos-def.mk
@@ -5,7 +5,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -19,11 +19,10 @@
   TOP_DIR := .
 endif
 
-DELETE   := rm -f
-SEP      := /
-HOSTSEP  := $(SEP)
-BUILD    := $(TOP_DIR)/builds/neos
-PLATFORM := beos
+DELETE    := rm -f
+SEP       := /
+BUILD_DIR := $(TOP_DIR)/builds/beos
+PLATFORM  := beos
 
 
 # The directory where all object files are placed.
@@ -36,7 +35,7 @@
 #   make -f $TOP_DIR/Makefile
 #
 ifndef OBJ_DIR
-  OBJ_DIR := $(TOP_DIR)$(SEP)objs
+  OBJ_DIR := $(TOP_DIR)/objs
 endif
 
 
--- a/builds/beos/beos.mk
+++ b/builds/beos/beos.mk
@@ -15,5 +15,5 @@
 include $(TOP_DIR)/builds/beos/beos-def.mk
 include $(TOP_DIR)/builds/link_std.mk
 
-# EOF
 
+# EOF
--- a/builds/beos/detect.mk
+++ b/builds/beos/detect.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -27,10 +27,9 @@
 
 ifeq ($(PLATFORM),beos)
 
-  DELETE   := rm -f
-  SEP      := /
-  HOSTSEP  := $(SEP)
-  BUILD    := $(TOP_DIR)/builds/beos
+  DELETE      := rm -f
+  SEP         := /
+  BUILD_DIR   := $(TOP_DIR)/builds/beos
   CONFIG_FILE := beos.mk
 
   setup: std_setup
@@ -37,5 +36,5 @@
 
 endif   # test PLATFORM beos
 
-# EOF
 
+# EOF
--- a/builds/compiler/ansi-cc.mk
+++ b/builds/compiler/ansi-cc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,8 +15,10 @@
 
 # Compiler command line name
 #
-CC := cc
+CC           := cc
+COMPILER_SEP := $(SEP)
 
+
 # The object file extension (for standard and static libraries).  This can be
 # .o, .tco, .obj, etc., depending on the platform.
 #
@@ -74,8 +76,9 @@
 # Library linking
 #
 ifndef CLEAN_LIBRARY
-  CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY))
+  CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY))
 endif
-LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST)
+LINK_LIBRARY = $(AR) -r $@ $(subst /,$(COMPILER_SEP),$(OBJECTS_LIST))
+
 
 # EOF
--- a/builds/compiler/bcc-dev.mk
+++ b/builds/compiler/bcc-dev.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,8 +15,10 @@
 
 # Compiler command line name
 #
-CC := bcc32
+CC           := bcc32
+COMPILER_SEP := $(SEP)
 
+
 # The object file extension (for standard and static libraries).  This can be
 # .o, .tco, .obj, etc., depending on the platform.
 #
@@ -72,9 +74,9 @@
 # Library linking
 #
 ifndef CLEAN_LIBRARY
-  CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY))
+  CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY))
 endif
-TARGET_OBJECTS = $(subst $(SEP),\\,$(OBJECTS_LIST))
-LINK_LIBRARY   = tlib /u $(subst $(SEP),\\,$@) $(TARGET_OBJECTS:%=+%)
+LINK_LIBRARY = tlib /u $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%))
+
 
 # EOF
--- a/builds/compiler/bcc.mk
+++ b/builds/compiler/bcc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,8 +15,10 @@
 
 # Compiler command line name
 #
-CC := bcc32
+CC           := bcc32
+COMPILER_SEP := $(SEP)
 
+
 # The object file extension (for standard and static libraries).  This can be
 # .o, .tco, .obj, etc., depending on the platform.
 #
@@ -72,9 +74,9 @@
 # Library linking
 #
 ifndef CLEAN_LIBRARY
-  CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY))
+  CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY))
 endif
-TARGET_OBJECTS = $(subst $(SEP),\\,$(OBJECTS_LIST))
-LINK_LIBRARY   = tlib /u $(subst $(SEP),\\,$@) $(TARGET_OBJECTS:%=+%)
+LINK_LIBRARY = tlib /u $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%))
+
 
 # EOF
--- a/builds/compiler/gcc-dev.mk
+++ b/builds/compiler/gcc-dev.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,8 +15,10 @@
 
 # Compiler command line name
 #
-CC := gcc
+CC           := gcc
+COMPILER_SEP := /
 
+
 # The object file extension (for standard and static libraries).  This can be
 # .o, .tco, .obj, etc., depending on the platform.
 #
@@ -82,8 +84,9 @@
 # Library linking
 #
 ifndef CLEAN_LIBRARY
-  CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY))
+  CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY))
 endif
 LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST)
+
 
 # EOF
--- a/builds/compiler/gcc.mk
+++ b/builds/compiler/gcc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,8 +15,10 @@
 
 # Compiler command line name
 #
-CC := gcc
+CC           := gcc
+COMPILER_SEP := /
 
+
 # The object file extension (for standard and static libraries).  This can be
 # .o, .tco, .obj, etc., depending on the platform.
 #
@@ -71,8 +73,9 @@
 # Library linking
 #
 ifndef CLEAN_LIBRARY
-  CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY))
+  CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY))
 endif
 LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST)
+
 
 # EOF
--- a/builds/compiler/intelc.mk
+++ b/builds/compiler/intelc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,7 +15,8 @@
 
 # compiler command line name
 #
-CC := icl
+CC           := icl
+COMPILER_SEP := $(SEP)
 
 
 # The object file extension (for standard and static libraries).  This can be
@@ -79,6 +80,7 @@
 # Library linking
 #
 #CLEAN_LIBRARY =
-LINK_LIBRARY  = lib /nologo /out:$@ $(OBJECTS_LIST)
+LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST))
+
 
 # EOF
--- a/builds/compiler/unix-lcc.mk
+++ b/builds/compiler/unix-lcc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,7 +15,8 @@
 
 # Command line name
 #
-CC := lcc
+CC           := lcc
+COMPILER_SEP := $(SEP)
 
 
 # The object file extension (for standard and static libraries).  This can be
@@ -78,8 +79,9 @@
 # library linking
 #
 ifndef CLEAN_LIBRARY
-  CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY))
+  CLEAN_LIBRARY = $(DELETE) $(PROJECT_LIBRARY)
 endif
 LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST)
+
 
 # EOF
--- a/builds/compiler/visualage.mk
+++ b/builds/compiler/visualage.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,7 +15,8 @@
 
 # command line compiler name
 #
-CC := icc
+CC           := icc
+COMPILER_SEP := $(SEP)
 
 
 # The object file extension (for standard and static libraries).  This can be
@@ -71,6 +72,7 @@
 # Library linking
 #
 #CLEAN_LIBRARY :=
-LINK_LIBRARY   = lib /nologo /out:$@ $(OBJECTS_LIST)
+LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST))
+
 
 # EOF
--- a/builds/compiler/visualc.mk
+++ b/builds/compiler/visualc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,7 +15,8 @@
 
 # compiler command line name
 #
-CC := cl
+CC           := cl
+COMPILER_SEP := $(SEP)
 
 
 # The object file extension (for standard and static libraries).  This can be
@@ -74,6 +75,7 @@
 # Library linking
 #
 #CLEAN_LIBRARY =
-LINK_LIBRARY  = lib /nologo /out:$@ $(OBJECTS_LIST)
+LINK_LIBRARY  = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST))
+
 
 # EOF
--- a/builds/compiler/watcom.mk
+++ b/builds/compiler/watcom.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,7 +15,8 @@
 
 # Compiler command line name
 #
-CC := wcc386
+CC           := wcc386
+COMPILER_SEP := $(SEP)
 
 
 # The object file extension (for standard and static libraries).  This can be
@@ -74,8 +75,10 @@
 # Library linking
 #
 ifndef CLEAN_LIBRARY
-  CLEAN_LIBRARY = $(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY))
+  CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY))
 endif
-LINK_LIBRARY = wlib -q -o = $@ $(OBJECTS_LIST)
+LINK_LIBRARY = $(subst /,$(COMPILER_SEP), \
+                 wlib -q -n $@; \
+                 $(foreach m, $(OBJECTS_LIST), wlib -q $@ +$(m);))
 
 # EOF
--- a/builds/compiler/win-lcc.mk
+++ b/builds/compiler/win-lcc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,7 +15,8 @@
 
 # Command line name
 #
-CC := lcc
+CC           := lcc
+COMPILER_SEP := $(SEP)
 
 
 # The object file extension (for standard and static libraries).  This can be
@@ -76,6 +77,7 @@
 # library linking
 #
 #CLEAN_LIBRARY :=
-LINK_LIBRARY = lcclib /out:$(subst $(SEP),\\,$@) $(subst $(SEP),\\,$(OBJECTS_LIST))
+LINK_LIBRARY = lcclib /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST))
+
 
 # EOF
--- a/builds/detect.mk
+++ b/builds/detect.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2001, 2002, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -16,7 +16,7 @@
 # This sub-Makefile is in charge of detecting the current platform.  It sets
 # the following variables:
 #
-#   BUILD        The configuration and system-specific directory.  Usually
+#   BUILD_DIR    The configuration and system-specific directory.  Usually
 #                `freetype/builds/$(PLATFORM)' but can be different for
 #                custom builds of the library.
 #
@@ -30,6 +30,7 @@
 #   DELETE       The shell command used to remove a given file.
 #   COPY         The shell command used to copy one file.
 #   SEP          The platform-specific directory separator.
+#   COMPILER_SEP The separator used in arguments of the compilation tools.
 #   CC           The compiler to use.
 #
 # You need to set the following variable(s) before calling it:
@@ -44,18 +45,18 @@
 endif
 
 # Set auto-detection default to `ansi' resp. UNIX-like operating systems.
-# Note that we delay evaluation of $(BUILD_CONFIG_), $(BUILD), and
-# $(CONFIG_RULES).
 #
-PLATFORM := ansi
-DELETE   := $(RM)
-COPY     := cp
-SEP      := /
+PLATFORM     := ansi
+DELETE       := $(RM)
+COPY         := cp
+SEP          := /
 
-BUILD_CONFIG_ = $(TOP_DIR)$(SEP)builds$(SEP)
-BUILD         = $(BUILD_CONFIG_)$(PLATFORM)
-CONFIG_RULES  = $(BUILD)$(SEP)$(CONFIG_FILE)
+BUILD_CONFIG := $(TOP_DIR)/builds
 
+# These two assignments must be delayed.
+BUILD_DIR    = $(BUILD_CONFIG)/$(PLATFORM)
+CONFIG_RULES = $(BUILD_DIR)/$(CONFIG_FILE)
+
 # We define the BACKSLASH variable to hold a single back-slash character.
 # This is needed because a line like
 #
@@ -72,12 +73,12 @@
 
 # Find all auto-detectable platforms.
 #
-PLATFORMS_ := $(notdir $(subst /detect.mk,,$(wildcard $(BUILD_CONFIG_)*/detect.mk)))
-.PHONY: $(PLATFORMS_) ansi
+PLATFORMS := $(notdir $(subst /detect.mk,,$(wildcard $(BUILD_CONFIG)/*/detect.mk)))
+.PHONY: $(PLATFORMS) ansi
 
 # Filter out platform specified as setup target.
 #
-PLATFORM := $(firstword $(filter $(MAKECMDGOALS),$(PLATFORMS_)))
+PLATFORM := $(firstword $(filter $(MAKECMDGOALS),$(PLATFORMS)))
 
 # If no setup target platform was specified, enable auto-detection/
 # default platform.
@@ -94,7 +95,7 @@
   # directories.  Note that the calling order of the various `detect.mk'
   # files isn't predictable.
   #
-  include $(wildcard $(BUILD_CONFIG_)*/detect.mk)
+  include $(wildcard $(BUILD_CONFIG)/*/detect.mk)
 endif
 
 # In case no detection rule file was successful, use the default.
@@ -121,7 +122,7 @@
 	@echo ""
 	@echo "  platform                    $(PLATFORM)"
 	@echo "  compiler                    $(CC)"
-	@echo "  configuration directory     $(BUILD)"
+	@echo "  configuration directory     $(BUILD_DIR)"
 	@echo "  configuration rules         $(CONFIG_RULES)"
 	@echo ""
 	@echo "If this does not correspond to your system or settings please remove the file"
@@ -142,8 +143,8 @@
 	@type builds\newline
 	@echo   platform���������������������$(PLATFORM)
 	@echo   compiler���������������������$(CC)
-	@echo   configuration directory������$(BUILD)
-	@echo   configuration rules����������$(CONFIG_RULES)
+	@echo   configuration directory������$(subst /,\,$(BUILD_DIR))
+	@echo   configuration rules����������$(subst /,\,$(CONFIG_RULES))
 	@type builds\newline
 	@echo If this does not correspond to your system or settings please remove the file
 	@echo '$(CONFIG_MK)' from this directory then read the INSTALL file for help.
@@ -151,5 +152,6 @@
 	@echo Otherwise, simply type 'make' again to build the library.
 	@type builds\newline
 	@$(COPY) $(subst /,\,$(CONFIG_RULES) $(CONFIG_MK)) > nul
+
 
 # EOF
--- a/builds/dos/detect.mk
+++ b/builds/dos/detect.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -57,7 +57,6 @@
   # Use DJGPP (i.e. gcc) by default.
   #
   CONFIG_FILE := dos-gcc.mk
-  SEP         := /
   ifndef CC
     CC        := gcc
   endif
@@ -66,7 +65,6 @@
   #
   ifneq ($(findstring turboc,$(MAKECMDGOALS)),)     # Turbo C
     CONFIG_FILE := dos-tcc.mk
-    SEP         := $(BACKSLASH)
     CC          := tcc
     turboc: setup
     .PHONY: turboc
@@ -74,7 +72,6 @@
 
   ifneq ($(findstring watcom,$(MAKECMDGOALS)),)     # Watcom C/C++
     CONFIG_FILE := dos-wat.mk
-    SEP         := $(BACKSLASH)
     CC          := wcc386
     watcom: setup
     .PHONY: watcom
@@ -82,7 +79,6 @@
 
   ifneq ($(findstring borlandc,$(MAKECMDGOALS)),)   # Borland C/C++ 32-bit
     CONFIG_FILE := dos-bcc.mk
-    SEP         := $(BACKSLASH)
     CC          := bcc32
     borlandc: setup
     .PHONY: borlandc
@@ -90,7 +86,6 @@
 
   ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16-bit
     CONFIG_FILE := dos-bcc.mk
-    SEP         := $(BACKSLASH)
     CC          := bcc
     borlandc16: setup
     .PHONY: borlandc16
@@ -97,10 +92,12 @@
   endif
 
   ifneq ($(findstring bash,$(SHELL)),)              # check for bash
+    SEP    := /
     DELETE := rm
     COPY   := cp
     setup: std_setup
   else
+    SEP    := $(BACKSLASH)
     DELETE := del
     COPY   := copy
     setup: dos_setup
@@ -107,5 +104,6 @@
   endif
 
 endif     # test PLATFORM dos
+
 
 # EOF
--- a/builds/dos/dos-def.mk
+++ b/builds/dos/dos-def.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,17 +13,12 @@
 # fully.
 
 
-DELETE   := del
-HOSTSEP  := $(strip \ )
-BUILD    := $(TOP_DIR)$(SEP)builds$(SEP)dos
-PLATFORM := dos
+DELETE    := del
+SEP       := $(strip \ )
+BUILD_DIR := $(TOP_DIR)/builds/dos
+PLATFORM  := dos
 
-# except for DJGPP/GCC on Dos
-ifndef SEP
-SEP      := $(HOSTSEP)
-endif
 
-
 # The directory where all object files are placed.
 #
 # This lets you build the library in your own directory with something like
@@ -34,7 +29,7 @@
 #   make -f %TOP_DIR%/Makefile
 #
 ifndef OBJ_DIR
-  OBJ_DIR := $(TOP_DIR)$(SEP)objs
+  OBJ_DIR := $(TOP_DIR)/objs
 endif
 
 
--- a/builds/dos/dos-gcc.mk
+++ b/builds/dos/dos-gcc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,10 +13,9 @@
 # fully.
 
 
-SEP := /
-
 include $(TOP_DIR)/builds/dos/dos-def.mk
 include $(TOP_DIR)/builds/compiler/gcc.mk
 include $(TOP_DIR)/builds/link_dos.mk
+
 
 # EOF
--- /dev/null
+++ b/builds/dos/dos-wat.mk
@@ -1,0 +1,17 @@
+#
+# FreeType 2 configuration rules for the Watcom C/C++ compiler
+#
+
+
+# This file is part of the FreeType project, and may only be used, modified,
+# and distributed under the terms of the FreeType project license,
+# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
+# indicate that you have read the license and understand and accept it
+# fully.
+
+include $(TOP_DIR)/builds/dos/dos-def.mk
+include $(TOP_DIR)/builds/compiler/watcom.mk
+include $(TOP_DIR)/builds/link_dos.mk
+
+
+# EOF
--- a/builds/freetype.mk
+++ b/builds/freetype.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2002 by
+# Copyright 1996-2000, 2001, 2002, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -20,7 +20,7 @@
 # The following variables (set by other Makefile components, in the
 # environment, or on the command line) are used:
 #
-#   BUILD          The architecture dependent directory,
+#   BUILD_DIR      The architecture dependent directory,
 #                  e.g. `$(TOP_DIR)/builds/unix'.
 #
 #   OBJ_DIR        The directory in which object files are created.
@@ -63,6 +63,7 @@
 #                  `distclean' target.
 #
 #   TOP_DIR, SEP,
+#   COMPILER_SEP,
 #   LIBRARY, CC,
 #   A, I, O, T     Check `config.mk' for details.
 
@@ -83,43 +84,24 @@
 
 # The FreeType source directory, usually `./src'.
 #
-SRC := $(TOP_DIR)$(SEP)src
+SRC_DIR := $(TOP_DIR)/src
 
-
 # The directory where the base layer components are placed, usually
 # `./src/base'.
 #
-BASE_DIR := $(SRC)$(SEP)base
+BASE_DIR := $(SRC_DIR)/base
 
-# The build header file used to define all public header file names
-# as macro.
+# Other derived directories.
 #
-ifndef FT_BUILD_H
-  FT_BUILD_H  := $(TOP_DIR)$(SEP)include$(SEP)ft2build.h
-  FTBUILD_CMD :=
-else
-  FTBUILD_CMD = $(D)FT_BUILD_H=$(FT_BUILD_H)
-endif
+PUBLIC_DIR   := $(TOP_DIR)/include/freetype
+INTERNAL_DIR := $(PUBLIC_DIR)/internal
+CONFIG_DIR   := $(PUBLIC_DIR)/config
+CACHE_DIR    := $(PUBLIC_DIR)/cache
 
-# A few short-cuts in order to avoid typing $(SEP) all the time for the
-# directory separator.
-#
-# For example: $(SRC_) equals to `./src/' where `.' is $(TOP_DIR).
-#
-#
-SRC_      := $(SRC)$(SEP)
-BASE_     := $(BASE_DIR)$(SEP)
-OBJ_      := $(OBJ_DIR)$(SEP)
-LIB_      := $(LIB_DIR)$(SEP)
-PUBLIC_   := $(TOP_DIR)$(SEP)include$(SEP)freetype$(SEP)
-INTERNAL_ := $(PUBLIC_)internal$(SEP)
-CONFIG_   := $(PUBLIC_)config$(SEP)
-CACHE_    := $(PUBLIC_)cache$(SEP)
 
-
 # The final name of the library file.
 #
-PROJECT_LIBRARY := $(LIB_)$(LIBRARY).$A
+PROJECT_LIBRARY := $(LIB_DIR)/$(LIBRARY).$A
 
 
 # include paths
@@ -130,7 +112,8 @@
 #                 in the `freetype/builds/<system>' directory, as these
 #                 files will override the default sources.
 #
-INCLUDES := $(OBJ_DIR) $(BUILD) $(TOP_DIR)$(SEP)include
+INCLUDES := $(subst /,$(COMPILER_SEP),$(OBJ_DIR) $(BUILD_DIR) \
+                                      $(TOP_DIR)/include)
 
 INCLUDE_FLAGS = $(INCLUDES:%=$I%)
 
@@ -164,46 +147,47 @@
 # This is used to simplify the dependency rules -- if one of these files
 # changes, the whole library is recompiled.
 #
-PUBLIC_H   := $(wildcard $(PUBLIC_)*.h)
-BASE_H     := $(wildcard $(INTERNAL_)*.h)
-CONFIG_H   := $(wildcard $(CONFIG_)*.h) \
-              $(wildcard $(BUILD)$(SEP)freetype$(SEP)config$(SEP)*.h)
-CACHE_H    := $(wildcard $(CACHE_)*.h)
+PUBLIC_H   := $(wildcard $(PUBLIC_DIR)/*.h)
+BASE_H     := $(wildcard $(INTERNAL_DIR)/*.h)
+CONFIG_H   := $(wildcard $(CONFIG_DIR)/*.h) \
+              $(wildcard $(BUILD_DIR)/freetype/config/*.h)
+CACHE_H    := $(wildcard $(CACHE_DIR)/*.h)
+DEVEL_H    := $(wildcard $(TOP_DIR)/devel/*.h)
 
-FREETYPE_H := $(PUBLIC_H) $(BASE_H) $(CONFIG_H) $(CACHE_H)
+FREETYPE_H := $(PUBLIC_H) $(BASE_H) $(CONFIG_H) $(CACHE_H) $(DEVEL_H)
 
 
 # ftsystem component
 #
 ifndef FTSYS_SRC
-  FTSYS_SRC = $(BASE_)ftsystem.c
+  FTSYS_SRC = $(BASE_DIR)/ftsystem.c
 endif
 
-FTSYS_OBJ = $(OBJ_)ftsystem.$O
+FTSYS_OBJ = $(OBJ_DIR)/ftsystem.$O
 
 OBJECTS_LIST += $(FTSYS_OBJ)
 
 $(FTSYS_OBJ): $(FTSYS_SRC) $(FREETYPE_H)
-	$(FT_COMPILE) $T$@ $<
+	$(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # ftdebug component
 #
 ifndef FTDEBUG_SRC
-  FTDEBUG_SRC = $(BASE_)ftdebug.c
+  FTDEBUG_SRC = $(BASE_DIR)/ftdebug.c
 endif
 
-FTDEBUG_OBJ = $(OBJ_)ftdebug.$O
+FTDEBUG_OBJ = $(OBJ_DIR)/ftdebug.$O
 
 OBJECTS_LIST += $(FTDEBUG_OBJ)
 
 $(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(FREETYPE_H)
-	$(FT_COMPILE) $T$@ $<
+	$(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # Include all rule files from FreeType components.
 #
-include $(wildcard $(SRC)/*/rules.mk)
+include $(wildcard $(SRC_DIR)/*/rules.mk)
 
 
 # ftinit component
@@ -217,13 +201,13 @@
 #   which contain additional include paths and macros used to compile the
 #   single `ftinit.c' source.
 #
-FTINIT_SRC := $(BASE_)ftinit.c
-FTINIT_OBJ := $(OBJ_)ftinit.$O
+FTINIT_SRC := $(BASE_DIR)/ftinit.c
+FTINIT_OBJ := $(OBJ_DIR)/ftinit.$O
 
 OBJECTS_LIST += $(FTINIT_OBJ)
 
 $(FTINIT_OBJ): $(FTINIT_SRC) $(FREETYPE_H) $(FT_MODULE_LIST)
-	$(FT_COMPILE) $T$@ $<
+	$(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # All FreeType library objects
@@ -255,7 +239,7 @@
 library: $(PROJECT_LIBRARY)
 
 .c.$O:
-	$(FT_COMPILE) $T$@ $<
+	$(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 .PHONY: clean_project_std distclean_project_std
@@ -280,10 +264,10 @@
 # working correctly on Win9x.
 #
 clean_project_dos:
-	-$(DELETE) $(subst $(SEP),$(HOSTSEP),$(OBJ_))*.$O $(CLEAN) $(NO_OUTPUT)
+	-$(DELETE) $(subst /,\,$(OBJ)/*.$O $(CLEAN) $(NO_OUTPUT))
 
 distclean_project_dos: clean_project_dos
-	-$(DELETE) $(subst $(SEP),$(HOSTSEP),$(PROJECT_LIBRARY)) $(DISTCLEAN) $(NO_OUTPUT)
+	-$(DELETE) $(subst /,\,$(PROJECT_LIBRARY) $(DISTCLEAN) $(NO_OUTPUT))
 
 
 .PHONY: remove_config_mk
@@ -291,7 +275,7 @@
 # Remove configuration file (used for distclean).
 #
 remove_config_mk:
-	-$(DELETE) $(subst $(SEP),$(HOSTSEP),$(CONFIG_MK)) $(NO_OUTPUT)
+	-$(DELETE) $(subst /,$(SEP),$(CONFIG_MK) $(NO_OUTPUT))
 
 
 .PHONY: clean distclean
@@ -303,5 +287,6 @@
 #
 clean: clean_project
 distclean: distclean_project remove_config_mk
+
 
 # EOF
--- a/builds/link_dos.mk
+++ b/builds/link_dos.mk
@@ -38,4 +38,5 @@
 
 endif
 
+
 # EOF
--- a/builds/link_std.mk
+++ b/builds/link_std.mk
@@ -38,4 +38,5 @@
 
 endif
 
+
 # EOF
--- a/builds/modules.mk
+++ b/builds/modules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -26,7 +26,7 @@
 # resides.  For now, it is in `include/freetype/config/ftmodule.h'.
 #
 ifndef MODULE_LIST
-  MODULE_LIST := $(TOP_DIR)$(SEP)include$(SEP)$(PROJECT)$(SEP)config$(SEP)ftmodule.h
+  MODULE_LIST := $(TOP_DIR)/include/$(PROJECT)/config/ftmodule.h
 endif
 
 # To build the modules list, we invoke the `make_module_list' target.
@@ -39,8 +39,8 @@
 
 ifneq ($(findstring $(PLATFORM),dos win32 win16 os2),)
   OPEN_MODULE   := @echo$(space)
-  CLOSE_MODULE  :=  >> $(subst $(SEP),$(HOSTSEP),$(MODULE_LIST))
-  REMOVE_MODULE := @-$(DELETE) $(subst $(SEP),$(HOSTSEP),$(MODULE_LIST))
+  CLOSE_MODULE  :=  >> $(subst /,\,$(MODULE_LIST))
+  REMOVE_MODULE := @-$(DELETE) $(subst /,\,$(MODULE_LIST))
 else
   OPEN_MODULE   := @echo "
   CLOSE_MODULE  := " >> $(MODULE_LIST)
@@ -53,7 +53,7 @@
 #
 clean_module_list:
 	$(REMOVE_MODULE)
-	@-echo Regenerating the modules list in $(MODULE_LIST)...
+	@-echo Regenerating modules list in $(MODULE_LIST)...
 
 make_module_list: clean_module_list
 	@echo done.
@@ -72,5 +72,6 @@
 # target `make_module_list'.
 #
 include $(wildcard $(TOP_DIR)/src/*/module.mk)
+
 
 # EOF
--- a/builds/os2/detect.mk
+++ b/builds/os2/detect.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -27,18 +27,17 @@
 
 ifeq ($(PLATFORM),os2)
 
-  COPY     := copy
-  DELETE   := del
+  COPY   := copy
+  DELETE := del
+  SEP    := $(BACKSLASH)
 
   # gcc-emx by default
   CONFIG_FILE := os2-gcc.mk
-  SEP         := /
 
   # additionally, we provide hooks for various other compilers
   #
   ifneq ($(findstring visualage,$(MAKECMDGOALS)),)     # Visual Age C++
     CONFIG_FILE := os2-icc.mk
-    SEP         := $(BACKSLASH)
     CC          := icc
     visualage: setup
     .PHONY: visualage
@@ -46,7 +45,6 @@
 
   ifneq ($(findstring watcom,$(MAKECMDGOALS)),)        # Watcom C/C++
     CONFIG_FILE := os2-wat.mk
-    SEP         := $(BACKSLASH)
     CC          := wcc386
     watcom: setup
     .PHONY: watcom
@@ -54,7 +52,6 @@
 
   ifneq ($(findstring borlandc,$(MAKECMDGOALS)),)      # Borland C++ 32-bit
     CONFIG_FILE := os2-bcc.mk
-    SEP         := $(BACKSLASH)
     CC          := bcc32
     borlandc: setup
     .PHONY: borlandc
@@ -63,7 +60,6 @@
   ifneq ($(findstring devel,$(MAKECMDGOALS)),)         # development target
     CONFIG_FILE := os2-dev.mk
     CC          := gcc
-    SEP         := /
     devel: setup
     .PHONY: devel
   endif
@@ -71,5 +67,6 @@
   setup: dos_setup
 
 endif   # test PLATFORM os2
+
 
 # EOF
--- a/builds/os2/os2-def.mk
+++ b/builds/os2/os2-def.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,17 +13,12 @@
 # fully.
 
 
-DELETE   := del
-HOSTSEP  := $(strip \ )
-BUILD    := $(TOP_DIR)$(SEP)builds$(SEP)os2
-PLATFORM := os2
+DELETE    := del
+SEP       := $(strip \ )
+BUILD_DIR := $(TOP_DIR)/builds/os2
+PLATFORM  := os2
 
-# except for GCC+emx on OS/2
-ifndef SEP
-  SEP    := $(HOSTSEP)
-endif
 
-
 # The directory where all object files are placed.
 #
 # This lets you build the library in your own directory with something like
@@ -34,7 +29,7 @@
 #   make -f %TOP_DIR%/Makefile
 #
 ifndef OBJ_DIR
-  OBJ_DIR := $(TOP_DIR)$(SEP)objs
+  OBJ_DIR := $(TOP_DIR)/objs
 endif
 
 
@@ -54,5 +49,6 @@
 # The NO_OUTPUT macro is used to ignore the output of commands.
 #
 NO_OUTPUT = 2> nul
+
 
 # EOF
--- a/builds/os2/os2-dev.mk
+++ b/builds/os2/os2-dev.mk
@@ -5,7 +5,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -19,10 +19,8 @@
   TOP_DIR := .
 endif
 
-SEP   := /
-
 include $(TOP_DIR)/builds/os2/os2-def.mk
-BUILD := $(TOP_DIR)/builds/devel
+BUILD_DIR := $(TOP_DIR)/devel
 
 include $(TOP_DIR)/builds/compiler/gcc-dev.mk
 
--- a/builds/os2/os2-gcc.mk
+++ b/builds/os2/os2-gcc.mk
@@ -13,8 +13,6 @@
 # fully.
 
 
-SEP := /
-
 # include OS/2-specific definitions
 include $(TOP_DIR)/builds/os2/os2-def.mk
 
@@ -23,5 +21,6 @@
 
 # include linking instructions
 include $(TOP_DIR)/builds/link_dos.mk
+
 
 # EOF
--- a/builds/toplevel.mk
+++ b/builds/toplevel.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -99,7 +99,9 @@
   #
   # note: This test is duplicated in "builds/toplevel.mk".
   #
-  is_unix := $(strip $(wildcard /sbin/init) $(wildcard /usr/sbin/init) $(wildcard /hurd/auth))
+  is_unix := $(strip $(wildcard /sbin/init) \
+                     $(wildcard /usr/sbin/init) \
+                     $(wildcard /hurd/auth))
   ifneq ($(is_unix),)
 
     distclean:
@@ -131,5 +133,6 @@
   include $(CONFIG_MK)
 
 endif # test check_platform
+
 
 # EOF
--- a/builds/unix/configure
+++ b/builds/unix/configure
@@ -4126,9 +4126,9 @@
 rm -f conftest.mmap
 
 if test "$ac_cv_func_mmap_fixed_mapped" != yes; then
-  FTSYS_SRC='$(BASE_)ftsystem.c'
+  FTSYS_SRC='$(BASE_DIR)/ftsystem.c'
 else
-  FTSYS_SRC='$(BUILD)/ftsystem.c'
+  FTSYS_SRC='$(BUILD_DIR)/ftsystem.c'
 
   echo "$as_me:$LINENO: checking whether munmap must be declared" >&5
 echo $ECHO_N "checking whether munmap must be declared... $ECHO_C" >&6
--- a/builds/unix/configure.ac
+++ b/builds/unix/configure.ac
@@ -70,9 +70,9 @@
 dnl Here we check whether we can use our mmap file component.
 AC_FUNC_MMAP
 if test "$ac_cv_func_mmap_fixed_mapped" != yes; then
-  FTSYS_SRC='$(BASE_)ftsystem.c'
+  FTSYS_SRC='$(BASE_DIR)/ftsystem.c'
 else
-  FTSYS_SRC='$(BUILD)/ftsystem.c'
+  FTSYS_SRC='$(BUILD_DIR)/ftsystem.c'
 
   FT_MUNMAP_DECL
   FT_MUNMAP_PARAM
--- a/builds/unix/detect.mk
+++ b/builds/unix/detect.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2002 by
+# Copyright 1996-2000, 2002, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -18,7 +18,9 @@
 
   # Note: this test is duplicated in "builds/toplevel.mk".
   #
-  is_unix := $(strip $(wildcard /sbin/init) $(wildcard /usr/sbin/init) $(wildcard /hurd/auth))
+  is_unix := $(strip $(wildcard /sbin/init) \
+                     $(wildcard /usr/sbin/init) \
+                     $(wildcard /hurd/auth))
   ifneq ($(is_unix),)
 
     PLATFORM := unix
@@ -27,8 +29,8 @@
 endif # test PLATFORM ansi
 
 ifeq ($(PLATFORM),unix)
-  COPY     := cp
-  DELETE   := rm -f
+  COPY   := cp
+  DELETE := rm -f
 
   # If `devel' is the requested target, we use a special configuration
   # file named `unix-dev.mk'.  It disables optimization and libtool.
@@ -83,5 +85,6 @@
   endif
 
 endif   # test PLATFORM unix
+
 
 # EOF
--- a/builds/unix/install.mk
+++ b/builds/unix/install.mk
@@ -49,10 +49,11 @@
           $(INSTALL_DATA)                                          \
             $$P $(DESTDIR)$(includedir)/freetype2/freetype/cache ; \
         done
-	$(INSTALL_DATA) $(BUILD)/ft2unix.h $(DESTDIR)$(includedir)/ft2build.h
+	$(INSTALL_DATA) $(BUILD_DIR)/ft2unix.h \
+          $(DESTDIR)$(includedir)/ft2build.h
 	$(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config \
           $(DESTDIR)$(bindir)/freetype-config
-	$(INSTALL_SCRIPT) -m 644 $(BUILD)/freetype2.m4 \
+	$(INSTALL_SCRIPT) -m 644 $(BUILD_DIR)/freetype2.m4 \
           $(DESTDIR)$(datadir)/aclocal/freetype2.m4
 	$(INSTALL_SCRIPT) -m 644 $(OBJ_BUILD)/freetype2.pc \
           $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc
--- a/builds/unix/unix-cc.in
+++ b/builds/unix/unix-cc.in
@@ -1,10 +1,22 @@
-# template for Unix-specific compiler definitions
 #
+# FreeType 2 template for Unix-specific compiler definitions
+#
 
-CC      := @CC@
+# Copyright 1996-2000, 2002, 2003 by
+# David Turner, Robert Wilhelm, and Werner Lemberg.
+#
+# This file is part of the FreeType project, and may only be used, modified,
+# and distributed under the terms of the FreeType project license,
+# LICENSE.TXT.  By continuing to use, modify, or distribute this file you
+# indicate that you have read the license and understand and accept it
+# fully.
 
+
+CC           := @CC@
+COMPILER_SEP := $(SEP)
+
 ifndef LIBTOOL
-  LIBTOOL := $(BUILD)/libtool
+  LIBTOOL := $(BUILD_DIR)/libtool
 endif
 
 
@@ -48,7 +60,7 @@
 
 # Target flag.
 #
-T := -o # Don't remove this comment line!  We need the space after `-o'.
+T := -o$(space)
 
 
 # C flags
@@ -80,5 +92,6 @@
 LINK_LIBRARY = $(LIBTOOL) --mode=link $(CCraw) -o $@ $(OBJECTS_LIST) \
                           -rpath $(libdir) -version-info $(version_info) \
                           $(LDFLAGS)
+
 
 # EOF
--- a/builds/unix/unix-def.in
+++ b/builds/unix/unix-def.in
@@ -18,16 +18,15 @@
 endif
 TOP_DIR := $(shell cd $(TOP_DIR); pwd)
 
-DELETE   := @RMF@
-DELDIR   := @RMDIR@
-SEP      := /
-HOSTSEP  := $(SEP)
-BUILD    := $(TOP_DIR)/builds/unix
-PLATFORM := unix
+DELETE    := @RMF@
+DELDIR    := @RMDIR@
+SEP       := /
+BUILD_DIR := $(TOP_DIR)/builds/unix
+PLATFORM  := unix
 
 # this is used for `make distclean' and `make install'
 ifndef OBJ_BUILD
-  OBJ_BUILD := $(BUILD)
+  OBJ_BUILD := $(BUILD_DIR)
 endif
 
 # don't use `:=' here since the path stuff will be included after this file
@@ -38,7 +37,7 @@
 INSTALL_DATA    := @INSTALL_DATA@
 INSTALL_PROGRAM := @INSTALL_PROGRAM@
 INSTALL_SCRIPT  := @INSTALL_SCRIPT@
-MKINSTALLDIRS   := $(BUILD)/mkinstalldirs
+MKINSTALLDIRS   := $(BUILD_DIR)/mkinstalldirs
 
 DISTCLEAN += $(OBJ_BUILD)/config.cache    \
              $(OBJ_BUILD)/config.log      \
@@ -47,6 +46,7 @@
              $(OBJ_BUILD)/unix-cc.mk      \
              $(OBJ_BUILD)/ftconfig.h      \
              $(OBJ_BUILD)/freetype-config \
+             $(OBJ_BUILD)/freetype2.pc    \
              $(LIBTOOL)                   \
              $(OBJ_BUILD)/Makefile
 
@@ -95,5 +95,6 @@
 # the output of some programs.
 #
 NO_OUTPUT := 2> /dev/null
+
 
 # EOF
--- a/builds/unix/unix-dev.mk
+++ b/builds/unix/unix-dev.mk
@@ -6,7 +6,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -17,9 +17,10 @@
 
 
 include $(TOP_DIR)/builds/unix/unixddef.mk
-BUILD := $(TOP_DIR)/builds/devel
+BUILD_DIR := $(TOP_DIR)/devel
 
 include $(TOP_DIR)/builds/compiler/gcc-dev.mk
 include $(TOP_DIR)/builds/link_std.mk
+
 
 # EOF
--- a/builds/unix/unix-lcc.mk
+++ b/builds/unix/unix-lcc.mk
@@ -20,4 +20,5 @@
 include $(TOP_DIR)/builds/compiler/unix-lcc.mk
 include $(TOP_DIR)/builds/link_std.mk
 
+
 # EOF
--- a/builds/unix/unixddef.mk
+++ b/builds/unix/unixddef.mk
@@ -4,7 +4,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -19,12 +19,11 @@
 endif
 TOP_DIR := $(shell cd $(TOP_DIR); pwd)
 
-DELETE   := rm -f
-SEP      := /
-HOSTSEP  := $(SEP)
+DELETE := rm -f
+SEP    := /
 
 # we use a special devel ftoption.h
-BUILD    := $(TOP_DIR)/builds/devel
+BUILD_DIR := $(TOP_DIR)/devel
 
 # do not set the platform to `unix', or libtool will trick you
 PLATFORM := unixdev
@@ -50,7 +49,7 @@
 LIB_DIR := $(OBJ_DIR)
 
 
-#
 NO_OUTPUT := 2> /dev/null
+
 
 # EOF
--- a/builds/win32/detect.mk
+++ b/builds/win32/detect.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -46,12 +46,12 @@
 
 ifeq ($(PLATFORM),win32)
 
-  DELETE   := del
-  COPY     := copy
+  DELETE := del
+  COPY   := copy
+  SEP    := $(BACKSLASH)
 
   # gcc Makefile by default
   CONFIG_FILE := w32-gcc.mk
-  SEP         := /
   ifeq ($(firstword $(CC)),cc)
     CC        := gcc
   endif
@@ -80,7 +80,6 @@
   #
   ifneq ($(findstring visualc,$(MAKECMDGOALS)),)     # Visual C/C++
     CONFIG_FILE := w32-vcc.mk
-    SEP         := $(BACKSLASH)
     CC          := cl
     visualc: setup
     .PHONY: visualc
@@ -88,7 +87,6 @@
 
   ifneq ($(findstring intelc,$(MAKECMDGOALS)),)      # Intel C/C++
     CONFIG_FILE := w32-intl.mk
-    SEP         := $(BACKSLASH)
     CC          := cl
     visualc: setup
     .PHONY: intelc
@@ -96,7 +94,6 @@
 
   ifneq ($(findstring watcom,$(MAKECMDGOALS)),)      # Watcom C/C++
     CONFIG_FILE := w32-wat.mk
-    SEP         := $(BACKSLASH)
     CC          := wcc386
     watcom: setup
     .PHONY: watcom
@@ -104,7 +101,6 @@
 
   ifneq ($(findstring visualage,$(MAKECMDGOALS)),)   # Visual Age C++
     CONFIG_FILE := w32-icc.mk
-    SEP         := $(BACKSLASH)
     CC          := icc
     visualage: setup
     .PHONY: visualage
@@ -112,7 +108,6 @@
 
   ifneq ($(findstring lcc,$(MAKECMDGOALS)),)         # LCC-Win32
     CONFIG_FILE := w32-lcc.mk
-    SEP         := $(BACKSLASH)
     CC          := lcc
     lcc: setup
     .PHONY: lcc
@@ -120,7 +115,6 @@
 
   ifneq ($(findstring mingw32,$(MAKECMDGOALS)),)     # mingw32
     CONFIG_FILE := w32-mingw32.mk
-    SEP         := $(BACKSLASH)
     CC          := gcc
     mingw32: setup
     .PHONY: mingw32
@@ -128,7 +122,6 @@
 
   ifneq ($(findstring bcc32,$(MAKECMDGOALS)),)       # Borland C++
     CONFIG_FILE := w32-bcc.mk
-    SEP         := $(BACKSLASH)
     CC          := bcc32
     bcc32: setup
     .PHONY: bcc32
@@ -137,7 +130,6 @@
   ifneq ($(findstring devel-bcc,$(MAKECMDGOALS)),)   # development target
     CONFIG_FILE := w32-bccd.mk
     CC          := bcc32
-    SEP         := /
     devel-bcc: setup
     .PHONY: devel-bcc
   endif
@@ -145,11 +137,11 @@
   ifneq ($(findstring devel-gcc,$(MAKECMDGOALS)),)   # development target
     CONFIG_FILE := w32-dev.mk
     CC          := gcc
-    SEP         := /
     devel-gcc: setup
     .PHONY: devel-gcc
   endif
 
 endif   # test PLATFORM win32
+
 
 # EOF
--- a/builds/win32/w32-bcc.mk
+++ b/builds/win32/w32-bcc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,11 +13,11 @@
 # fully.
 
 
-SEP := /
 include $(TOP_DIR)/builds/win32/win32-def.mk
 include $(TOP_DIR)/builds/compiler/bcc.mk
 
 # include linking instructions
 include $(TOP_DIR)/builds/link_dos.mk
+
 
 # EOF
--- a/builds/win32/w32-bccd.mk
+++ b/builds/win32/w32-bccd.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,14 +13,13 @@
 # fully.
 
 
-SEP   := /
-
 include $(TOP_DIR)/builds/win32/win32-def.mk
-BUILD := $(TOP_DIR)/builds/devel
+BUILD_DIR := $(TOP_DIR)/devel
 
 include $(TOP_DIR)/builds/compiler/bcc-dev.mk
 
 # include linking instructions
 include $(TOP_DIR)/builds/link_dos.mk
+
 
 # EOF
--- a/builds/win32/w32-dev.mk
+++ b/builds/win32/w32-dev.mk
@@ -5,7 +5,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -23,16 +23,13 @@
   TOP_DIR := .
 endif
 
-SEP   := /
-
 include $(TOP_DIR)/builds/win32/win32-def.mk
-BUILD := $(TOP_DIR)/builds/devel
+BUILD_DIR := $(TOP_DIR)/devel
 
 include $(TOP_DIR)/builds/compiler/gcc-dev.mk
 
 # include linking instructions
 include $(TOP_DIR)/builds/link_dos.mk
-
 
 
 # EOF
--- a/builds/win32/w32-gcc.mk
+++ b/builds/win32/w32-gcc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,10 +13,6 @@
 # fully.
 
 
-# the separator must be set before including win32-def
-# as it defaults to "\" on Win32
-SEP := /
-
 # include Win32-specific definitions
 include $(TOP_DIR)/builds/win32/win32-def.mk
 
@@ -25,5 +21,6 @@
 
 # include linking instructions
 include $(TOP_DIR)/builds/link_dos.mk
+
 
 # EOF
--- a/builds/win32/w32-icc.mk
+++ b/builds/win32/w32-icc.mk
@@ -19,4 +19,5 @@
 # include linking instructions
 include $(TOP_DIR)/builds/link_dos.mk
 
+
 # EOF
--- a/builds/win32/w32-intl.mk
+++ b/builds/win32/w32-intl.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,11 +13,11 @@
 # fully.
 
 
-SEP := /
 include $(TOP_DIR)/builds/win32/win32-def.mk
 include $(TOP_DIR)/builds/compiler/intelc.mk
 
 # include linking instructions
 include $(TOP_DIR)/builds/link_dos.mk
+
 
 # EOF
--- a/builds/win32/w32-mingw32.mk
+++ b/builds/win32/w32-mingw32.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,10 +13,6 @@
 # fully.
 
 
-# the separator must be set before including win32-def
-# as it defaults to "\" on Win32
-SEP := /
-
 # include Win32-specific definitions
 include $(TOP_DIR)/builds/win32/win32-def.mk
 
@@ -27,5 +23,6 @@
 
 # include linking instructions
 include $(TOP_DIR)/builds/link_dos.mk
+
 
 # EOF
--- a/builds/win32/w32-vcc.mk
+++ b/builds/win32/w32-vcc.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,11 +13,11 @@
 # fully.
 
 
-SEP := /
 include $(TOP_DIR)/builds/win32/win32-def.mk
 include $(TOP_DIR)/builds/compiler/visualc.mk
 
 # include linking instructions
 include $(TOP_DIR)/builds/link_dos.mk
+
 
 # EOF
--- a/builds/win32/w32-wat.mk
+++ b/builds/win32/w32-wat.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,9 +13,6 @@
 # fully.
 
 
-SEP  := /
-ISEP := $(strip \ )
-
 include $(TOP_DIR)/builds/win32/win32-def.mk
 include $(TOP_DIR)/builds/compiler/watcom.mk
 
@@ -22,5 +19,5 @@
 # include linking instructions
 include $(TOP_DIR)/builds/link_dos.mk
 
-# EOF
 
+# EOF
--- a/builds/win32/win32-def.mk
+++ b/builds/win32/win32-def.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000 by
+# Copyright 1996-2000, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,19 +13,12 @@
 # fully.
 
 
-DELETE   := del
-HOSTSEP  := $(strip \ )
-BUILD    := $(TOP_DIR)$(SEP)builds$(SEP)win32
-PLATFORM := win32
+DELETE    := del
+SEP       := $(strip \ )
+BUILD_DIR := $(TOP_DIR)/builds/win32
+PLATFORM  := win32
 
-# by default, we use "\" as a separator on Win32
-# but certain compilers accept "/" as well
-#
-ifndef SEP
-  SEP    := $(HOSTSEP)
-endif
 
-
 # The directory where all object files are placed.
 #
 # This lets you build the library in your own directory with something like
@@ -36,7 +29,7 @@
 #   make -f %TOP_DIR%/Makefile
 #
 ifndef OBJ_DIR
-  OBJ_DIR := $(TOP_DIR)$(SEP)objs
+  OBJ_DIR := $(TOP_DIR)/objs
 endif
 
 
@@ -57,5 +50,6 @@
 # The NO_OUTPUT macro is used to ignore the output of commands.
 #
 NO_OUTPUT = 2> nul
+
 
 # EOF
--- a/devel/ft2build.h
+++ b/devel/ft2build.h
@@ -18,7 +18,7 @@
 
 
  /*
-  *  Rhis is a development version of <ft2build.h> that is used
+  *  This is a development version of <ft2build.h> that is used
   *  to build the library in debug mode.  Its only difference with
   *  the reference is that it forces the use of the local "ftoption.h"
   *  which contains different settings for all configuration macros.
--- a/devel/ftoption.h
+++ b/devel/ftoption.h
@@ -219,6 +219,19 @@
 
   /*************************************************************************/
   /*                                                                       */
+  /* Support for Mac fonts                                                 */
+  /*                                                                       */
+  /*   Define this macro if you want support for outline fonts in Mac      */
+  /*   format (mac dfont, mac resource, macbinary containing a mac         */
+  /*   resource) on non-Mac platforms.                                     */
+  /*                                                                       */
+  /*   Note that the `FOND' resource isn't checked.                        */
+  /*                                                                       */
+#define FT_CONFIG_OPTION_MAC_FONTS
+
+
+  /*************************************************************************/
+  /*                                                                       */
   /* Allow the use of FT_Incremental_Interface to load typefaces that      */
   /* contain no glyph data, but supply it via a callback function.         */
   /* This allows FreeType to be used with the PostScript language, using   */
@@ -278,12 +291,12 @@
   /*   should define FT_DEBUG_MEMORY here.                                 */
   /*                                                                       */
   /*   Note that the memory debugger is only activated at runtime when     */
-  /*   when the _environment_ variable "FT_DEBUG_MEMORY" is also defined!  */
+  /*   when the _environment_ variable "FT2_DEBUG_MEMORY" is defined also! */
   /*                                                                       */
   /*   Do not #undef this macro here since the build system might define   */
   /*   it for certain configurations only.                                 */
   /*                                                                       */
-#define FT_DEBUG_MEMORY
+/* #define FT_DEBUG_MEMORY */
 
 
   /*************************************************************************/
@@ -386,7 +399,32 @@
   /*   Do not #undef this macro here, since the build system might         */
   /*   define it for certain configurations only.                          */
   /*                                                                       */
-#define  TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Define TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING (in addition to    */
+  /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER) to compile the unpatented      */
+  /* work-around hinting system.  You must define this if you want either  */
+  /* to force the use of the unpatented hinting system by also defining    */
+  /* TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING, or if you want to select   */
+  /* it at run time using the FT_PARAM_TAG_UNPATENTED_HINTING tag.         */
+  /*                                                                       */
+#define TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Define TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING to restrict the      */
+  /* TrueType bytecode interpreter to actions not protected by patents.    */
+  /* This enables some fonts, for example mingliu.ttc from Dynalab, to     */
+  /* work properly.  They use hinting to make large changes to the glyph   */
+  /* shape, without which the glyph is unrecognisable.                     */
+  /* For this to work you must also define                                 */
+  /* TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING.                          */
+  /*                                                                       */
+#undef  TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING
 
 
   /*************************************************************************/
--- a/src/autohint/rules.mk
+++ b/src/autohint/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 2000, 2001, 2002 Catharon Productions Inc.
+# Copyright 2000, 2001, 2002, 2003 Catharon Productions Inc.
 # Author: David Turner
 #
 # This file is part of the Catharon Typography Project and shall only
@@ -18,29 +18,28 @@
 
 # AUTO driver directory
 #
-AUTO_DIR  := $(SRC_)autohint
-AUTO_DIR_ := $(AUTO_DIR)$(SEP)
+AUTO_DIR := $(SRC_DIR)/autohint
 
 
 # compilation flags for the driver
 #
-AUTO_COMPILE := $(FT_COMPILE) $I$(AUTO_DIR)
+AUTO_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(AUTO_DIR))
 
 
 # AUTO driver sources (i.e., C files)
 #
-AUTO_DRV_SRC := $(AUTO_DIR_)ahangles.c \
-                $(AUTO_DIR_)ahglobal.c \
-                $(AUTO_DIR_)ahglyph.c  \
-                $(AUTO_DIR_)ahhint.c   \
-                $(AUTO_DIR_)ahmodule.c
+AUTO_DRV_SRC := $(AUTO_DIR)/ahangles.c \
+                $(AUTO_DIR)/ahglobal.c \
+                $(AUTO_DIR)/ahglyph.c  \
+                $(AUTO_DIR)/ahhint.c   \
+                $(AUTO_DIR)/ahmodule.c
 
 # AUTO driver headers
 #
 AUTO_DRV_H := $(AUTO_DRV_SRC:%c=%h)  \
-              $(AUTO_DIR_)ahloader.h \
-              $(AUTO_DIR_)ahtypes.h  \
-              $(AUTO_DIR_)aherrors.h
+              $(AUTO_DIR)/ahloader.h \
+              $(AUTO_DIR)/ahtypes.h  \
+              $(AUTO_DIR)/aherrors.h
 
 
 # AUTO driver object(s)
@@ -48,12 +47,12 @@
 #   AUTO_DRV_OBJ_M is used during `multi' builds.
 #   AUTO_DRV_OBJ_S is used during `single' builds.
 #
-AUTO_DRV_OBJ_M := $(AUTO_DRV_SRC:$(AUTO_DIR_)%.c=$(OBJ_)%.$O)
-AUTO_DRV_OBJ_S := $(OBJ_)autohint.$O
+AUTO_DRV_OBJ_M := $(AUTO_DRV_SRC:$(AUTO_DIR)/%.c=$(OBJ_DIR)/%.$O)
+AUTO_DRV_OBJ_S := $(OBJ_DIR)/autohint.$O
 
 # AUTO driver source file for single build
 #
-AUTO_DRV_SRC_S := $(AUTO_DIR_)autohint.c
+AUTO_DRV_SRC_S := $(AUTO_DIR)/autohint.c
 
 
 # AUTO driver - single object
@@ -60,13 +59,13 @@
 #
 $(AUTO_DRV_OBJ_S): $(AUTO_DRV_SRC_S) $(AUTO_DRV_SRC) \
                    $(FREETYPE_H) $(AUTO_DRV_H)
-	$(AUTO_COMPILE) $T$@ $(AUTO_DRV_SRC_S)
+	$(AUTO_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(AUTO_DRV_SRC_S))
 
 
 # AUTO driver - multiple objects
 #
-$(OBJ_)%.$O: $(AUTO_DIR_)%.c $(FREETYPE_H) $(AUTO_DRV_H)
-	$(AUTO_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(AUTO_DIR)/%.c $(FREETYPE_H) $(AUTO_DRV_H)
+	$(AUTO_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
--- a/src/base/rules.mk
+++ b/src/base/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2002 by
+# Copyright 1996-2000, 2002, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -25,7 +25,7 @@
 # BASE_H is defined in freetype.mk to simplify the dependency rules.
 
 
-BASE_COMPILE := $(FT_COMPILE) $I$(SRC_)base
+BASE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SRC_DIR)/base)
 
 
 # Base layer sources
@@ -32,16 +32,16 @@
 #
 #   ftsystem, ftinit, and ftdebug are handled by freetype.mk
 #
-BASE_SRC := $(BASE_)ftcalc.c   \
-            $(BASE_)fttrigon.c \
-            $(BASE_)ftutil.c   \
-            $(BASE_)ftstream.c \
-            $(BASE_)ftgloadr.c \
-            $(BASE_)ftoutln.c  \
-            $(BASE_)ftobjs.c   \
-            $(BASE_)ftapi.c    \
-            $(BASE_)ftnames.c  \
-            $(BASE_)ftdbgmem.c
+BASE_SRC := $(BASE_DIR)/ftcalc.c   \
+            $(BASE_DIR)/fttrigon.c \
+            $(BASE_DIR)/ftutil.c   \
+            $(BASE_DIR)/ftstream.c \
+            $(BASE_DIR)/ftgloadr.c \
+            $(BASE_DIR)/ftoutln.c  \
+            $(BASE_DIR)/ftobjs.c   \
+            $(BASE_DIR)/ftapi.c    \
+            $(BASE_DIR)/ftnames.c  \
+            $(BASE_DIR)/ftdbgmem.c
 
 # Base layer `extensions' sources
 #
@@ -49,19 +49,19 @@
 # object.  It will then be linked to the final executable only if one of its
 # symbols is used by the application.
 #
-BASE_EXT_SRC := $(BASE_)ftglyph.c  \
-                $(BASE_)ftmm.c     \
-                $(BASE_)ftbdf.c    \
-                $(BASE_)fttype1.c  \
-                $(BASE_)ftxf86.c   \
-                $(BASE_)ftpfr.c    \
-                $(BASE_)ftstroke.c \
-                $(BASE_)ftwinfnt.c \
-                $(BASE_)ftbbox.c
+BASE_EXT_SRC := $(BASE_DIR)/ftglyph.c  \
+                $(BASE_DIR)/ftmm.c     \
+                $(BASE_DIR)/ftbdf.c    \
+                $(BASE_DIR)/fttype1.c  \
+                $(BASE_DIR)/ftxf86.c   \
+                $(BASE_DIR)/ftpfr.c    \
+                $(BASE_DIR)/ftstroke.c \
+                $(BASE_DIR)/ftwinfnt.c \
+                $(BASE_DIR)/ftbbox.c
 
 # Default extensions objects
 #
-BASE_EXT_OBJ := $(BASE_EXT_SRC:$(BASE_)%.c=$(OBJ_)%.$O)
+BASE_EXT_OBJ := $(BASE_EXT_SRC:$(BASE_DIR)/%.c=$(OBJ_DIR)/%.$O)
 
 
 # Base layer object(s)
@@ -72,23 +72,24 @@
 #   BASE_OBJ_S is used during `single' builds (the whole base layer is
 #   compiled as a single object file using ftbase.c).
 #
-BASE_OBJ_M := $(BASE_SRC:$(BASE_)%.c=$(OBJ_)%.$O)
-BASE_OBJ_S := $(OBJ_)ftbase.$O
+BASE_OBJ_M := $(BASE_SRC:$(BASE_DIR)/%.c=$(OBJ_DIR)/%.$O)
+BASE_OBJ_S := $(OBJ_DIR)/ftbase.$O
 
 # Base layer root source file for single build
 #
-BASE_SRC_S := $(BASE_)ftbase.c
+BASE_SRC_S := $(BASE_DIR)/ftbase.c
 
 
 # Base layer - single object build
 #
 $(BASE_OBJ_S): $(BASE_SRC_S) $(BASE_SRC) $(FREETYPE_H)
-	$(BASE_COMPILE) $T$@ $(BASE_SRC_S)
+	$(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(BASE_SRC_S))
 
 
 # Multiple objects build + extensions
 #
-$(OBJ_)%.$O: $(BASE_)%.c $(FREETYPE_H)
-	$(BASE_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(BASE_DIR)/%.c $(FREETYPE_H)
+	$(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
+
 
 # EOF
--- a/src/bdf/rules.mk
+++ b/src/bdf/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright (C) 2001, 2002 by
+# Copyright (C) 2001, 2002, 2003 by
 # Francesco Zappa Nardelli
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -29,22 +29,22 @@
 
 # bdf driver directory
 #
-BDF_DIR  := $(SRC_)bdf
-BDF_DIR_ := $(BDF_DIR)$(SEP)
+BDF_DIR  := $(SRC_DIR)/bdf
 
 
-BDF_COMPILE := $(FT_COMPILE) $I$(BDF_DIR)
+BDF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(BDF_DIR))
 
 
 # bdf driver sources (i.e., C files)
 #
-BDF_DRV_SRC := $(BDF_DIR_)bdflib.c $(BDF_DIR_)bdfdrivr.c
+BDF_DRV_SRC := $(BDF_DIR)/bdflib.c \
+               $(BDF_DIR)/bdfdrivr.c
 
 
 # bdf driver headers
 #
-BDF_DRV_H := $(BDF_DIR_)bdf.h \
-             $(BDF_DIR_)bdfdrivr.h
+BDF_DRV_H := $(BDF_DIR)/bdf.h \
+             $(BDF_DIR)/bdfdrivr.h
 
 # bdf driver object(s)
 #
@@ -51,24 +51,24 @@
 #   BDF_DRV_OBJ_M is used during `multi' builds
 #   BDF_DRV_OBJ_S is used during `single' builds
 #
-BDF_DRV_OBJ_M := $(BDF_DRV_SRC:$(BDF_DIR_)%.c=$(OBJ_)%.$O)
-BDF_DRV_OBJ_S := $(OBJ_)bdf.$O
+BDF_DRV_OBJ_M := $(BDF_DRV_SRC:$(BDF_DIR)/%.c=$(OBJ_DIR)/%.$O)
+BDF_DRV_OBJ_S := $(OBJ_DIR)/bdf.$O
 
 # bdf driver source file for single build
 #
-BDF_DRV_SRC_S := $(BDF_DIR_)bdf.c
+BDF_DRV_SRC_S := $(BDF_DIR)/bdf.c
 
 
 # bdf driver - single object
 #
 $(BDF_DRV_OBJ_S): $(BDF_DRV_SRC_S) $(BDF_DRV_SRC) $(FREETYPE_H) $(BDF_DRV_H)
-	$(BDF_COMPILE) $T$@ $(BDF_DRV_SRC_S)
+	$(BDF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(BDF_DRV_SRC_S))
 
 
 # bdf driver - multiple objects
 #
-$(OBJ_)%.$O: $(BDF_DIR_)%.c $(FREETYPE_H) $(BDF_DRV_H)
-	$(BDF_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(BDF_DIR)/%.c $(FREETYPE_H) $(BDF_DRV_H)
+	$(BDF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
@@ -75,5 +75,6 @@
 #
 DRV_OBJS_S += $(BDF_DRV_OBJ_S)
 DRV_OBJS_M += $(BDF_DRV_OBJ_M)
+
 
 # EOF
--- a/src/cache/rules.mk
+++ b/src/cache/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 2000, 2001 by
+# Copyright 2000, 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,66 +15,63 @@
 
 # Cache driver directory
 #
-CACHE_DIR  := $(SRC_)cache
-CACHE_DIR_ := $(CACHE_DIR)$(SEP)
+CACHE_DIR   := $(SRC_DIR)/cache
+CACHE_H_DIR := $(PUBLIC_DIR)/cache
 
-CACHE_H_DIR  := $(PUBLIC_)cache
-CACHE_H_DIR_ := $(CACHE_H_DIR)$(SEP)
-
 # compilation flags for the driver
 #
-Cache_COMPILE := $(FT_COMPILE) $I$(CACHE_DIR)
+CACHE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CACHE_DIR))
 
 
 # Cache driver sources (i.e., C files)
 #
-Cache_DRV_SRC := $(CACHE_DIR_)ftlru.c    \
-                 $(CACHE_DIR_)ftcmanag.c \
-                 $(CACHE_DIR_)ftccache.c \
-                 $(CACHE_DIR_)ftcglyph.c \
-                 $(CACHE_DIR_)ftcsbits.c \
-                 $(CACHE_DIR_)ftcimage.c \
-                 $(CACHE_DIR_)ftccmap.c
+CACHE_DRV_SRC := $(CACHE_DIR)/ftlru.c    \
+                 $(CACHE_DIR)/ftcmanag.c \
+                 $(CACHE_DIR)/ftccache.c \
+                 $(CACHE_DIR)/ftcglyph.c \
+                 $(CACHE_DIR)/ftcsbits.c \
+                 $(CACHE_DIR)/ftcimage.c \
+                 $(CACHE_DIR)/ftccmap.c
 
 # Cache driver headers
 #
-Cache_DRV_H := $(CACHE_H_DIR_)ftlru.h    \
-               $(CACHE_H_DIR_)ftcmanag.h \
-               $(CACHE_H_DIR_)ftcglyph.h \
-               $(CACHE_H_DIR_)ftcimage.h \
-               $(CACHE_DIR_)ftcerror.h
+CACHE_DRV_H := $(CACHE_H_DIR)/ftlru.h    \
+               $(CACHE_H_DIR)/ftcmanag.h \
+               $(CACHE_H_DIR)/ftcglyph.h \
+               $(CACHE_H_DIR)/ftcimage.h \
+               $(CACHE_DIR)/ftcerror.h
 
 
 # Cache driver object(s)
 #
-#   Cache_DRV_OBJ_M is used during `multi' builds.
-#   Cache_DRV_OBJ_S is used during `single' builds.
+#   CACHE_DRV_OBJ_M is used during `multi' builds.
+#   CACHE_DRV_OBJ_S is used during `single' builds.
 #
-Cache_DRV_OBJ_M := $(Cache_DRV_SRC:$(CACHE_DIR_)%.c=$(OBJ_)%.$O)
-Cache_DRV_OBJ_S := $(OBJ_)ftcache.$O
+CACHE_DRV_OBJ_M := $(CACHE_DRV_SRC:$(CACHE_DIR)/%.c=$(OBJ_DIR)/%.$O)
+CACHE_DRV_OBJ_S := $(OBJ_DIR)/ftcache.$O
 
 # Cache driver source file for single build
 #
-Cache_DRV_SRC_S := $(CACHE_DIR_)ftcache.c
+CACHE_DRV_SRC_S := $(CACHE_DIR)/ftcache.c
 
 
 # Cache driver - single object
 #
-$(Cache_DRV_OBJ_S): $(Cache_DRV_SRC_S) $(Cache_DRV_SRC) \
-                   $(FREETYPE_H) $(Cache_DRV_H)
-	$(Cache_COMPILE) $T$@ $(Cache_DRV_SRC_S)
+$(CACHE_DRV_OBJ_S): $(CACHE_DRV_SRC_S) $(CACHE_DRV_SRC) \
+                   $(FREETYPE_H) $(CACHE_DRV_H)
+	$(CACHE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(CACHE_DRV_SRC_S))
 
 
 # Cache driver - multiple objects
 #
-$(OBJ_)%.$O: $(CACHE_DIR_)%.c $(FREETYPE_H) $(Cache_DRV_H)
-	$(Cache_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(CACHE_DIR)/%.c $(FREETYPE_H) $(CACHE_DRV_H)
+	$(CACHE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
 #
-DRV_OBJS_S += $(Cache_DRV_OBJ_S)
-DRV_OBJS_M += $(Cache_DRV_OBJ_M)
+DRV_OBJS_S += $(CACHE_DRV_OBJ_S)
+DRV_OBJS_M += $(CACHE_DRV_OBJ_M)
 
 
 # EOF
--- a/src/cff/rules.mk
+++ b/src/cff/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2001 by
+# Copyright 1996-2000, 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,27 +15,26 @@
 
 # OpenType driver directory
 #
-CFF_DIR  := $(SRC_)cff
-CFF_DIR_ := $(CFF_DIR)$(SEP)
+CFF_DIR := $(SRC_DIR)/cff
 
 
-CFF_COMPILE := $(FT_COMPILE) $I$(CFF_DIR)
+CFF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CFF_DIR))
 
 
 # CFF driver sources (i.e., C files)
 #
-CFF_DRV_SRC := $(CFF_DIR_)cffobjs.c   \
-               $(CFF_DIR_)cffload.c   \
-               $(CFF_DIR_)cffgload.c  \
-               $(CFF_DIR_)cffparse.c  \
-               $(CFF_DIR_)cffcmap.c   \
-               $(CFF_DIR_)cffdrivr.c
+CFF_DRV_SRC := $(CFF_DIR)/cffobjs.c  \
+               $(CFF_DIR)/cffload.c  \
+               $(CFF_DIR)/cffgload.c \
+               $(CFF_DIR)/cffparse.c \
+               $(CFF_DIR)/cffcmap.c  \
+               $(CFF_DIR)/cffdrivr.c
 
 # CFF driver headers
 #
 CFF_DRV_H := $(CFF_DRV_SRC:%.c=%.h) \
-             $(CFF_DIR_)cfftoken.h \
-             $(CFF_DIR_)cfferrs.h
+             $(CFF_DIR)/cfftoken.h  \
+             $(CFF_DIR)/cfferrs.h
 
 
 # CFF driver object(s)
@@ -43,24 +42,24 @@
 #   CFF_DRV_OBJ_M is used during `multi' builds
 #   CFF_DRV_OBJ_S is used during `single' builds
 #
-CFF_DRV_OBJ_M := $(CFF_DRV_SRC:$(CFF_DIR_)%.c=$(OBJ_)%.$O)
-CFF_DRV_OBJ_S := $(OBJ_)cff.$O
+CFF_DRV_OBJ_M := $(CFF_DRV_SRC:$(CFF_DIR)/%.c=$(OBJ_DIR)/%.$O)
+CFF_DRV_OBJ_S := $(OBJ_DIR)/cff.$O
 
 # CFF driver source file for single build
 #
-CFF_DRV_SRC_S := $(CFF_DIR_)cff.c
+CFF_DRV_SRC_S := $(CFF_DIR)/cff.c
 
 
 # CFF driver - single object
 #
 $(CFF_DRV_OBJ_S): $(CFF_DRV_SRC_S) $(CFF_DRV_SRC) $(FREETYPE_H) $(CFF_DRV_H)
-	$(CFF_COMPILE) $T$@ $(CFF_DRV_SRC_S)
+	$(CFF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(CFF_DRV_SRC_S))
 
 
 # CFF driver - multiple objects
 #
-$(OBJ_)%.$O: $(CFF_DIR_)%.c $(FREETYPE_H) $(CFF_DRV_H)
-	$(CFF_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(CFF_DIR)/%.c $(FREETYPE_H) $(CFF_DRV_H)
+	$(CFF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
@@ -67,5 +66,6 @@
 #
 DRV_OBJS_S += $(CFF_DRV_OBJ_S)
 DRV_OBJS_M += $(CFF_DRV_OBJ_M)
+
 
 # EOF
--- a/src/cid/rules.mk
+++ b/src/cid/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2001 by
+# Copyright 1996-2000, 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,26 +15,25 @@
 
 # CID driver directory
 #
-CID_DIR  := $(SRC_)cid
-CID_DIR_ := $(CID_DIR)$(SEP)
+CID_DIR := $(SRC_DIR)/cid
 
 
-CID_COMPILE := $(FT_COMPILE) $I$(CID_DIR)
+CID_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CID_DIR))
 
 
 # CID driver sources (i.e., C files)
 #
-CID_DRV_SRC := $(CID_DIR_)cidparse.c \
-               $(CID_DIR_)cidload.c  \
-               $(CID_DIR_)cidriver.c \
-               $(CID_DIR_)cidgload.c \
-               $(CID_DIR_)cidobjs.c
+CID_DRV_SRC := $(CID_DIR)/cidparse.c \
+               $(CID_DIR)/cidload.c  \
+               $(CID_DIR)/cidriver.c \
+               $(CID_DIR)/cidgload.c \
+               $(CID_DIR)/cidobjs.c
 
 # CID driver headers
 #
 CID_DRV_H := $(CID_DRV_SRC:%.c=%.h) \
-             $(CID_DIR_)cidtoken.h  \
-             $(CID_DIR_)ciderrs.h
+             $(CID_DIR)/cidtoken.h  \
+             $(CID_DIR)/ciderrs.h
 
 
 # CID driver object(s)
@@ -42,24 +41,24 @@
 #   CID_DRV_OBJ_M is used during `multi' builds
 #   CID_DRV_OBJ_S is used during `single' builds
 #
-CID_DRV_OBJ_M := $(CID_DRV_SRC:$(CID_DIR_)%.c=$(OBJ_)%.$O)
-CID_DRV_OBJ_S := $(OBJ_)type1cid.$O
+CID_DRV_OBJ_M := $(CID_DRV_SRC:$(CID_DIR)/%.c=$(OBJ_DIR)/%.$O)
+CID_DRV_OBJ_S := $(OBJ_DIR)/type1cid.$O
 
 # CID driver source file for single build
 #
-CID_DRV_SRC_S := $(CID_DIR_)type1cid.c
+CID_DRV_SRC_S := $(CID_DIR)/type1cid.c
 
 
 # CID driver - single object
 #
 $(CID_DRV_OBJ_S): $(CID_DRV_SRC_S) $(CID_DRV_SRC) $(FREETYPE_H) $(CID_DRV_H)
-	$(CID_COMPILE) $T$@ $(CID_DRV_SRC_S)
+	$(CID_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(CID_DRV_SRC_S))
 
 
 # CID driver - multiple objects
 #
-$(OBJ_)%.$O: $(CID_DIR_)%.c $(FREETYPE_H) $(CID_DRV_H)
-	$(CID_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(CID_DIR)/%.c $(FREETYPE_H) $(CID_DRV_H)
+	$(CID_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
@@ -66,5 +65,6 @@
 #
 DRV_OBJS_S += $(CID_DRV_OBJ_S)
 DRV_OBJS_M += $(CID_DRV_OBJ_M)
+
 
 # EOF
--- a/src/gzip/rules.mk
+++ b/src/gzip/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 2002 by
+# Copyright 2002, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,14 +15,13 @@
 
 # gzip driver directory
 #
-GZIP_DIR  := $(SRC_)gzip
-GZIP_DIR_ := $(GZIP_DIR)$(SEP)
+GZIP_DIR := $(SRC_DIR)/gzip
 
 
 # compilation flags for the driver
 #
 ifeq ($(SYSTEM_ZLIB),)
-  GZIP_COMPILE := $(FT_COMPILE) $I$(GZIP_DIR)
+  GZIP_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(GZIP_DIR))
 else
   GZIP_COMPILE := $(FT_COMPILE)
 endif
@@ -30,7 +29,7 @@
 
 # gzip support sources (i.e., C files)
 #
-GZIP_DRV_SRC := $(GZIP_DIR_)ftgzip.c
+GZIP_DRV_SRC := $(GZIP_DIR)/ftgzip.c
 
 # gzip support headers
 #
@@ -43,27 +42,28 @@
 #   GZIP_DRV_OBJ_S is used during `single' builds
 #
 ifeq ($(SYSTEM_ZLIB),)
-  GZIP_DRV_OBJ_M := $(GZIP_DRV_SRC:$(GZIP_DIR_)%.c=$(OBJ_)%.$O)
+  GZIP_DRV_OBJ_M := $(GZIP_DRV_SRC:$(GZIP_DIR)/%.c=$(OBJ_DIR)/%.$O)
 else
-  GZIP_DRV_OBJ_M := $(OBJ_)ftgzip.$O
+  GZIP_DRV_OBJ_M := $(OBJ_DIR)/ftgzip.$O
 endif
-GZIP_DRV_OBJ_S := $(OBJ_)ftgzip.$O
+GZIP_DRV_OBJ_S := $(OBJ_DIR)/ftgzip.$O
 
 # gzip support source file for single build
 #
-GZIP_DRV_SRC_S := $(GZIP_DIR_)ftgzip.c
+GZIP_DRV_SRC_S := $(GZIP_DIR)/ftgzip.c
 
 
 # gzip support - single object
 #
-$(GZIP_DRV_OBJ_S): $(GZIP_DRV_SRC_S) $(GZIP_DRV_SRC) $(FREETYPE_H) $(GZIP_DRV_H)
-	$(GZIP_COMPILE) $T$@ $(GZIP_DRV_SRC_S)
+$(GZIP_DRV_OBJ_S): $(GZIP_DRV_SRC_S) $(GZIP_DRV_SRC) $(FREETYPE_H) \
+                   $(GZIP_DRV_H)
+	$(GZIP_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(GZIP_DRV_SRC_S))
 
 
 # gzip support - multiple objects
 #
-$(OBJ_)%.$O: $(GZIP_DIR_)%.c $(FREETYPE_H) $(GZIP_DRV_H)
-	$(GZIP_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(GZIP_DIR)/%.c $(FREETYPE_H) $(GZIP_DRV_H)
+	$(GZIP_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
@@ -70,5 +70,6 @@
 #
 DRV_OBJS_S += $(GZIP_DRV_OBJ_S)
 DRV_OBJS_M += $(GZIP_DRV_OBJ_M)
+
 
 # EOF
--- a/src/pcf/rules.mk
+++ b/src/pcf/rules.mk
@@ -27,25 +27,24 @@
 
 # pcf driver directory
 #
-PCF_DIR  := $(SRC_)pcf
-PCF_DIR_ := $(PCF_DIR)$(SEP)
+PCF_DIR := $(SRC_DIR)/pcf
 
 
-PCF_COMPILE := $(FT_COMPILE) $I$(PCF_DIR)
+PCF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PCF_DIR))
 
 
 # pcf driver sources (i.e., C files)
 #
-PCF_DRV_SRC := $(PCF_DIR_)pcfread.c  \
-               $(PCF_DIR_)pcfdrivr.c \
-               $(PCF_DIR_)pcfutil.c
+PCF_DRV_SRC := $(PCF_DIR)/pcfread.c  \
+               $(PCF_DIR)/pcfdrivr.c \
+               $(PCF_DIR)/pcfutil.c
 
 # pcf driver headers
 #
-PCF_DRV_H := $(PCF_DIR_)pcf.h      \
-             $(PCF_DIR_)pcfdrivr.h \
-             $(PCF_DIR_)pcfutil.h  \
-             $(PCF_DIR_)pcferror.h
+PCF_DRV_H := $(PCF_DIR)/pcf.h      \
+             $(PCF_DIR)/pcfdrivr.h \
+             $(PCF_DIR)/pcfutil.h  \
+             $(PCF_DIR)/pcferror.h
 
 # pcf driver object(s)
 #
@@ -52,24 +51,24 @@
 #   PCF_DRV_OBJ_M is used during `multi' builds
 #   PCF_DRV_OBJ_S is used during `single' builds
 #
-PCF_DRV_OBJ_M := $(PCF_DRV_SRC:$(PCF_DIR_)%.c=$(OBJ_)%.$O)
-PCF_DRV_OBJ_S := $(OBJ_)pcf.$O
+PCF_DRV_OBJ_M := $(PCF_DRV_SRC:$(PCF_DIR)/%.c=$(OBJ_DIR)/%.$O)
+PCF_DRV_OBJ_S := $(OBJ_DIR)/pcf.$O
 
-# Windows driver source file for single build
+# pcf driver source file for single build
 #
-PCF_DRV_SRC_S := $(PCF_DIR_)pcf.c
+PCF_DRV_SRC_S := $(PCF_DIR)/pcf.c
 
 
 # pcf driver - single object
 #
 $(PCF_DRV_OBJ_S): $(PCF_DRV_SRC_S) $(PCF_DRV_SRC) $(FREETYPE_H) $(PCF_DRV_H)
-	$(PCF_COMPILE) $T$@ $(PCF_DRV_SRC_S)
+	$(PCF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PCF_DRV_SRC_S))
 
 
 # pcf driver - multiple objects
 #
-$(OBJ_)%.$O: $(PCF_DIR_)%.c $(FREETYPE_H) $(PCF_DRV_H)
-	$(PCF_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(PCF_DIR)/%.c $(FREETYPE_H) $(PCF_DRV_H)
+	$(PCF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
@@ -76,5 +75,6 @@
 #
 DRV_OBJS_S += $(PCF_DRV_OBJ_S)
 DRV_OBJS_M += $(PCF_DRV_OBJ_M)
+
 
 # EOF
--- a/src/pfr/rules.mk
+++ b/src/pfr/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 2002 by
+# Copyright 2002, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,27 +15,26 @@
 
 # pfr driver directory
 #
-PFR_DIR  := $(SRC_)pfr
-PFR_DIR_ := $(PFR_DIR)$(SEP)
+PFR_DIR := $(SRC_DIR)/pfr
 
 
 # compilation flags for the driver
 #
-PFR_COMPILE := $(FT_COMPILE) $I$(PFR_DIR)
+PFR_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PFR_DIR))
 
 
 # pfr driver sources (i.e., C files)
 #
-PFR_DRV_SRC := $(PFR_DIR_)pfrload.c  \
-               $(PFR_DIR_)pfrgload.c \
-               $(PFR_DIR_)pfrcmap.c  \
-               $(PFR_DIR_)pfrdrivr.c \
-               $(PFR_DIR_)pfrobjs.c
+PFR_DRV_SRC := $(PFR_DIR)/pfrload.c  \
+               $(PFR_DIR)/pfrgload.c \
+               $(PFR_DIR)/pfrcmap.c  \
+               $(PFR_DIR)/pfrdrivr.c \
+               $(PFR_DIR)/pfrobjs.c
 
 # pfr driver headers
 #
 PFR_DRV_H := $(PFR_DRV_SRC:%.c=%.h) \
-             $(PFR_DIR_)pfrerror.h
+             $(PFR_DIR)/pfrerror.h
 
 
 # Pfr driver object(s)
@@ -43,24 +42,24 @@
 #   PFR_DRV_OBJ_M is used during `multi' builds
 #   PFR_DRV_OBJ_S is used during `single' builds
 #
-PFR_DRV_OBJ_M := $(PFR_DRV_SRC:$(PFR_DIR_)%.c=$(OBJ_)%.$O)
-PFR_DRV_OBJ_S := $(OBJ_)pfr.$O
+PFR_DRV_OBJ_M := $(PFR_DRV_SRC:$(PFR_DIR)/%.c=$(OBJ_DIR)/%.$O)
+PFR_DRV_OBJ_S := $(OBJ_DIR)/pfr.$O
 
 # pfr driver source file for single build
 #
-PFR_DRV_SRC_S := $(PFR_DIR_)pfr.c
+PFR_DRV_SRC_S := $(PFR_DIR)/pfr.c
 
 
 # pfr driver - single object
 #
 $(PFR_DRV_OBJ_S): $(PFR_DRV_SRC_S) $(PFR_DRV_SRC) $(FREETYPE_H) $(PFR_DRV_H)
-	$(PFR_COMPILE) $T$@ $(PFR_DRV_SRC_S)
+	$(PFR_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PFR_DRV_SRC_S))
 
 
 # pfr driver - multiple objects
 #
-$(OBJ_)%.$O: $(PFR_DIR_)%.c $(FREETYPE_H) $(PFR_DRV_H)
-	$(PFR_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(PFR_DIR)/%.c $(FREETYPE_H) $(PFR_DRV_H)
+	$(PFR_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
@@ -67,5 +66,6 @@
 #
 DRV_OBJS_S += $(PFR_DRV_OBJ_S)
 DRV_OBJS_M += $(PFR_DRV_OBJ_M)
+
 
 # EOF
--- a/src/psaux/rules.mk
+++ b/src/psaux/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2002 by
+# Copyright 1996-2000, 2002, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,26 +15,25 @@
 
 # PSAUX driver directory
 #
-PSAUX_DIR  := $(SRC_)psaux
-PSAUX_DIR_ := $(PSAUX_DIR)$(SEP)
+PSAUX_DIR := $(SRC_DIR)/psaux
 
 
 # compilation flags for the driver
 #
-PSAUX_COMPILE := $(FT_COMPILE) $I$(PSAUX_DIR)
+PSAUX_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PSAUX_DIR))
 
 
 # PSAUX driver sources (i.e., C files)
 #
-PSAUX_DRV_SRC := $(PSAUX_DIR_)psobjs.c   \
-                 $(PSAUX_DIR_)t1decode.c \
-                 $(PSAUX_DIR_)t1cmap.c   \
-                 $(PSAUX_DIR_)psauxmod.c
+PSAUX_DRV_SRC := $(PSAUX_DIR)/psobjs.c   \
+                 $(PSAUX_DIR)/t1decode.c \
+                 $(PSAUX_DIR)/t1cmap.c   \
+                 $(PSAUX_DIR)/psauxmod.c
 
 # PSAUX driver headers
 #
 PSAUX_DRV_H := $(PSAUX_DRV_SRC:%c=%h)  \
-               $(PSAUX_DIR_)psauxerr.h
+               $(PSAUX_DIR)/psauxerr.h
 
 
 # PSAUX driver object(s)
@@ -42,12 +41,12 @@
 #   PSAUX_DRV_OBJ_M is used during `multi' builds.
 #   PSAUX_DRV_OBJ_S is used during `single' builds.
 #
-PSAUX_DRV_OBJ_M := $(PSAUX_DRV_SRC:$(PSAUX_DIR_)%.c=$(OBJ_)%.$O)
-PSAUX_DRV_OBJ_S := $(OBJ_)psaux.$O
+PSAUX_DRV_OBJ_M := $(PSAUX_DRV_SRC:$(PSAUX_DIR)/%.c=$(OBJ_DIR)/%.$O)
+PSAUX_DRV_OBJ_S := $(OBJ_DIR)/psaux.$O
 
 # PSAUX driver source file for single build
 #
-PSAUX_DRV_SRC_S := $(PSAUX_DIR_)psaux.c
+PSAUX_DRV_SRC_S := $(PSAUX_DIR)/psaux.c
 
 
 # PSAUX driver - single object
@@ -54,13 +53,13 @@
 #
 $(PSAUX_DRV_OBJ_S): $(PSAUX_DRV_SRC_S) $(PSAUX_DRV_SRC) \
                    $(FREETYPE_H) $(PSAUX_DRV_H)
-	$(PSAUX_COMPILE) $T$@ $(PSAUX_DRV_SRC_S)
+	$(PSAUX_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PSAUX_DRV_SRC_S))
 
 
 # PSAUX driver - multiple objects
 #
-$(OBJ_)%.$O: $(PSAUX_DIR_)%.c $(FREETYPE_H) $(PSAUX_DRV_H)
-	$(PSAUX_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(PSAUX_DIR)/%.c $(FREETYPE_H) $(PSAUX_DRV_H)
+	$(PSAUX_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
--- a/src/pshinter/rules.mk
+++ b/src/pshinter/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 2001 by
+# Copyright 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,21 +15,20 @@
 
 # PSHINTER driver directory
 #
-PSHINTER_DIR  := $(SRC_)pshinter
-PSHINTER_DIR_ := $(PSHINTER_DIR)$(SEP)
+PSHINTER_DIR := $(SRC_DIR)/pshinter
 
 
 # compilation flags for the driver
 #
-PSHINTER_COMPILE := $(FT_COMPILE) $I$(PSHINTER_DIR)
+PSHINTER_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PSHINTER_DIR))
 
 
 # PSHINTER driver sources (i.e., C files)
 #
-PSHINTER_DRV_SRC := $(PSHINTER_DIR_)pshrec.c  \
-                    $(PSHINTER_DIR_)pshglob.c \
-                    $(PSHINTER_DIR_)pshmod.c  \
-                    $(PSHINTER_DIR_)pshalgo.c
+PSHINTER_DRV_SRC := $(PSHINTER_DIR)/pshrec.c  \
+                    $(PSHINTER_DIR)/pshglob.c \
+                    $(PSHINTER_DIR)/pshmod.c  \
+                    $(PSHINTER_DIR)/pshalgo.c
 
 
 # PSHINTER driver headers
@@ -42,12 +41,12 @@
 #   PSHINTER_DRV_OBJ_M is used during `multi' builds.
 #   PSHINTER_DRV_OBJ_S is used during `single' builds.
 #
-PSHINTER_DRV_OBJ_M := $(PSHINTER_DRV_SRC:$(PSHINTER_DIR_)%.c=$(OBJ_)%.$O)
-PSHINTER_DRV_OBJ_S := $(OBJ_)pshinter.$O
+PSHINTER_DRV_OBJ_M := $(PSHINTER_DRV_SRC:$(PSHINTER_DIR)/%.c=$(OBJ_DIR)/%.$O)
+PSHINTER_DRV_OBJ_S := $(OBJ_DIR)/pshinter.$O
 
 # PSHINTER driver source file for single build
 #
-PSHINTER_DRV_SRC_S := $(PSHINTER_DIR_)pshinter.c
+PSHINTER_DRV_SRC_S := $(PSHINTER_DIR)/pshinter.c
 
 
 # PSHINTER driver - single object
@@ -54,13 +53,13 @@
 #
 $(PSHINTER_DRV_OBJ_S): $(PSHINTER_DRV_SRC_S) $(PSHINTER_DRV_SRC) \
                        $(FREETYPE_H) $(PSHINTER_DRV_H)
-	$(PSHINTER_COMPILE) $T$@ $(PSHINTER_DRV_SRC_S)
+	$(PSHINTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PSHINTER_DRV_SRC_S))
 
 
 # PSHINTER driver - multiple objects
 #
-$(OBJ_)%.$O: $(PSHINTER_DIR_)%.c $(FREETYPE_H) $(PSHINTER_DRV_H)
-	$(PSHINTER_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(PSHINTER_DIR)/%.c $(FREETYPE_H) $(PSHINTER_DRV_H)
+	$(PSHINTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
--- a/src/psnames/rules.mk
+++ b/src/psnames/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2001 by
+# Copyright 1996-2000, 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,25 +15,24 @@
 
 # PSNames driver directory
 #
-PSNAMES_DIR  := $(SRC_)psnames
-PSNAMES_DIR_ := $(PSNAMES_DIR)$(SEP)
+PSNAMES_DIR := $(SRC_DIR)/psnames
 
 
 # compilation flags for the driver
 #
-PSNAMES_COMPILE := $(FT_COMPILE) $I$(PSNAMES_DIR)
+PSNAMES_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PSNAMES_DIR))
 
 
 # PSNames driver sources (i.e., C files)
 #
-PSNAMES_DRV_SRC := $(PSNAMES_DIR_)psmodule.c
+PSNAMES_DRV_SRC := $(PSNAMES_DIR)/psmodule.c
 
 
 # PSNames driver headers
 #
 PSNAMES_DRV_H := $(PSNAMES_DRV_SRC:%.c=%.h) \
-                 $(PSNAMES_DIR_)pstables.h  \
-                 $(PSNAMES_DIR_)psnamerr.h
+                 $(PSNAMES_DIR)/pstables.h  \
+                 $(PSNAMES_DIR)/psnamerr.h
 
 
 # PSNames driver object(s)
@@ -41,12 +40,12 @@
 #   PSNAMES_DRV_OBJ_M is used during `multi' builds
 #   PSNAMES_DRV_OBJ_S is used during `single' builds
 #
-PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR_)%.c=$(OBJ_)%.$O)
-PSNAMES_DRV_OBJ_S := $(OBJ_)psnames.$O
+PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR)/%.c=$(OBJ_DIR)/%.$O)
+PSNAMES_DRV_OBJ_S := $(OBJ_DIR)/psnames.$O
 
 # PSNames driver source file for single build
 #
-PSNAMES_DRV_SRC_S := $(PSNAMES_DIR_)psmodule.c
+PSNAMES_DRV_SRC_S := $(PSNAMES_DIR)/psmodule.c
 
 
 # PSNames driver - single object
@@ -53,13 +52,13 @@
 #
 $(PSNAMES_DRV_OBJ_S): $(PSNAMES_DRV_SRC_S) $(PSNAMES_DRV_SRC) \
                       $(FREETYPE_H) $(PSNAMES_DRV_H)
-	$(PSNAMES_COMPILE) $T$@ $(PSNAMES_DRV_SRC_S)
+	$(PSNAMES_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PSNAMES_DRV_SRC_S))
 
 
 # PSNames driver - multiple objects
 #
-$(OBJ_)%.$O: $(PSNAMES_DIR_)%.c $(FREETYPE_H) $(PSNAMES_DRV_H)
-	$(PSNAMES_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(PSNAMES_DIR)/%.c $(FREETYPE_H) $(PSNAMES_DRV_H)
+	$(PSNAMES_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
--- a/src/raster/rules.mk
+++ b/src/raster/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2001 by
+# Copyright 1996-2000, 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -13,58 +13,57 @@
 # fully.
 
 
-# raster1 driver directory
+# raster driver directory
 #
-RAS1_DIR  := $(SRC_)raster
-RAS1_DIR_ := $(RAS1_DIR)$(SEP)
+RASTER_DIR := $(SRC_DIR)/raster
 
 # compilation flags for the driver
 #
-RAS1_COMPILE := $(FT_COMPILE) $I$(RAS1_DIR)
+RASTER_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(RASTER_DIR))
 
 
-# raster1 driver sources (i.e., C files)
+# raster driver sources (i.e., C files)
 #
-RAS1_DRV_SRC := $(RAS1_DIR_)ftraster.c \
-                $(RAS1_DIR_)ftrend1.c
+RASTER_DRV_SRC := $(RASTER_DIR)/ftraster.c \
+                  $(RASTER_DIR)/ftrend1.c
 
 
-# raster1 driver headers
+# raster driver headers
 #
-RAS1_DRV_H := $(RAS1_DRV_SRC:%.c=%.h) \
-              $(RAS1_DIR_)rasterrs.h
+RASTER_DRV_H := $(RASTER_DRV_SRC:%.c=%.h) \
+                $(RASTER_DIR)/rasterrs.h
 
 
-# raster1 driver object(s)
+# raster driver object(s)
 #
-#   RAS1_DRV_OBJ_M is used during `multi' builds.
-#   RAS1_DRV_OBJ_S is used during `single' builds.
+#   RASTER_DRV_OBJ_M is used during `multi' builds.
+#   RASTER_DRV_OBJ_S is used during `single' builds.
 #
-RAS1_DRV_OBJ_M := $(RAS1_DRV_SRC:$(RAS1_DIR_)%.c=$(OBJ_)%.$O)
-RAS1_DRV_OBJ_S := $(OBJ_)raster.$O
+RASTER_DRV_OBJ_M := $(RASTER_DRV_SRC:$(RASTER_DIR)/%.c=$(OBJ_DIR)/%.$O)
+RASTER_DRV_OBJ_S := $(OBJ_DIR)/raster.$O
 
-# raster1 driver source file for single build
+# raster driver source file for single build
 #
-RAS1_DRV_SRC_S := $(RAS1_DIR_)raster.c
+RASTER_DRV_SRC_S := $(RASTER_DIR)/raster.c
 
 
-# raster1 driver - single object
+# raster driver - single object
 #
-$(RAS1_DRV_OBJ_S): $(RAS1_DRV_SRC_S) $(RAS1_DRV_SRC) \
-                   $(FREETYPE_H) $(RAS1_DRV_H)
-	$(RAS1_COMPILE) $T$@ $(RAS1_DRV_SRC_S)
+$(RASTER_DRV_OBJ_S): $(RASTER_DRV_SRC_S) $(RASTER_DRV_SRC) \
+                     $(FREETYPE_H) $(RASTER_DRV_H)
+	$(RASTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(RASTER_DRV_SRC_S))
 
 
-# raster1 driver - multiple objects
+# raster driver - multiple objects
 #
-$(OBJ_)%.$O: $(RAS1_DIR_)%.c $(FREETYPE_H) $(RAS1_DRV_H)
-	$(RAS1_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(RASTER_DIR)/%.c $(FREETYPE_H) $(RASTER_DRV_H)
+	$(RASTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
 #
-DRV_OBJS_S += $(RAS1_DRV_OBJ_S)
-DRV_OBJS_M += $(RAS1_DRV_OBJ_M)
+DRV_OBJS_S += $(RASTER_DRV_OBJ_S)
+DRV_OBJS_M += $(RASTER_DRV_OBJ_M)
 
 
 # EOF
--- a/src/sfnt/rules.mk
+++ b/src/sfnt/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2002 by
+# Copyright 1996-2000, 2002, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,29 +15,28 @@
 
 # SFNT driver directory
 #
-SFNT_DIR  := $(SRC_)sfnt
-SFNT_DIR_ := $(SFNT_DIR)$(SEP)
+SFNT_DIR := $(SRC_DIR)/sfnt
 
 
 # compilation flags for the driver
 #
-SFNT_COMPILE := $(FT_COMPILE) $I$(SFNT_DIR)
+SFNT_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SFNT_DIR))
 
 
 # SFNT driver sources (i.e., C files)
 #
-SFNT_DRV_SRC := $(SFNT_DIR_)ttload.c   \
-                $(SFNT_DIR_)ttcmap.c   \
-                $(SFNT_DIR_)ttcmap0.c  \
-                $(SFNT_DIR_)ttsbit.c   \
-                $(SFNT_DIR_)ttpost.c   \
-                $(SFNT_DIR_)sfobjs.c   \
-                $(SFNT_DIR_)sfdriver.c
+SFNT_DRV_SRC := $(SFNT_DIR)/ttload.c   \
+                $(SFNT_DIR)/ttcmap.c   \
+                $(SFNT_DIR)/ttcmap0.c  \
+                $(SFNT_DIR)/ttsbit.c   \
+                $(SFNT_DIR)/ttpost.c   \
+                $(SFNT_DIR)/sfobjs.c   \
+                $(SFNT_DIR)/sfdriver.c
 
 # SFNT driver headers
 #
 SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h) \
-              $(SFNT_DIR_)sferrors.h
+              $(SFNT_DIR)/sferrors.h
 
 
 # SFNT driver object(s)
@@ -45,12 +44,12 @@
 #   SFNT_DRV_OBJ_M is used during `multi' builds.
 #   SFNT_DRV_OBJ_S is used during `single' builds.
 #
-SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR_)%.c=$(OBJ_)%.$O)
-SFNT_DRV_OBJ_S := $(OBJ_)sfnt.$O
+SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR)/%.c=$(OBJ_DIR)/%.$O)
+SFNT_DRV_OBJ_S := $(OBJ_DIR)/sfnt.$O
 
 # SFNT driver source file for single build
 #
-SFNT_DRV_SRC_S := $(SFNT_DIR_)sfnt.c
+SFNT_DRV_SRC_S := $(SFNT_DIR)/sfnt.c
 
 
 # SFNT driver - single object
@@ -57,13 +56,13 @@
 #
 $(SFNT_DRV_OBJ_S): $(SFNT_DRV_SRC_S) $(SFNT_DRV_SRC) \
                    $(FREETYPE_H) $(SFNT_DRV_H)
-	$(SFNT_COMPILE) $T$@ $(SFNT_DRV_SRC_S)
+	$(SFNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(SFNT_DRV_SRC_S))
 
 
 # SFNT driver - multiple objects
 #
-$(OBJ_)%.$O: $(SFNT_DIR_)%.c $(FREETYPE_H) $(SFNT_DRV_H)
-	$(SFNT_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(SFNT_DIR)/%.c $(FREETYPE_H) $(SFNT_DRV_H)
+	$(SFNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
--- a/src/smooth/rules.mk
+++ b/src/smooth/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2001 by
+# Copyright 1996-2000, 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,24 +15,23 @@
 
 # smooth driver directory
 #
-SMOOTH_DIR  := $(SRC_)smooth
-SMOOTH_DIR_ := $(SMOOTH_DIR)$(SEP)
+SMOOTH_DIR := $(SRC_DIR)/smooth
 
 # compilation flags for the driver
 #
-SMOOTH_COMPILE := $(FT_COMPILE) $I$(SMOOTH_DIR)
+SMOOTH_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SMOOTH_DIR))
 
 
 # smooth driver sources (i.e., C files)
 #
-SMOOTH_DRV_SRC := $(SMOOTH_DIR_)ftgrays.c  \
-                  $(SMOOTH_DIR_)ftsmooth.c
+SMOOTH_DRV_SRC := $(SMOOTH_DIR)/ftgrays.c  \
+                  $(SMOOTH_DIR)/ftsmooth.c
 
 
 # smooth driver headers
 #
 SMOOTH_DRV_H := $(SMOOTH_DRV_SRC:%c=%h)  \
-                $(SMOOTH_DIR_)ftsmerrs.h
+                $(SMOOTH_DIR)/ftsmerrs.h
 
 
 # smooth driver object(s)
@@ -40,25 +39,25 @@
 #   SMOOTH_DRV_OBJ_M is used during `multi' builds.
 #   SMOOTH_DRV_OBJ_S is used during `single' builds.
 #
-SMOOTH_DRV_OBJ_M := $(SMOOTH_DRV_SRC:$(SMOOTH_DIR_)%.c=$(OBJ_)%.$O)
-SMOOTH_DRV_OBJ_S := $(OBJ_)smooth.$O
+SMOOTH_DRV_OBJ_M := $(SMOOTH_DRV_SRC:$(SMOOTH_DIR)/%.c=$(OBJ_DIR)/%.$O)
+SMOOTH_DRV_OBJ_S := $(OBJ_DIR)/smooth.$O
 
 # smooth driver source file for single build
 #
-SMOOTH_DRV_SRC_S := $(SMOOTH_DIR_)smooth.c
+SMOOTH_DRV_SRC_S := $(SMOOTH_DIR)/smooth.c
 
 
 # smooth driver - single object
 #
 $(SMOOTH_DRV_OBJ_S): $(SMOOTH_DRV_SRC_S) $(SMOOTH_DRV_SRC) \
-                   $(FREETYPE_H) $(SMOOTH_DRV_H)
-	$(SMOOTH_COMPILE) $T$@ $(SMOOTH_DRV_SRC_S)
+                     $(FREETYPE_H) $(SMOOTH_DRV_H)
+	$(SMOOTH_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(SMOOTH_DRV_SRC_S))
 
 
 # smooth driver - multiple objects
 #
-$(OBJ_)%.$O: $(SMOOTH_DIR_)%.c $(FREETYPE_H) $(SMOOTH_DRV_H)
-	$(SMOOTH_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(SMOOTH_DIR)/%.c $(FREETYPE_H) $(SMOOTH_DRV_H)
+	$(SMOOTH_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
--- a/src/truetype/rules.mk
+++ b/src/truetype/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2001 by
+# Copyright 1996-2000, 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,27 +15,26 @@
 
 # TrueType driver directory
 #
-TT_DIR  := $(SRC_)truetype
-TT_DIR_ := $(TT_DIR)$(SEP)
+TT_DIR := $(SRC_DIR)/truetype
 
 
 # compilation flags for the driver
 #
-TT_COMPILE := $(FT_COMPILE) $I$(TT_DIR)
+TT_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(TT_DIR))
 
 
 # TrueType driver sources (i.e., C files)
 #
-TT_DRV_SRC := $(TT_DIR_)ttobjs.c   \
-              $(TT_DIR_)ttpload.c  \
-              $(TT_DIR_)ttgload.c  \
-              $(TT_DIR_)ttinterp.c \
-              $(TT_DIR_)ttdriver.c
+TT_DRV_SRC := $(TT_DIR)/ttobjs.c   \
+              $(TT_DIR)/ttpload.c  \
+              $(TT_DIR)/ttgload.c  \
+              $(TT_DIR)/ttinterp.c \
+              $(TT_DIR)/ttdriver.c
 
 # TrueType driver headers
 #
 TT_DRV_H := $(TT_DRV_SRC:%.c=%.h) \
-            $(TT_DIR_)tterrors.h
+            $(TT_DIR)/tterrors.h
 
 
 # TrueType driver object(s)
@@ -43,24 +42,24 @@
 #   TT_DRV_OBJ_M is used during `multi' builds
 #   TT_DRV_OBJ_S is used during `single' builds
 #
-TT_DRV_OBJ_M := $(TT_DRV_SRC:$(TT_DIR_)%.c=$(OBJ_)%.$O)
-TT_DRV_OBJ_S := $(OBJ_)truetype.$O
+TT_DRV_OBJ_M := $(TT_DRV_SRC:$(TT_DIR)/%.c=$(OBJ_DIR)/%.$O)
+TT_DRV_OBJ_S := $(OBJ_DIR)/truetype.$O
 
 # TrueType driver source file for single build
 #
-TT_DRV_SRC_S := $(TT_DIR_)truetype.c
+TT_DRV_SRC_S := $(TT_DIR)/truetype.c
 
 
 # TrueType driver - single object
 #
 $(TT_DRV_OBJ_S): $(TT_DRV_SRC_S) $(TT_DRV_SRC) $(FREETYPE_H) $(TT_DRV_H)
-	$(TT_COMPILE) $T$@ $(TT_DRV_SRC_S)
+	$(TT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(TT_DRV_SRC_S))
 
 
 # driver - multiple objects
 #
-$(OBJ_)%.$O: $(TT_DIR_)%.c $(FREETYPE_H) $(TT_DRV_H)
-	$(TT_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(TT_DIR)/%.c $(FREETYPE_H) $(TT_DRV_H)
+	$(TT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
@@ -67,5 +66,6 @@
 #
 DRV_OBJS_S += $(TT_DRV_OBJ_S)
 DRV_OBJS_M += $(TT_DRV_OBJ_M)
+
 
 # EOF
--- a/src/type1/rules.mk
+++ b/src/type1/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2001 by
+# Copyright 1996-2000, 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,29 +15,28 @@
 
 # Type1 driver directory
 #
-T1_DIR  := $(SRC_)type1
-T1_DIR_ := $(T1_DIR)$(SEP)
+T1_DIR := $(SRC_DIR)/type1
 
 
 # compilation flags for the driver
 #
-T1_COMPILE := $(FT_COMPILE) $I$(T1_DIR)
+T1_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(T1_DIR))
 
 
 # Type1 driver sources (i.e., C files)
 #
-T1_DRV_SRC := $(T1_DIR_)t1parse.c  \
-              $(T1_DIR_)t1load.c   \
-              $(T1_DIR_)t1driver.c \
-              $(T1_DIR_)t1afm.c    \
-              $(T1_DIR_)t1gload.c  \
-              $(T1_DIR_)t1objs.c
+T1_DRV_SRC := $(T1_DIR)/t1parse.c  \
+              $(T1_DIR)/t1load.c   \
+              $(T1_DIR)/t1driver.c \
+              $(T1_DIR)/t1afm.c    \
+              $(T1_DIR)/t1gload.c  \
+              $(T1_DIR)/t1objs.c
 
 # Type1 driver headers
 #
 T1_DRV_H := $(T1_DRV_SRC:%.c=%.h) \
-            $(T1_DIR_)t1tokens.h  \
-            $(T1_DIR_)t1errors.h
+            $(T1_DIR)/t1tokens.h  \
+            $(T1_DIR)/t1errors.h
 
 
 # Type1 driver object(s)
@@ -45,24 +44,24 @@
 #   T1_DRV_OBJ_M is used during `multi' builds
 #   T1_DRV_OBJ_S is used during `single' builds
 #
-T1_DRV_OBJ_M := $(T1_DRV_SRC:$(T1_DIR_)%.c=$(OBJ_)%.$O)
-T1_DRV_OBJ_S := $(OBJ_)type1.$O
+T1_DRV_OBJ_M := $(T1_DRV_SRC:$(T1_DIR)/%.c=$(OBJ_DIR)/%.$O)
+T1_DRV_OBJ_S := $(OBJ_DIR)/type1.$O
 
 # Type1 driver source file for single build
 #
-T1_DRV_SRC_S := $(T1_DIR_)type1.c
+T1_DRV_SRC_S := $(T1_DIR)/type1.c
 
 
 # Type1 driver - single object
 #
 $(T1_DRV_OBJ_S): $(T1_DRV_SRC_S) $(T1_DRV_SRC) $(FREETYPE_H) $(T1_DRV_H)
-	$(T1_COMPILE) $T$@ $(T1_DRV_SRC_S)
+	$(T1_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(T1_DRV_SRC_S))
 
 
 # Type1 driver - multiple objects
 #
-$(OBJ_)%.$O: $(T1_DIR_)%.c $(FREETYPE_H) $(T1_DRV_H)
-	$(T1_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(T1_DIR)/%.c $(FREETYPE_H) $(T1_DRV_H)
+	$(T1_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
@@ -69,5 +68,6 @@
 #
 DRV_OBJS_S += $(T1_DRV_OBJ_S)
 DRV_OBJS_M += $(T1_DRV_OBJ_M)
+
 
 # EOF
--- a/src/type42/rules.mk
+++ b/src/type42/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 2002 by
+# Copyright 2002, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,25 +15,24 @@
 
 # Type42 driver directory
 #
-T42_DIR  := $(SRC_)type42
-T42_DIR_ := $(T42_DIR)$(SEP)
+T42_DIR := $(SRC_DIR)/type42
 
 
 # compilation flags for the driver
 #
-T42_COMPILE := $(FT_COMPILE) $I$(T42_DIR)
+T42_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(T42_DIR))
 
 
 # Type42 driver source
 #
-T42_DRV_SRC := $(T42_DIR_)t42objs.c  \
-               $(T42_DIR_)t42parse.c \
-               $(T42_DIR_)t42drivr.c
+T42_DRV_SRC := $(T42_DIR)/t42objs.c  \
+               $(T42_DIR)/t42parse.c \
+               $(T42_DIR)/t42drivr.c
 
 # Type42 driver headers
 #
 T42_DRV_H := $(T42_DRV_SRC:%.c=%.h) \
-             $(T42_DIR_)t42error.h
+             $(T42_DIR)/t42error.h
 
 
 # Type42 driver object(s)
@@ -41,24 +40,24 @@
 #   T42_DRV_OBJ_M is used during `multi' builds
 #   T42_DRV_OBJ_S is used during `single' builds
 #
-T42_DRV_OBJ_M := $(T42_DRV_SRC:$(T42_DIR_)%.c=$(OBJ_)%.$O)
-T42_DRV_OBJ_S := $(OBJ_)type42.$O
+T42_DRV_OBJ_M := $(T42_DRV_SRC:$(T42_DIR)/%.c=$(OBJ_DIR)/%.$O)
+T42_DRV_OBJ_S := $(OBJ_DIR)/type42.$O
 
 # Type42 driver source file for single build
 #
-T42_DRV_SRC_S := $(T42_DIR_)type42.c
+T42_DRV_SRC_S := $(T42_DIR)/type42.c
 
 
 # Type42 driver - single object
 #
 $(T42_DRV_OBJ_S): $(T42_DRV_SRC_S) $(T42_DRV_SRC) $(FREETYPE_H) $(T42_DRV_H)
-	$(T42_COMPILE) $T$@ $(T42_DRV_SRC_S)
+	$(T42_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(T42_DRV_SRC_S))
 
 
 # Type42 driver - multiple objects
 #
-$(OBJ_)%.$O: $(T42_DIR_)%.c $(FREETYPE_H) $(T42_DRV_H)
-	$(T42_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(T42_DIR)/%.c $(FREETYPE_H) $(T42_DRV_H)
+	$(T42_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
@@ -65,5 +64,6 @@
 #
 DRV_OBJS_S += $(T42_DRV_OBJ_S)
 DRV_OBJS_M += $(T42_DRV_OBJ_M)
+
 
 # EOF
--- a/src/winfonts/rules.mk
+++ b/src/winfonts/rules.mk
@@ -3,7 +3,7 @@
 #
 
 
-# Copyright 1996-2000, 2001 by
+# Copyright 1996-2000, 2001, 2003 by
 # David Turner, Robert Wilhelm, and Werner Lemberg.
 #
 # This file is part of the FreeType project, and may only be used, modified,
@@ -15,21 +15,20 @@
 
 # Windows driver directory
 #
-FNT_DIR  := $(SRC_)winfonts
-FNT_DIR_ := $(FNT_DIR)$(SEP)
+FNT_DIR := $(SRC_DIR)/winfonts
 
 
-FNT_COMPILE := $(FT_COMPILE) $I$(FNT_DIR)
+FNT_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(FNT_DIR))
 
 
 # Windows driver sources (i.e., C files)
 #
-FNT_DRV_SRC := $(FNT_DIR_)winfnt.c
+FNT_DRV_SRC := $(FNT_DIR)/winfnt.c
 
 # Windows driver headers
 #
 FNT_DRV_H := $(FNT_DRV_SRC:%.c=%.h) \
-             $(FNT_DIR_)fnterrs.h
+             $(FNT_DIR)/fnterrs.h
 
 
 # Windows driver object(s)
@@ -37,24 +36,24 @@
 #   FNT_DRV_OBJ_M is used during `multi' builds
 #   FNT_DRV_OBJ_S is used during `single' builds
 #
-FNT_DRV_OBJ_M := $(FNT_DRV_SRC:$(FNT_DIR_)%.c=$(OBJ_)%.$O)
-FNT_DRV_OBJ_S := $(OBJ_)winfnt.$O
+FNT_DRV_OBJ_M := $(FNT_DRV_SRC:$(FNT_DIR)/%.c=$(OBJ_DIR)/%.$O)
+FNT_DRV_OBJ_S := $(OBJ_DIR)/winfnt.$O
 
 # Windows driver source file for single build
 #
-FNT_DRV_SRC_S := $(FNT_DIR_)winfnt.c
+FNT_DRV_SRC_S := $(FNT_DIR)/winfnt.c
 
 
 # Windows driver - single object
 #
 $(FNT_DRV_OBJ_S): $(FNT_DRV_SRC_S) $(FNT_DRV_SRC) $(FREETYPE_H) $(FNT_DRV_H)
-	$(FNT_COMPILE) $T$@ $(FNT_DRV_SRC_S)
+	$(FNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(FNT_DRV_SRC_S))
 
 
 # Windows driver - multiple objects
 #
-$(OBJ_)%.$O: $(FNT_DIR_)%.c $(FREETYPE_H) $(FNT_DRV_H)
-	$(FNT_COMPILE) $T$@ $<
+$(OBJ_DIR)/%.$O: $(FNT_DIR)/%.c $(FREETYPE_H) $(FNT_DRV_H)
+	$(FNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<)
 
 
 # update main driver object lists
@@ -61,5 +60,6 @@
 #
 DRV_OBJS_S += $(FNT_DRV_OBJ_S)
 DRV_OBJS_M += $(FNT_DRV_OBJ_M)
+
 
 # EOF