summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-07-11 19:58:01 +0000
committernanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-07-11 19:58:01 +0000
commitb3fb32aa5df19b1051ced9aaf10a287e276f071a (patch)
tree78a7b91509905f444ca52d3a1aacdfd6159cfe6e
parentda19fc03fa649bb7734a24c1444ec10f0364921c (diff)
downloadATCD-b3fb32aa5df19b1051ced9aaf10a287e276f071a.tar.gz
ChangeLogTag:Tue Jul 11 14:47:48 2000 Chris Kohlhoff <chris@kohlhoff.com>
-rw-r--r--ChangeLog34
-rw-r--r--ChangeLogs/ChangeLog-02a34
-rw-r--r--ChangeLogs/ChangeLog-03a34
-rw-r--r--ace/Makefile.bor25
-rw-r--r--ace/OS.h6
-rw-r--r--ace/OS.i19
-rw-r--r--ace/OS_String.h6
-rw-r--r--ace/ace_wchar.h5
-rw-r--r--ace/config-win32-borland.h5
-rw-r--r--ace/config-win32-common.h5
-rw-r--r--include/makeinclude/build_core_exe.bor2
-rw-r--r--include/makeinclude/build_core_library.bor2
-rw-r--r--include/makeinclude/build_dll.bor15
-rw-r--r--include/makeinclude/build_exe.bor18
-rw-r--r--include/makeinclude/build_lib.bor17
-rw-r--r--include/makeinclude/clean.bor20
-rw-r--r--include/makeinclude/install.bor37
-rw-r--r--include/makeinclude/make_flags.bor7
-rw-r--r--include/makeinclude/outputdir.bor52
-rw-r--r--include/makeinclude/recurse.bor31
20 files changed, 339 insertions, 35 deletions
diff --git a/ChangeLog b/ChangeLog
index 922c133cecb..dce129aee27 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,37 @@
+Tue Jul 11 14:47:48 2000 Chris Kohlhoff <chris@kohlhoff.com>
+
+ * ace/config-win32-common.h:
+ Use default value of 0 for ACE_USE_RCSID on Win32 since RCS IDs
+ should probably not be required on this platform.
+
+ * include/makeinclude/build_core_exe.bor:
+ * include/makeinclude/build_core_library.bor:
+ * include/makeinclude/build_dll.bor:
+ * include/makeinclude/build_exe.bor:
+ * include/makeinclude/build_lib.bor:
+ * include/makeinclude/make_flags.bor:
+ * include/makeinclude/outputdir.bor:
+ * include/makeinclude/recurse.bor:
+ * include/makeinclude/install.bor:
+ * ace/Makefile.bor:
+ Added support for 'make install'.
+
+ * include/makeinclude/build_dll.bor:
+ * include/makeinclude/build_exe.bor:
+ * include/makeinclude/build_lib.bor:
+ * include/makeinclude/clean.bor:
+ Changed clean target so that files generated by the IDL compiler
+ are removed.
+
+ * ace/ace_wchar.h:
+ * ace/config-win32-borland.h:
+ * ace/OS.h:
+ * ace/OS_String.h:
+ * ace/OS.i:
+ Bring certain types and functions into the global namespace. This
+ is necessary so that the ACE headers will work the same regardless
+ of any standard C++ headers that may be included beforehand.
+
Tue Jul 11 14:21:51 2000 Steve Huston <shuston@riverace.com>
* ace/Log_Msg.cpp (ACE_Log_Msg::log): Added an ACE_Errno_Guard to
diff --git a/ChangeLogs/ChangeLog-02a b/ChangeLogs/ChangeLog-02a
index 922c133cecb..dce129aee27 100644
--- a/ChangeLogs/ChangeLog-02a
+++ b/ChangeLogs/ChangeLog-02a
@@ -1,3 +1,37 @@
+Tue Jul 11 14:47:48 2000 Chris Kohlhoff <chris@kohlhoff.com>
+
+ * ace/config-win32-common.h:
+ Use default value of 0 for ACE_USE_RCSID on Win32 since RCS IDs
+ should probably not be required on this platform.
+
+ * include/makeinclude/build_core_exe.bor:
+ * include/makeinclude/build_core_library.bor:
+ * include/makeinclude/build_dll.bor:
+ * include/makeinclude/build_exe.bor:
+ * include/makeinclude/build_lib.bor:
+ * include/makeinclude/make_flags.bor:
+ * include/makeinclude/outputdir.bor:
+ * include/makeinclude/recurse.bor:
+ * include/makeinclude/install.bor:
+ * ace/Makefile.bor:
+ Added support for 'make install'.
+
+ * include/makeinclude/build_dll.bor:
+ * include/makeinclude/build_exe.bor:
+ * include/makeinclude/build_lib.bor:
+ * include/makeinclude/clean.bor:
+ Changed clean target so that files generated by the IDL compiler
+ are removed.
+
+ * ace/ace_wchar.h:
+ * ace/config-win32-borland.h:
+ * ace/OS.h:
+ * ace/OS_String.h:
+ * ace/OS.i:
+ Bring certain types and functions into the global namespace. This
+ is necessary so that the ACE headers will work the same regardless
+ of any standard C++ headers that may be included beforehand.
+
Tue Jul 11 14:21:51 2000 Steve Huston <shuston@riverace.com>
* ace/Log_Msg.cpp (ACE_Log_Msg::log): Added an ACE_Errno_Guard to
diff --git a/ChangeLogs/ChangeLog-03a b/ChangeLogs/ChangeLog-03a
index 922c133cecb..dce129aee27 100644
--- a/ChangeLogs/ChangeLog-03a
+++ b/ChangeLogs/ChangeLog-03a
@@ -1,3 +1,37 @@
+Tue Jul 11 14:47:48 2000 Chris Kohlhoff <chris@kohlhoff.com>
+
+ * ace/config-win32-common.h:
+ Use default value of 0 for ACE_USE_RCSID on Win32 since RCS IDs
+ should probably not be required on this platform.
+
+ * include/makeinclude/build_core_exe.bor:
+ * include/makeinclude/build_core_library.bor:
+ * include/makeinclude/build_dll.bor:
+ * include/makeinclude/build_exe.bor:
+ * include/makeinclude/build_lib.bor:
+ * include/makeinclude/make_flags.bor:
+ * include/makeinclude/outputdir.bor:
+ * include/makeinclude/recurse.bor:
+ * include/makeinclude/install.bor:
+ * ace/Makefile.bor:
+ Added support for 'make install'.
+
+ * include/makeinclude/build_dll.bor:
+ * include/makeinclude/build_exe.bor:
+ * include/makeinclude/build_lib.bor:
+ * include/makeinclude/clean.bor:
+ Changed clean target so that files generated by the IDL compiler
+ are removed.
+
+ * ace/ace_wchar.h:
+ * ace/config-win32-borland.h:
+ * ace/OS.h:
+ * ace/OS_String.h:
+ * ace/OS.i:
+ Bring certain types and functions into the global namespace. This
+ is necessary so that the ACE headers will work the same regardless
+ of any standard C++ headers that may be included beforehand.
+
Tue Jul 11 14:21:51 2000 Steve Huston <shuston@riverace.com>
* ace/Log_Msg.cpp (ACE_Log_Msg::log): Added an ACE_Errno_Guard to
diff --git a/ace/Makefile.bor b/ace/Makefile.bor
index 96cfe53ddc6..22660bb16bc 100644
--- a/ace/Makefile.bor
+++ b/ace/Makefile.bor
@@ -197,4 +197,29 @@ CFLAGS = $(ACE_CFLAGS) -DACE_BUILD_DLL -DACE_OS_BUILD_DLL
CPPDIR = .
+INCDIR_NAME = ace
+INCLUDES = \
+ *.h *.i *.inl *_T.cpp \
+ Acceptor.cpp \
+ Asynch_Acceptor.cpp \
+ Auto_Ptr.cpp \
+ Connector.cpp \
+ CORBA_Ref.cpp \
+ Dynamic_Service.cpp \
+ Free_List.cpp \
+ Future.cpp \
+ Future_Set.cpp \
+ LOCK_SOCK_Acceptor.cpp \
+ Managed_Object.cpp \
+ Map_Manager.cpp \
+ Module.cpp \
+ RB_Tree.cpp \
+ Singleton.cpp \
+ Stream.cpp \
+ Stream_Modules.cpp \
+ Svc_Handler.cpp \
+ Timer_Queue_Adapters.cpp \
+ Typed_SV_Message.cpp \
+ Typed_SV_Message_Queue.cpp
+
!include <$(ACE_ROOT)\include\makeinclude\build_core_library.bor>
diff --git a/ace/OS.h b/ace/OS.h
index 38be3429b10..e7a4dc7f95e 100644
--- a/ace/OS.h
+++ b/ace/OS.h
@@ -1170,6 +1170,12 @@ extern "C" pthread_t pthread_self (void);
# endif /* VXWORKS */
# endif /* ACE_LACKS_SYSTIME_H */
+# if defined (ACE_USES_STD_NAMESPACE_FOR_STDC_LIB) && \
+ (ACE_USES_STD_NAMESPACE_FOR_STDC_LIB != 0)
+using std::time_t;
+using std::tm;
+# endif /* ACE_USES_STD_NAMESPACE_FOR_STDC_LIB */
+
# if !defined (ACE_HAS_POSIX_TIME) && !defined (ACE_PSOS)
// Definition per POSIX.
typedef struct timespec
diff --git a/ace/OS.i b/ace/OS.i
index a1814b88e31..1a7d6bc87a1 100644
--- a/ace/OS.i
+++ b/ace/OS.i
@@ -103,6 +103,25 @@ extern "C" void * _dlsym (void *, const char *);
# include /**/ <sysent.h>
#endif /* ACE_HAS_SYSENT_H_*/
+#if defined (ACE_USES_STD_NAMESPACE_FOR_STDC_LIB) && \
+ (ACE_USES_STD_NAMESPACE_FOR_STDC_LIB != 0)
+using std::bsearch;
+using std::qsort;
+# if defined (ACE_WIN32)
+using std::_tzset;
+using std::_timezone;
+# else
+using std::tzset;
+using std::timezone;
+# endif
+using std::difftime;
+using std::ctime;
+using std::localtime;
+using std::gmtime;
+using std::asctime;
+using std::strftime;
+#endif /* ACE_USES_STD_NAMESPACE_FOR_STDC_LIB */
+
#if defined (ACE_HAS_SVR4_GETTIMEOFDAY)
# if !defined (m88k) && !defined (SCO)
extern "C" int gettimeofday (struct timeval *tp, void * = 0);
diff --git a/ace/OS_String.h b/ace/OS_String.h
index 91e90c517b6..11087d94c36 100644
--- a/ace/OS_String.h
+++ b/ace/OS_String.h
@@ -29,6 +29,12 @@
#include "ace/OS_Export.h"
#include /**/ <stddef.h>
+#if defined (ACE_USES_STD_NAMESPACE_FOR_STDC_LIB) && \
+ (ACE_USES_STD_NAMESPACE_FOR_STDC_LIB != 0)
+using std::size_t;
+using std::wint_t;
+#endif /* ACE_USES_STD_NAMESPACE_FOR_STDC_LIB */
+
class ACE_OS_Export ACE_OS_String
// = TITLE
// This class is a wrapper for string operations
diff --git a/ace/ace_wchar.h b/ace/ace_wchar.h
index a75851d0297..2d37a6d453c 100644
--- a/ace/ace_wchar.h
+++ b/ace/ace_wchar.h
@@ -81,6 +81,11 @@ typedef char TCHAR;
# include /**/ <wchar.h>
#endif
+#if defined (ACE_USES_STD_NAMESPACE_FOR_STDC_LIB) && \
+ (ACE_USES_STD_NAMESPACE_FOR_STDC_LIB != 0)
+using std::size_t;
+#endif /* ACE_USES_STD_NAMESPACE_FOR_STDC_LIB */
+
// Define the unicode/wchar related macros correctly
diff --git a/ace/config-win32-borland.h b/ace/config-win32-borland.h
index 72563d92f0d..3d94c03b26e 100644
--- a/ace/config-win32-borland.h
+++ b/ace/config-win32-borland.h
@@ -66,12 +66,9 @@
# define ACE_UINT64_FORMAT_SPECIFIER ACE_TEXT ("%Lu")
# define ACE_INT64_FORMAT_SPECIFIER ACE_TEXT ("%Ld")
# define ACE_USES_STD_NAMESPACE_FOR_STDCPP_LIB 1
+# define ACE_USES_STD_NAMESPACE_FOR_STDC_LIB 1
# define ACE_WSTRING_HAS_USHORT_SUPPORT 1
-/* need to ensure these are included before <iomanip> */
-# include <time.h>
-# include <stdlib.h>
-
#endif /* defined(__BORLANDC__) */
#include "ace/post.h"
diff --git a/ace/config-win32-common.h b/ace/config-win32-common.h
index aa926c95d10..1ae6d04f108 100644
--- a/ace/config-win32-common.h
+++ b/ace/config-win32-common.h
@@ -148,6 +148,11 @@
#define ACE_HAS_GPERF
+// By default, don't include RCS Id strings in object code.
+#if !defined (ACE_USE_RCSID)
+# define ACE_USE_RCSID 0
+#endif /* ! ACE_USE_RCSID */
+
// ---------------- platform features or lack of them -------------
// Windows doesn't like 65536 ;-) If 65536 is specified, it is
diff --git a/include/makeinclude/build_core_exe.bor b/include/makeinclude/build_core_exe.bor
index 2fa7fdbac92..a39571e42ac 100644
--- a/include/makeinclude/build_core_exe.bor
+++ b/include/makeinclude/build_core_exe.bor
@@ -6,4 +6,6 @@
BINDIR = $(CORE_BINDIR)
+INSTALL_THIS_TARGET = 1
+
!include <$(ACE_ROOT)\include\makeinclude\build_exe.bor>
diff --git a/include/makeinclude/build_core_library.bor b/include/makeinclude/build_core_library.bor
index c1513abb0c3..8196c247def 100644
--- a/include/makeinclude/build_core_library.bor
+++ b/include/makeinclude/build_core_library.bor
@@ -6,4 +6,6 @@
BINDIR = $(CORE_BINDIR)
+INSTALL_THIS_TARGET = 1
+
!include <$(ACE_ROOT)\include\makeinclude\build_library.bor>
diff --git a/include/makeinclude/build_dll.bor b/include/makeinclude/build_dll.bor
index 1429ca8c2b1..dbdaaa474e0 100644
--- a/include/makeinclude/build_dll.bor
+++ b/include/makeinclude/build_dll.bor
@@ -1,6 +1,6 @@
#
# Rules for linking a dll
-#
+#
# Inputs:
# ~~~~~~~
# NAME - undecorated name of target
@@ -31,13 +31,11 @@ $(TARGET): $(OBJFILES) $(RESOURCE)
@del $(TARGET:.dll=.tds)
!endif
-clean:
- @copy &&!
-@del $(OBJFILES:.obj=.obj ^
-@del ) $(RESOURCE)
-! clean_$(NAME)~.bat 1> NUL
- -@clean_$(NAME)~.bat 2> NUL
- @del clean_$(NAME)~.bat
+!include <$(ACE_ROOT)\include\makeinclude\clean.bor>
+
+INSTALL_TYPES = dll lib includes
+
+!include <$(ACE_ROOT)\include\makeinclude\install.bor>
!ifdef CPPDIR
.path.cpp = $(CPPDIR)
@@ -60,4 +58,3 @@ clean:
$(RC) -fo$@ $<
.autodepend
-
diff --git a/include/makeinclude/build_exe.bor b/include/makeinclude/build_exe.bor
index f02093ce692..8633efc9b98 100644
--- a/include/makeinclude/build_exe.bor
+++ b/include/makeinclude/build_exe.bor
@@ -1,8 +1,8 @@
-#
+#
# Rules for building an executable
#
# Inputs:
-# ~~~~~~~
+# ~~~~~~~
# NAME - undecorated name of target
# CFLAGS - extra compiler flags for building target
# CPPDIR - list of directories containing source files
@@ -32,13 +32,11 @@ $(TARGET): $(OBJFILES) $(RESOURCE)
@del $(TARGET:.exe=.tds)
!endif
-clean:
- @copy &&!
-@del $(OBJFILES:.obj=.obj ^
-@del ) $(RESOURCE)
-! clean_$(NAME)~.bat 1> NUL
- -@clean_$(NAME)~.bat 2> NUL
- @del clean_$(NAME)~.bat
+!include <$(ACE_ROOT)\include\makeinclude\clean.bor>
+
+INSTALL_TYPES = exe
+
+!include <$(ACE_ROOT)\include\makeinclude\install.bor>
!ifdef CPPDIR
.path.cpp = $(CPPDIR)
@@ -61,5 +59,3 @@ clean:
$(RC) -fo$@ $<
.autodepend
-
-
diff --git a/include/makeinclude/build_lib.bor b/include/makeinclude/build_lib.bor
index bc42dafdacd..abd969c7563 100644
--- a/include/makeinclude/build_lib.bor
+++ b/include/makeinclude/build_lib.bor
@@ -1,6 +1,6 @@
#
# Rules for building a static library
-#
+#
# Inputs:
# ~~~~~~~
# NAME - undecorated name of target
@@ -25,13 +25,11 @@ $(TARGET): $(OBJFILES)
+-)
!
-clean:
- @copy &&!
-@del $(OBJFILES:.obj=.obj ^
-@del )
-! clean_$(NAME)~.bat 1> NUL
- -@clean_$(NAME)~.bat 2> NUL
- @del clean_$(NAME)~.bat
+!include <$(ACE_ROOT)\include\makeinclude\clean.bor>
+
+INSTALL_TYPES = lib includes
+
+!include <$(ACE_ROOT)\include\makeinclude\install.bor>
!ifdef CPPDIR
.path.cpp = $(CPPDIR)
@@ -42,6 +40,5 @@ clean:
.cpp.obj:
@$(MAKE_OBJDIR)
$(CC) $(COMMON_CFLAGS) $(LIB_CFLAGS) $(CFLAGS) -c -n$(@D) $<
-
-.autodepend
+.autodepend
diff --git a/include/makeinclude/clean.bor b/include/makeinclude/clean.bor
new file mode 100644
index 00000000000..d267cf2b3c3
--- /dev/null
+++ b/include/makeinclude/clean.bor
@@ -0,0 +1,20 @@
+#
+# Rules for cleaning up intermediate files
+#
+
+clean:
+ @copy &&!
+@del $(OBJFILES:.obj=.obj ^
+@del ) $(IDLFILES:.idl=C.cpp ^
+@del ) $(IDLFILES:.idl=C.h ^
+@del ) $(IDLFILES:.idl=C.i ^
+@del ) $(IDLFILES:.idl=S.cpp ^
+@del ) $(IDLFILES:.idl=S.h ^
+@del ) $(IDLFILES:.idl=S.i ^
+@del ) $(IDLFILES:.idl=S_T.cpp ^
+@del ) $(IDLFILES:.idl=S_T.h ^
+@del ) $(IDLFILES:.idl=S_T.i ^
+@del ) $(RESOURCE)
+! clean_$(NAME)~.bat 1> NUL
+ -@clean_$(NAME)~.bat 2> NUL
+ @del clean_$(NAME)~.bat
diff --git a/include/makeinclude/install.bor b/include/makeinclude/install.bor
new file mode 100644
index 00000000000..54866eef6bd
--- /dev/null
+++ b/include/makeinclude/install.bor
@@ -0,0 +1,37 @@
+#
+# Rules for installing files
+#
+
+# This ugliness is to remove extra spaces from between the items in the list.
+INSTALL_TYPES_1 = $(INSTALL_TYPES) $(BLANK_SPACE)
+INSTALL_TYPES_2 = $(INSTALL_TYPES_1: =%)
+INSTALL_TYPES_3 = $(INSTALL_TYPES_2:%%=%)
+INSTALL_TYPES_4 = $(INSTALL_TYPES_3:%%=%)
+INSTALL_TYPES_5 = $(INSTALL_TYPES_4:%=_install )
+
+!ifdef INSTALL_THIS_TARGET
+install: $(INSTALL_TYPES_5)
+!else
+install:
+!endif
+ @echo Do Nothing 1> NUL
+
+exe_install: $(TARGET)
+ @$(MAKE_INSTALL_EXEDIR)
+ -&copy "$**" $(INSTALL_EXEDIR) 1> NUL
+
+!ifdef DEBUG
+dll_install: $(TARGET) $(TARGET:.dll=.tds)
+!else
+dll_install: $(TARGET)
+!endif
+ @$(MAKE_INSTALL_DLLDIR)
+ -&copy "$**" $(INSTALL_DLLDIR) 1> NUL
+
+lib_install: $(TARGET:.dll=.lib)
+ @$(MAKE_INSTALL_LIBDIR)
+ -&copy "$**" $(INSTALL_LIBDIR) 1> NUL
+
+includes_install: $(INCLUDES)
+ @$(MAKE_INSTALL_INCDIR)
+ -&copy "$**" $(INSTALL_INCDIR) 1> NUL
diff --git a/include/makeinclude/make_flags.bor b/include/makeinclude/make_flags.bor
index 75827afb063..55b19d3ecd3 100644
--- a/include/makeinclude/make_flags.bor
+++ b/include/makeinclude/make_flags.bor
@@ -18,4 +18,9 @@ PASCAL_FLAG = -DPASCAL
CODEGUARD_FLAG = -DCODEGUARD
!endif
-MAKE_FLAGS = $(DEBUG_FLAG) $(STATIC_FLAG) $(PASCAL_FLAG) $(CODEGUARD_FLAG)
+!ifdef INSTALL_DIR
+INSTALL_DIR_FLAG = -DINSTALL_DIR=$(INSTALL_DIR)
+!endif
+
+MAKE_FLAGS = $(DEBUG_FLAG) $(STATIC_FLAG) $(PASCAL_FLAG) \
+ $(CODEGUARD_FLAG) $(INSTALL_DIR_FLAG)
diff --git a/include/makeinclude/outputdir.bor b/include/makeinclude/outputdir.bor
index 5bf73ab3ebf..c258ce23dec 100644
--- a/include/makeinclude/outputdir.bor
+++ b/include/makeinclude/outputdir.bor
@@ -68,3 +68,55 @@ MAKE_OBJDIR=$(MKDIR) "$(OBJDIR)"
# Use default mkdir provided by command shell. May not work on Win9x.
MAKE_OBJDIR=if not exist "$(OBJDIR)" mkdir "$(OBJDIR)"
!endif
+
+!ifndef INSTALL_EXEDIR
+!ifndef STATIC
+!ifndef DEBUG
+INSTALL_EXEDIR=$(INSTALL_DIR)\bin
+!else
+INSTALL_EXEDIR=$(INSTALL_DIR)\bin\$(STATIC_DIR)\$(DEBUG_DIR)
+!endif
+!else
+INSTALL_EXEDIR=$(INSTALL_DIR)\bin\$(STATIC_DIR)\$(DEBUG_DIR)
+!endif
+!endif
+
+!ifdef MKDIR
+MAKE_INSTALL_EXEDIR=$(MKDIR) "$(INSTALL_EXEDIR)"
+!else
+# Use default mkdir provided by command shell. May not work on Win9x.
+MAKE_INSTALL_EXEDIR=if not exist "$(INSTALL_EXEDIR)" mkdir "$(INSTALL_EXEDIR)"
+!endif
+
+!ifndef INSTALL_DLLDIR
+INSTALL_DLLDIR=$(INSTALL_DIR)\bin
+!endif
+
+!ifdef MKDIR
+MAKE_INSTALL_DLLDIR=$(MKDIR) "$(INSTALL_DLLDIR)"
+!else
+# Use default mkdir provided by command shell. May not work on Win9x.
+MAKE_INSTALL_DLLDIR=if not exist "$(INSTALL_DLLDIR)" mkdir "$(INSTALL_DLLDIR)"
+!endif
+
+!ifndef INSTALL_LIBDIR
+INSTALL_LIBDIR=$(INSTALL_DIR)\lib
+!endif
+
+!ifdef MKDIR
+MAKE_INSTALL_LIBDIR=$(MKDIR) "$(INSTALL_LIBDIR)"
+!else
+# Use default mkdir provided by command shell. May not work on Win9x.
+MAKE_INSTALL_LIBDIR=if not exist "$(INSTALL_LIBDIR)" mkdir "$(INSTALL_LIBDIR)"
+!endif
+
+!ifndef INSTALL_INCDIR
+INSTALL_INCDIR=$(INSTALL_DIR)\include\$(INCDIR_NAME)
+!endif
+
+!ifdef MKDIR
+MAKE_INSTALL_INCDIR=$(MKDIR) "$(INSTALL_INCDIR)"
+!else
+# Use default mkdir provided by command shell. May not work on Win9x.
+MAKE_INSTALL_INCDIR=if not exist "$(INSTALL_INCDIR)" mkdir "$(INSTALL_INCDIR)"
+!endif
diff --git a/include/makeinclude/recurse.bor b/include/makeinclude/recurse.bor
index 0ba6f4443cc..969403d7dd4 100644
--- a/include/makeinclude/recurse.bor
+++ b/include/makeinclude/recurse.bor
@@ -42,6 +42,25 @@ all:
$(MAKE) -$(MAKEFLAGS) $(MAKE_FLAGS) -fMakefile.bor clean
!
+# This ugliness is to remove extra spaces from between the items in the list.
+DIRS_INSTALL_1 = $(DIRS) $(BLANK_SPACE)
+DIRS_INSTALL_2 = $(DIRS_INSTALL_1: =%)
+DIRS_INSTALL_3 = $(DIRS_INSTALL_2:%%=%)
+DIRS_INSTALL_4 = $(DIRS_INSTALL_3:%%=%)
+DIRS_INSTALL = $(DIRS_INSTALL_4:%=.Install )
+
+install: $(DIRS_INSTALL)
+
+# We use an extra level of make recursion to ensure the current directory is
+# automatically restored when the sub-directory is finished.
+$(DIRS_INSTALL):
+ @echo Installing directory $(<:.Install=)
+ @$(MAKE) -$(MAKEFLAGS) $(MAKE_FLAGS) -f&&!
+all:
+ @cd $(<:.Install=)
+ $(MAKE) -$(MAKEFLAGS) $(MAKE_FLAGS) -fMakefile.bor install
+!
+
!endif
!ifdef MAKEFILES
@@ -70,4 +89,16 @@ clean: $(MAKEFILES_CLEAN)
$(MAKEFILES_CLEAN):
$(MAKE) -$(MAKEFLAGS) $(MAKE_FLAGS) -f$(<:.Clean=) clean
+# This ugliness is to remove extra spaces from between the items in the list.
+MAKEFILES_INSTALL_1 = $(MAKEFILES) $(BLANK_SPACE)
+MAKEFILES_INSTALL_2 = $(MAKEFILES_INSTALL_1: =%)
+MAKEFILES_INSTALL_3 = $(MAKEFILES_INSTALL_2:%%=%)
+MAKEFILES_INSTALL_4 = $(MAKEFILES_INSTALL_3:%%=%)
+MAKEFILES_INSTALL = $(MAKEFILES_INSTALL_4:%=.Install )
+
+install: $(MAKEFILES_INSTALL)
+
+$(MAKEFILES_INSTALL):
+ $(MAKE) -$(MAKEFLAGS) $(MAKE_FLAGS) -f$(<:.Install=) install
+
!endif