#
# Generated Makefile - do not edit!
#
#
# This file contains information about the location of compilers and other tools.
# If you commmit this file into your revision control server, you will be able to 
# to checkout the project and build it from the command line with make. However,
# if more than one person works on the same project, then this file might show
# conflicts since different users are bound to have compilers in different places.
# In that case you might choose to not commit this file and let MPLAB X recreate this file
# for each user. The disadvantage of not commiting this file is that you must run MPLAB X at
# least once so the file gets created and the project can be built. Finally, you can also
# avoid using this file at all if you are only building from the command line with make.
# You can invoke make with the values of the macros:
# $ makeMP_CC="/opt/microchip/mplabc30/v3.30c/bin/pic30-gcc" ...  
#
SHELL=cmd.exe
PATH_TO_IDE_BIN=C:/DevTools/Microchip/MPLABX/v3.10/mplab_ide/mplab_ide/modules/../../bin/
# Adding MPLAB X bin directory to path.
PATH:=C:/DevTools/Microchip/MPLABX/v3.10/mplab_ide/mplab_ide/modules/../../bin/:$(PATH)
# Path to java used to run MPLAB X when this makefile was created
MP_JAVA_PATH="C:\DevTools\Microchip\MPLABX\v3.10\sys\java\jre1.7.0_79/bin/"
OS_CURRENT="$(shell uname -s)"
MP_CC="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-gcc.exe"
MP_CPPC="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-g++.exe"
# MP_BC is not defined
MP_AS="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-as.exe"
MP_LD="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-ld.exe"
MP_AR="C:\DevTools\Microchip\xc32\v1.40\bin\xc32-ar.exe"
DEP_GEN=${MP_JAVA_PATH}java -jar "C:/DevTools/Microchip/MPLABX/v3.10/mplab_ide/mplab_ide/modules/../../bin/extractobjectdependencies.jar"
MP_CC_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
MP_CPPC_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
# MP_BC_DIR is not defined
MP_AS_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
MP_LD_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
MP_AR_DIR="C:\DevTools\Microchip\xc32\v1.40\bin"
# MP_BC_DIR is not defined
