@REM expected parameters are...
@REM   %1 = long filename (without extension)
@REM   %2 = device name
@REM   %3 = family name (i.e. PIC24F, PIC24H, dsPIC30F, dsPIC33F)

@set temppath=%path%

@path=%~dp0..\C_tools\bin;

pic30-gcc -omf=elf -mcpu=%2 -c -O2 -Q -ffunction-sections -funsigned-char -fno-short-double -I"%~dp0..\C_tools\support\h" -I"%~dp0..\MX_support" -Wall -std=gnu99 %1.c -o %1.o
@IF %ERRORLEVEL% NEQ 0 GOTO Error

@ECHO.
@ECHO.
@ECHO *** Compilation successful! ***
@ECHO *** Starting linking and executable generation ***

pic30-gcc -omf=elf -mcpu=%2 -Wl,%1.o,--gc-sections,-I"%~dp0..\C_tools\lib",--heap=256,--report-mem,--script="%~dp0..\C_tools\Support\%3\gld\p%2.gld", -o %1.elf

@IF %ERRORLEVEL% NEQ 0 GOTO Error1

%~dp0..\C_tools\bin\bin\pic30-elf-bin2hex %1.elf
@IF %ERRORLEVEL% NEQ 0 GOTO Error2

%~dp0..\C_tools\bin\bin\pic30-elf-objdump -S  %1.elf > %1.asm

@ECHO.
@ECHO *** HEX file creation successful! ***
@path=temppath
@EXIT 0

:Error1
@ECHO.
@ECHO Error returned from [pic30-gcc.exe]
@GOTO Error

:Error2
@ECHO.
@ECHO Error returned from [pic30-bin2hex.exe]
@GOTO Error

:Error
@path=temppath
@EXIT 1