@echo off :: compila el programa PASCAL (GNU_Pascal) suministrado como argumento :: uso: :: gpc programa :: :: v_1.2 25 Ene 2014 :: Santiago Velilla, Dpto. Informática e Ing. de Sistemas, UNIZAR :: :: %~1 Expands %1 and removes any surrounding quotation marks ("") :: %~f1 Expands %1 to a fully qualified path name. :: %~d1 Expands %1 to a drive letter. :: %~p1 Expands %1 to a path. :: %~n1 Expands %1 to a file name. :: %~x1 Expands %1 to a file extension. :: eliminar la extension del fichero set PathProg=%~dp1 set NamProg=%~n1 set PROGR=%~dpn1 :: si no hay extension del fichero, poner extensión por defecto set EXT=.pp if "%~x1"=="" goto :inicio set EXT=%~x1 if "%EXT%"==".p" goto :inicio if "%EXT%"==".pas" goto :inicio if "%EXT%"==".pp" goto :inicio if "%EXT%"==".txt" goto :inicio :: si la extensión no es conocida, no compilar echo extension de fichero no permitida (debe ser .pas, .pp, .p o .txt) pause goto :finERR :inicio echo compilar %PROGR%%EXT% ::echo echo ;;; compilar (GNU-Pascal v2.1) %PROGR%%EXT% --^> %PROGR%.exe ;;; ::echo. :: por defecto no hay condición de error set ERROR=0 set dirGPC=c:\dev_gpc ::defGlobales if NOT %GPC_EXEC_PREFIX%.==. goto compilar set PATH=%dirGPC%\bin;%PATH% set C_INCLUDE_PATH=%dirGPC%\include set GCC_BASE=3.4.5 set GRXFONT=C:\GRXfonts set GPC_EXEC_PREFIX=%dirGPC%\libexec\gcc\mingw32\ set LIBRARY_PATH=%dirGPC%\lib;%dirGPC%\lib\gcc\mingw32\%GCC_BASE% set GPC_UNIT_PATH=%dirGPC%\lib\gcc\mingw32\%GCC_BASE%\units;%dirGPC%\units;%dirGPC%\units\winapi;%dirGPC%\units\objects;%dirGPC%\units\sysutils;%dirGPC%\units\objmingw :compilar set exeGPC=%dirGPC%\bin\gpc set libGPC=%dirGPC%\lib set libGCC=%libGPC%\gcc\mingw32\%GCC_BASE% set unitGPC=%dirGPC%\units %exeGPC% "%PROGR%%EXT%" -o"%PROGR%.exe" -fno-inline -s -fno-io-checking -fstack-checking -fno-range-checking -fimplicit-result -O1 -Wno-warnings -fno-assertions -fextended-syntax -fignore-function-results -fcstrings-as-strings -fpointer-arithmetic -march=i686 -mwindows -mconsole -funit-path=%unitGPC% -B%libGPC% -B%libGCC% --automake 2>"%PROGR%.err" set dirGPC= set exeGPC= set libGPC= set libGCC= set unitGPC= if errorlevel 1 goto :hayErr ::pause echo compilacion correcta ::echo eliminación de ficheros intermedios IF EXIST "%PROGR%.err" del "%PROGR%.err" IF EXIST "%PROGR%.o" del "%PROGR%.o" goto :fin :hayErr echo ERROR de compilacion :: pause :: mostrar el fichero de errores :: echo. echo. type "%PROGR%.err" pause :: termina la ejecución devolviendo la condición de error set ERROR=1 :fin set FPCdir= set FPCbin= set FPCunit= exit /b %ERROR%