From 8c69def99480bf082931cb29bc304a6c67d243d1 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Thu, 18 Nov 2004 16:11:50 +0000 Subject: [PATCH] Updated the Windows spawner DLL to build using MinGW gcc. --- .../library/Makefile | 35 ++++++++++++++++++ .../library/Win32ProcessEx.c | 21 +++++------ .../library/iostream.c | 8 ++-- .../library/spawner.c | 2 +- .../os/win32/x86/spawner.dll | Bin 23552 -> 37157 bytes 5 files changed, 50 insertions(+), 16 deletions(-) create mode 100644 core/org.eclipse.cdt.core.win32/library/Makefile diff --git a/core/org.eclipse.cdt.core.win32/library/Makefile b/core/org.eclipse.cdt.core.win32/library/Makefile new file mode 100644 index 00000000000..017913780f8 --- /dev/null +++ b/core/org.eclipse.cdt.core.win32/library/Makefile @@ -0,0 +1,35 @@ +# makefile for libspawner.so + +ifeq ($(JAVA_HOME),) +$(warning JAVA_HOME not set in environment) +endif + +# Defaults which can be overridden. +OS = win32 +ARCH = x86 + +JDK_INCLUDES= $(JAVA_HOME)/include +JDK_OS_INCLUDES= $(JAVA_HOME)/include/$(OS) + +CC=gcc +CPPFLAGS = -I. -I$(JDK_INCLUDES) -I$(JDK_OS_INCLUDES) +CFLAGS += -D_UNICODE -Dwchar_t=short + +INSTALL_DIR = ../os/$(OS)/$(ARCH) + +LIB_NAME_SPAWNER = spawner.dll +LIB_NAME_FULL_SPAWNER = $(INSTALL_DIR)/spawner.dll +OBJS_SPAWNER=StdAfx.o Win32ProcessEx.o iostream.o raise.o spawner.o + +OBJS = $(OBJS_SPAWNER) + +all: $(LIB_NAME_FULL_SPAWNER) + +rebuild: clean all + +$(LIB_NAME_FULL_SPAWNER) : $(OBJS_SPAWNER) + mkdir -p $(INSTALL_DIR) + $(CC) -Wl,--kill-at -g -shared -o $(LIB_NAME_FULL_SPAWNER) $(OBJS_SPAWNER) + +clean : + $(RM) $(OBJS_SPAWNER) $(LIB_NAME_FULL_SPAWNER) diff --git a/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c b/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c index c7e30b2bbd5..af3d1f2a95d 100644 --- a/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c +++ b/core/org.eclipse.cdt.core.win32/library/Win32ProcessEx.c @@ -19,7 +19,6 @@ #include #include "Spawner.h" - #include "jni.h" #include "io.h" @@ -150,9 +149,9 @@ JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0 // Create pipe names EnterCriticalSection(&cs); - _stprintf(inPipeName, _T("\\\\.\\pipe\\stdin%08i%010i"), pid, nCounter); - _stprintf(outPipeName, _T("\\\\.\\pipe\\stdout%08i%010i"), pid, nCounter); - _stprintf(errPipeName, _T("\\\\.\\pipe\\stderr%08i%010i"), pid, nCounter); + _stprintf(inPipeName, L"\\\\.\\pipe\\stdin%08i%010i", pid, nCounter); + _stprintf(outPipeName, L"\\\\.\\pipe\\stdout%08i%010i", pid, nCounter); + _stprintf(errPipeName, L"\\\\.\\pipe\\stderr%08i%010i", pid, nCounter); nLocalCounter = nCounter; ++nCounter; LeaveCriticalSection(&cs); @@ -192,9 +191,9 @@ JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0 } // Construct starter's command line - _stprintf(eventBreakName, _T("SABreak%p"), pCurProcInfo); - _stprintf(eventWaitName, _T("SAWait%p"), pCurProcInfo); - _stprintf(eventTerminateName, _T("SATerm%p"), pCurProcInfo); + _stprintf(eventBreakName, L"SABreak%p", pCurProcInfo); + _stprintf(eventWaitName, L"SAWait%p", pCurProcInfo); + _stprintf(eventTerminateName, L"SATerm%p", pCurProcInfo); pCurProcInfo -> eventBreak = CreateEventW(NULL, TRUE, FALSE, eventBreakName); ResetEvent(pCurProcInfo -> eventBreak); pCurProcInfo -> eventWait = CreateEventW(NULL, TRUE, FALSE, eventWaitName); @@ -202,7 +201,7 @@ JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0 pCurProcInfo -> eventTerminate = CreateEventW(NULL, TRUE, FALSE, eventTerminateName); ResetEvent(pCurProcInfo -> eventTerminate); - nPos = _stprintf(szCmdLine, _T("%sstarter.exe %i %i %s %s %s "), path, pid, nLocalCounter, eventBreakName, eventWaitName, eventTerminateName); + nPos = _stprintf(szCmdLine, L"%sstarter.exe %i %i %s %s %s ", path, pid, nLocalCounter, eventBreakName, eventWaitName, eventTerminateName); // Prepare command line for(i = 0; i < nCmdTokens; ++i) @@ -263,7 +262,7 @@ JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0 _stprintf(buffer, _T("%s\n"), str); OutputDebugStringW(buffer); #endif - _tcsnccpy(szEnvBlock + nPos, str, len); + _tcsncpy(szEnvBlock + nPos, str, len); nPos += len; szEnvBlock[nPos] = _T('\0'); ++nPos; @@ -386,7 +385,7 @@ JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec0 file_handles[0] = (int)stdHandles[0]; file_handles[1] = (int)stdHandles[1]; file_handles[2] = (int)stdHandles[2]; - (*env) -> SetIntArrayRegion(env, channels, 0, 3, file_handles); + (*env) -> SetIntArrayRegion(env, channels, 0, 3, (jint *)file_handles); #ifdef DEBUG_MONITOR OutputDebugStringW(_T("Process started\n")); #endif @@ -484,7 +483,7 @@ JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_Spawner_exec1 return 0; } } - _tcsnccpy(szEnvBlock + nPos, str, len); + _tcsncpy(szEnvBlock + nPos, str, len); nPos += len; szEnvBlock[nPos] = _T('\0'); ++nPos; diff --git a/core/org.eclipse.cdt.core.win32/library/iostream.c b/core/org.eclipse.cdt.core.win32/library/iostream.c index 01bc078e3c0..241e16bc754 100644 --- a/core/org.eclipse.cdt.core.win32/library/iostream.c +++ b/core/org.eclipse.cdt.core.win32/library/iostream.c @@ -79,8 +79,8 @@ JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerInputStream_rea while(len > nBuffOffset) { - int nNumberOfBytesToRead = min(len - nBuffOffset, BUFF_SIZE); - int nNumberOfBytesRead; + DWORD nNumberOfBytesToRead = min(len - nBuffOffset, BUFF_SIZE); + DWORD nNumberOfBytesRead; if(0 == ReadFile((HANDLE)fd, tmpBuf, nNumberOfBytesToRead, &nNumberOfBytesRead, &overlapped )) { int err = GetLastError(); @@ -182,8 +182,8 @@ JNIEXPORT jint JNICALL Java_org_eclipse_cdt_utils_spawner_SpawnerOutputStream_wr while(len > nBuffOffset) { - int nNumberOfBytesToWrite = min(len - nBuffOffset, BUFF_SIZE); - int nNumberOfBytesWritten; + DWORD nNumberOfBytesToWrite = min(len - nBuffOffset, BUFF_SIZE); + DWORD nNumberOfBytesWritten; (*env) -> GetByteArrayRegion(env, buf, nBuffOffset, nNumberOfBytesToWrite, tmpBuf); if(0 == WriteFile((HANDLE)fd, tmpBuf, nNumberOfBytesToWrite, &nNumberOfBytesWritten, NULL)) { diff --git a/core/org.eclipse.cdt.core.win32/library/spawner.c b/core/org.eclipse.cdt.core.win32/library/spawner.c index 6ada9da075e..d9b0f2748be 100644 --- a/core/org.eclipse.cdt.core.win32/library/spawner.c +++ b/core/org.eclipse.cdt.core.win32/library/spawner.c @@ -39,7 +39,7 @@ BOOL APIENTRY DllMain( HANDLE hModule, if(NULL != p) *(p + 1) = _T('\0'); else - _tcscat(path, _T("\\")); + _tcscat(path, L"\\"); } break; case DLL_THREAD_ATTACH: diff --git a/core/org.eclipse.cdt.core.win32/os/win32/x86/spawner.dll b/core/org.eclipse.cdt.core.win32/os/win32/x86/spawner.dll index 1b1f3c338f8e5f22d4d617c301bef93bb1eb98ec..e1ee52a25a79696f8a40e88ed1d108cc70664045 100644 GIT binary patch literal 37157 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 BFDU>3 literal 23552 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