[ros-diffs] [hpoussin] 22601: Update Wine import script: - Batch processing is now possible with "fullprocessing" option - Compile libraries as UNICODE - Link to uuid libray when needed - ...

hpoussin at svn.reactos.org hpoussin at svn.reactos.org
Sun Jun 25 01:00:07 CEST 2006


Author: hpoussin
Date: Sun Jun 25 03:00:07 2006
New Revision: 22601

URL: http://svn.reactos.org/svn/reactos?rev=22601&view=rev
Log:
Update Wine import script:
- Batch processing is now possible with "fullprocessing" option
- Compile libraries as UNICODE
- Link to uuid libray when needed
- ...

Modified:
    trunk/tools/wineimport.cmd

Modified: trunk/tools/wineimport.cmd
URL: http://svn.reactos.org/svn/reactos/trunk/tools/wineimport.cmd?rev=22601&r1=22600&r2=22601&view=diff
==============================================================================
--- trunk/tools/wineimport.cmd (original)
+++ trunk/tools/wineimport.cmd Sun Jun 25 03:00:07 2006
@@ -3,18 +3,19 @@
 REM Copyright (C) 2006 Hervé Poussineau (hpoussin at reactos.org)
 
 SET WINE_TMPFILE1=tmpfile1.wine
-SET WINE_TMPFILE2=tmpfile2.wine
-IF "%WINE_RESULTFILE%" == "" SET WINE_RESULTFILE=con
 
 IF "%1" == "" GOTO help
 IF "%1" == "download" GOTO download
 IF "%1" == "process" GOTO process
-IF "%1" == "internal_analyseline" GOTO internal_analyseline
+IF "%1" == "link" GOTO link
+IF "%1" == "fullprocessing" GOTO fullprocessing
 
 :help
 ECHO Syntax:
 ECHO %0 download {wine_lib} [{wine_lib} ...]
 ECHO %0 process {wine_lib} [{wine_lib} ...]
+ECHO %0 link {path_to_reactos} {wine_lib}
+ECHO %0 fullprocessing {path_to_reactos} {wine_lib} [{wine_lib} ...]
 GOTO :eof
 
 :download
@@ -31,6 +32,8 @@
 GOTO :eof
 
 :process
+SETLOCAL ENABLEEXTENSIONS
+SETLOCAL ENABLEDELAYEDEXPANSION
 SET WINE_BATCH=%0
 IF "%2" == "" GOTO help
 :startprocess
@@ -38,68 +41,129 @@
 	ECHO WARNING: Did you forget "%WINE_BATCH% download %2"?
 	GOTO :processnext
 )
+
+SET WINE_LOWER=abcdefghijklmnopqrstuvwxyz0123456789
+SET WINE_UPPER=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
+SET WINE_LINE=%2
+SET WINE_UPPERCASE=
+FOR /L %%i IN (0, 1, 8) DO (
+	FOR /L %%j IN (0, 1, 35) DO (
+		IF "!WINE_LOWER:~%%j,1!" == "!WINE_LINE:~%%i,1!" (
+			SET WINE_UPPERCASE=!WINE_UPPERCASE!!WINE_UPPER:~%%j,1!
+		)
+	)
+)
+
 >NUL COPY /Y wine\dlls\%2\makefile.in %WINE_TMPFILE1%
 
->%WINE_RESULTFILE% ECHO ^<module name="%2" type="win32dll" baseaddress="${BASEADDRESS_%2}" installbase="system32" installname="%2.dll" allowwarnings="true"^>
->>%WINE_RESULTFILE% ECHO 	^<importlibrary definition="%2.spec.def" /^>
->>%WINE_RESULTFILE% ECHO 	^<include base="%2"^>.^</include^>
->>%WINE_RESULTFILE% ECHO 	^<include base="ReactOS"^>include/reactos/wine^</include^>
->>%WINE_RESULTFILE% ECHO 	^<define name="__REACTOS__" /^>
->>%WINE_RESULTFILE% ECHO 	^<define name="__USE_W32API" /^>
->>%WINE_RESULTFILE% ECHO 	^<define name="_WIN32_IE"^>0x600^</define^>
->>%WINE_RESULTFILE% ECHO 	^<define name="_WIN32_WINNT"^>0x501^</define^>
->>%WINE_RESULTFILE% ECHO 	^<define name="WINVER"^>0x501^</define^>
->>%WINE_RESULTFILE% ECHO 	^<library^>wine^</library^>
+ECHO ^<module name="%2" type="win32dll" baseaddress="${BASEADDRESS_!WINE_UPPERCASE!}" installbase="system32" installname="%2.dll" allowwarnings="true"^>
+ECHO 	^<importlibrary definition="%2.spec.def" /^>
+ECHO 	^<include base="%2"^>.^</include^>
+ECHO 	^<include base="ReactOS"^>include/reactos/wine^</include^>
+ECHO 	^<define name="__REACTOS__" /^>
+ECHO 	^<define name="__WINESRC__" /^>
+ECHO 	^<define name="__USE_W32API" /^>
+ECHO 	^<define name="_WIN32_IE"^>0x600^</define^>
+ECHO 	^<define name="_WIN32_WINNT"^>0x501^</define^>
+ECHO 	^<define name="WINVER"^>0x501^</define^>
+ECHO 	^<library^>wine^</library^>
+ECHO 	^<library^>ntdll^</library^>
 SET WINE_FULL_LINE=
 SET WINE_END_PREC_LINE=
 SET WINE_VARTYPE=0
 FOR /F "eol=# delims=" %%l IN (%WINE_TMPFILE1%) DO (
-	CALL %WINE_BATCH% internal_analyseline %%l
+	CALL :internal_analyseline %%l
 )
->>%WINE_RESULTFILE% ECHO 	^<file^>%2.spec^</file^>
->>%WINE_RESULTFILE% ECHO ^</module^>
+ECHO 	^<file^>%2.spec^</file^>
+ECHO ^</module^>
 
 :processnext
 SHIFT
 IF NOT "%2" == "" GOTO startprocess
-DEL %WINE_TMPFILE1% %WINE_TMPFILE2%
+DEL %WINE_TMPFILE1%
+GOTO :eof
+
+:link
+IF "%3" == "" GOTO help
+IF NOT "%4" == "" GOTO help
+IF NOT EXIST "%2\ReactOS.rbuild" (
+	ECHO %2\ReactOS.rbuild doesn't exit.
+	GOTO :help
+)
+IF NOT EXIST "wine\dlls\%3" (
+	ECHO wine\dlls\%3 doesn't exist.
+	ECHO Did you forget "%WINE_BATCH% download %3"?
+	GOTO :eof
+)
+IF NOT EXIST "wine\dlls\%3\%3.rbuild" (
+	ECHO wine\dlls\%3.rbuild doesn't exist.
+	ECHO Did you forget "%WINE_BATCH% process %3 >wine\dlls\%3\%3.rbuild"?
+	GOTO :eof
+)
+>NUL 2>NUL junction.exe "%2\dll\win32\%3.wine" "wine\dlls\%3"
+IF ERRORLEVEL 1 (
+	ECHO Error when executing junction.exe. Try to download the lastest version at
+	ECHO http://www.sysinternals.com/Utilities/Junction.html
+)
+GOTO :eof
+
+:fullprocessing
+SETLOCAL ENABLEEXTENSIONS
+IF "%3" == "" GOTO help
+SET WINE_LIST=
+SET WINE_ROS_DIR=%2
+:fullprocessing_filllist
+SHIFT
+IF "%2" == "" GOTO fullprocessing_download
+SET WINE_LIST=%WINE_LIST% %2
+GOTO fullprocessing_filllist
+:fullprocessing_download
+CALL :download download%WINE_LIST%
+FOR %%m IN (%WINE_LIST%) DO (
+	>wine\dlls\%%m\%%m.rbuild CALL :process process %%m
+	CALL :link link "%WINE_ROS_DIR%" %%m
+)
+IF EXIST "%WINE_ROS_DIR%\makefile.auto" DEL "%WINE_ROS_DIR%\makefile.auto"
+PUSHD "%WINE_ROS_DIR%"
+make.exe %WINE_LIST%
+POPD
 GOTO :eof
 
 :internal_analyseline
 SET WINE_LINE=%*
-SET WINE_LINE=%WINE_LINE:~21%
-SET WINE_LINE=%WINE_LINE:-luuid=%
-SET WINE_START_LINE1=%WINE_LINE:~0,1%
-SET WINE_START_LINE2=%WINE_LINE:~0,2%
 SET WINE_END_LINE=%WINE_LINE:~-1%
 IF NOT "%WINE_END_PREC_LINE%" == "\" (
 	IF NOT "%WINE_VARTYPE%" == "0" (
 		FOR /F "tokens=2* delims= " %%h IN ("%WINE_FULL_LINE%") DO (
 			FOR %%j IN (%%i) DO (
 				IF "%WINE_VARTYPE%" == "1" (
-					>>%WINE_RESULTFILE% ECHO 	^<file^>%%j^</file^>
+					ECHO 	^<file^>%%j^</file^>
+				) ELSE IF "%WINE_VARTYPE%" == "2" (
+					ECHO 	^<library^>%%j^</library^>
 				) ELSE (
-					>>%WINE_RESULTFILE% ECHO 	^<library^>%%j^</library^>
+					IF "%%j" == "-luuid" ECHO 	^<library^>uuid^</library^>
 				)
 			)
 		)
 	)
 	SET WINE_FULL_LINE=
-	IF "%2" == "C_SRCS" (
+	IF "%1" == "C_SRCS" (
 		SET WINE_VARTYPE=1
-	) ELSE IF "%2" == "RC_SRCS" (
+	) ELSE IF "%1" == "RC_SRCS" (
 		SET WINE_VARTYPE=1
-	) ELSE IF "%2" == "IMPORTS" (
+	) ELSE IF "%1" == "IMPORTS" (
 		SET WINE_VARTYPE=2
+	) ELSE IF "%1" == "DELAYIMPORTS" (
+		SET WINE_VARTYPE=2
+	) ELSE IF "%1" == "EXTRALIBS" (
+		SET WINE_VARTYPE=3
 	) ELSE (
 		SET WINE_VARTYPE=0
 	)
 )
-IF "%WINE_END_LINE%" == "\" (
-	>%WINE_TMPFILE2% ECHO %WINE_FULL_LINE%%WINE_LINE:~0,-1%
-	<%WINE_TMPFILE2% SET /P WINE_FULL_LINE=
+SET WINE_END_PREC_LINE=%WINE_END_LINE%
+IF "%WINE_END_PREC_LINE%" == "\" (
+	SET WINE_FULL_LINE=!WINE_FULL_LINE!!WINE_LINE:~0,-1!
 ) ELSE (
-	>%WINE_TMPFILE2% ECHO %WINE_FULL_LINE%%WINE_LINE%
-	<%WINE_TMPFILE2% SET /P WINE_FULL_LINE=
+	SET WINE_FULL_LINE=!WINE_FULL_LINE!!WINE_LINE!
 )
-SET WINE_END_PREC_LINE=%WINE_END_LINE%




More information about the Ros-diffs mailing list