summaryrefslogtreecommitdiffstats
path: root/private/rpc/wx86rpc
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/rpc/wx86rpc
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/rpc/wx86rpc')
-rw-r--r--private/rpc/wx86rpc/bldbreak.txt28
-rw-r--r--private/rpc/wx86rpc/dirs28
-rw-r--r--private/rpc/wx86rpc/ndrdll/chkheap.cxx7
-rw-r--r--private/rpc/wx86rpc/ndrdll/makefile6
-rw-r--r--private/rpc/wx86rpc/ndrdll/makefile.inc11
-rw-r--r--private/rpc/wx86rpc/ndrdll/sources72
-rw-r--r--private/rpc/wx86rpc/ndrdll/wxndrdll.rc17
-rw-r--r--private/rpc/wx86rpc/rtdll/makefile6
-rw-r--r--private/rpc/wx86rpc/rtdll/makefile.inc5
-rw-r--r--private/rpc/wx86rpc/rtdll/sources60
-rw-r--r--private/rpc/wx86rpc/rtdll/wxrtdll.rc17
11 files changed, 257 insertions, 0 deletions
diff --git a/private/rpc/wx86rpc/bldbreak.txt b/private/rpc/wx86rpc/bldbreak.txt
new file mode 100644
index 000000000..dd55e72f5
--- /dev/null
+++ b/private/rpc/wx86rpc/bldbreak.txt
@@ -0,0 +1,28 @@
+ The wx86rpc directory is designed to build wxrtdll.dll, wxndrdll.dll and
+wxndr20.lib into \nt\public\sdk\lib\i386. These files are needed so that the
+Wx86 project can properly build thunks for rpcrt4.dll. If a build break does
+occur in one of these directories then a build break will occur when the Wx86
+thunks are built.
+
+ The Wx86 rpc thunks are designed so that most of the rpcrt4 apis are
+thunked to the native implementation in rpcrt4.dll with the exception of
+most of the Ndr routines and the Ole proxy/stub code for IRpcStubBuffer and
+IRpcProxyBuffer which are linked into the thunk dll and executed in x86 code.
+Thus any functions that the emulated x86 code calls into the runtime must be
+exported from the runtime and not rely on data variables in the runtime.
+
+ \nt\private\rpc\runtime\rtdll\rpcrt4.src replaces rpcrt4.def and defines
+which exported apis are thunked and which are emulated. When adding a new api
+it is important to place it within the proper section. Under the EXPORT_RT
+section are all functions that are thunked while under EXPORT_NDR are all
+functions that are emulated.
+
+ It is also important to contain all functionality for the emulated portion
+of code in a set of files that does not have any functions that are thunked.
+The wxndrdll build process will copy the standard rpcndr20.lib and remove
+the functions from rpcssm.obj to create wxndr20.lib. Thus it is important that
+the emulated code does not need any variables from rpcssm.cxx and if it
+calls any functions in rpcssm.cxx then they will need to be exported from
+rpcrt4.
+
+ Also note that nothing should be built under wx86rpc on risc platforms. \ No newline at end of file
diff --git a/private/rpc/wx86rpc/dirs b/private/rpc/wx86rpc/dirs
new file mode 100644
index 000000000..27d33276e
--- /dev/null
+++ b/private/rpc/wx86rpc/dirs
@@ -0,0 +1,28 @@
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ dirs.
+
+Abstract:
+
+ This file specifies the subdirectories of the current directory that
+ contain component makefiles.
+
+
+Author:
+
+ Steve Wood (stevewo) 17-Apr-1990
+
+NOTE: Commented description of this file is in \nt\bak\bin\dirs.tpl
+
+!ENDIF
+
+DIRS= \
+ rtdll \
+ ndrdll
+
+OPTIONAL_DIRS=
+
diff --git a/private/rpc/wx86rpc/ndrdll/chkheap.cxx b/private/rpc/wx86rpc/ndrdll/chkheap.cxx
new file mode 100644
index 000000000..c4bc6d832
--- /dev/null
+++ b/private/rpc/wx86rpc/ndrdll/chkheap.cxx
@@ -0,0 +1,7 @@
+extern "C" int
+RpcpCheckHeap (
+ void
+ )
+{
+ return 0;
+}
diff --git a/private/rpc/wx86rpc/ndrdll/makefile b/private/rpc/wx86rpc/ndrdll/makefile
new file mode 100644
index 000000000..6ee4f43fa
--- /dev/null
+++ b/private/rpc/wx86rpc/ndrdll/makefile
@@ -0,0 +1,6 @@
+#
+# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
+# file to this component. This file merely indirects to the real make file
+# that is shared by all the components of NT OS/2
+#
+!INCLUDE $(NTMAKEENV)\makefile.def
diff --git a/private/rpc/wx86rpc/ndrdll/makefile.inc b/private/rpc/wx86rpc/ndrdll/makefile.inc
new file mode 100644
index 000000000..2d0a0fedc
--- /dev/null
+++ b/private/rpc/wx86rpc/ndrdll/makefile.inc
@@ -0,0 +1,11 @@
+clean:
+ del wx86ndr.src
+
+full: wx86ndr.src
+
+#
+# copy the rpcrt4.src file so that all of the EXPORT_RT functions will be
+# preprocessed out
+wx86ndr.src: ..\..\runtime\rtdll\rpcrt4.src
+ copy ..\..\runtime\rtdll\rpcrt4.src wx86ndr.src
+
diff --git a/private/rpc/wx86rpc/ndrdll/sources b/private/rpc/wx86rpc/ndrdll/sources
new file mode 100644
index 000000000..4d314363e
--- /dev/null
+++ b/private/rpc/wx86rpc/ndrdll/sources
@@ -0,0 +1,72 @@
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ sources.
+
+Abstract:
+
+ This file specifies the target component being built and the list of
+ sources files needed to build that component. Also specifies optional
+ compiler switches and libraries that are unique for the component being
+ built.
+
+
+Author:
+
+ Steve Wood (stevewo) 12-Apr-1989
+
+
+Revision History:
+
+!ENDIF
+#
+# The TARGETNAME variable is defined by the developer. It is the name of
+# the target (component) that is being built by this makefile. It
+# should NOT include any path or file extension information.
+#
+TARGETNAME=wxndrdll
+
+#
+# The TARGETPATH and TARGETTYPE varialbes are defined by the developer.
+# The first specifies where the target is to be build. The second specifies
+# the type of target (either PROGRAM, DYNLINK or LIBRARY)
+#
+
+TARGETPATH=$(BASEDIR)\public\sdk\lib
+TARGETTYPE=DYNLINK
+
+# We can base this anywhere since the dll is never used. It is only built to
+# ensure that any routines needed by ndr are in fact exported from rpcrt4.dll
+DLLBASE=0x20000000
+
+TARGETLIBS= \
+ $(BASEDIR)\public\sdk\lib\*\kernel32.lib \
+ $(BASEDIR)\public\sdk\lib\*\wxrtdll.lib \
+ $(BASEDIR)\public\sdk\lib\*\advapi32.lib
+
+!if "$(MIDL_NDR_ENGINE_DIR)" == ""
+MIDL_NDR_ENGINE_DIR=$(BASEDIR)\public\sdk\lib
+!endif
+
+LINKLIBS=$(BASEDIR)\public\sdk\lib\*\wxndr20.lib
+
+C_DEFINES=$(C_DEFINES) -DEXPORT_NDR
+
+DLLDEF=obj\*\wx86ndr.def
+
+!IF $(386)
+NTTARGETFILE1=full
+!ENDIF
+
+USE_CRTDLL=1
+
+SOURCES=
+
+i386_sources=chkheap.cxx \
+ wxndrdll.rc
+
+
+
diff --git a/private/rpc/wx86rpc/ndrdll/wxndrdll.rc b/private/rpc/wx86rpc/ndrdll/wxndrdll.rc
new file mode 100644
index 000000000..0fa423c2d
--- /dev/null
+++ b/private/rpc/wx86rpc/ndrdll/wxndrdll.rc
@@ -0,0 +1,17 @@
+//---------------------------------------------------------------------------
+// whuser32.rc
+//
+// Copyright (c) Microsoft Corporation, 1996-
+//---------------------------------------------------------------------------
+
+
+#include <windows.h>
+#include <ntverp.h>
+
+#define VER_FILETYPE VFT_DLL
+#define VER_FILESUBTYPE VFT_UNKNOWN
+#define VER_FILEDESCRIPTION_STR ""
+#define VER_INTERNALNAME_STR "wxndrdll"
+#define VER_ORIGINALFILENAME_STR "wxndrdll.dll"
+
+#include "common.ver"
diff --git a/private/rpc/wx86rpc/rtdll/makefile b/private/rpc/wx86rpc/rtdll/makefile
new file mode 100644
index 000000000..6ee4f43fa
--- /dev/null
+++ b/private/rpc/wx86rpc/rtdll/makefile
@@ -0,0 +1,6 @@
+#
+# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
+# file to this component. This file merely indirects to the real make file
+# that is shared by all the components of NT OS/2
+#
+!INCLUDE $(NTMAKEENV)\makefile.def
diff --git a/private/rpc/wx86rpc/rtdll/makefile.inc b/private/rpc/wx86rpc/rtdll/makefile.inc
new file mode 100644
index 000000000..f16ba3218
--- /dev/null
+++ b/private/rpc/wx86rpc/rtdll/makefile.inc
@@ -0,0 +1,5 @@
+clean:
+ del wxrtdll.src
+
+wxrtdll.src: ..\..\runtime\rtdll\rpcrt4.src
+ copy ..\..\runtime\rtdll\rpcrt4.src wxrtdll.src
diff --git a/private/rpc/wx86rpc/rtdll/sources b/private/rpc/wx86rpc/rtdll/sources
new file mode 100644
index 000000000..828a4a2b0
--- /dev/null
+++ b/private/rpc/wx86rpc/rtdll/sources
@@ -0,0 +1,60 @@
+!IF 0
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ sources.
+
+Abstract:
+
+ This file specifies the target component being built and the list of
+ sources files needed to build that component. Also specifies optional
+ compiler switches and libraries that are unique for the component being
+ built.
+
+
+Revision History:
+
+!ENDIF
+
+TARGETNAME=wxrtdll
+TARGETPATH=$(BASEDIR)\public\sdk\lib
+TARGETTYPE=DYNLINK
+
+DLLENTRY=InitializeDLL
+TARGETLIBS= \
+ $(BASEDIR)\public\sdk\lib\*\kernel32.lib \
+ $(BASEDIR)\public\sdk\lib\*\advapi32.lib
+
+!if "$(MIDL_NDR_ENGINE_DIR)" == ""
+MIDL_NDR_ENGINE_DIR=$(BASEDIR)\public\sdk\lib
+!endif
+
+LINKLIBS=..\..\runtime\rtdll\*\rpcmtrt.lib \
+ $(BASEDIR)\public\sdk\lib\*\rpcndrp.lib \
+ $(BASEDIR)\public\sdk\lib\*\rpcndr.lib \
+ $(BASEDIR)\private\rpc\runtime\rtifs\*\rtifs.lib \
+ $(MIDL_NDR_ENGINE_DIR)\*\rpcndr20.lib
+
+
+INCLUDES=..\..\runtime\mtrt;$(BASEDIR)\private\inc;..\..\runtime\rtifs\obj
+
+C_DEFINES=$(C_DEFINES) -DEXPORT_RT
+
+# it really doesn't matter where the dll is based since it is never used. It
+# is only built so that anything imported from ndr by rt can be discovered
+DLLBASE=0x20000000
+
+DLLDEF=obj\*\wxrtdll.def
+
+USE_NTDLL=1
+
+SOURCES=
+
+i386_sources = \
+ wxrtdll.rc
+
+!IF $(386)
+NTTARGETFILE0=wxrtdll.src
+!ENDIF
diff --git a/private/rpc/wx86rpc/rtdll/wxrtdll.rc b/private/rpc/wx86rpc/rtdll/wxrtdll.rc
new file mode 100644
index 000000000..0fa423c2d
--- /dev/null
+++ b/private/rpc/wx86rpc/rtdll/wxrtdll.rc
@@ -0,0 +1,17 @@
+//---------------------------------------------------------------------------
+// whuser32.rc
+//
+// Copyright (c) Microsoft Corporation, 1996-
+//---------------------------------------------------------------------------
+
+
+#include <windows.h>
+#include <ntverp.h>
+
+#define VER_FILETYPE VFT_DLL
+#define VER_FILESUBTYPE VFT_UNKNOWN
+#define VER_FILEDESCRIPTION_STR ""
+#define VER_INTERNALNAME_STR "wxndrdll"
+#define VER_ORIGINALFILENAME_STR "wxndrdll.dll"
+
+#include "common.ver"