Enable Parallel Make

This feature is enabled by default in MPLAB® X IDE version 1.90 and later.

The make program's job server mode allows PCs with multiple processors to build several files in parallel, which can significantly reduce build times. This mode is not enabled by default in MPLAB® X IDE.

How to enable make's job server mode on Linux and Mac systems


Open the embedded options window by selecting from the main menu: Tools ▸ Options (Linux) or mplab_ide ▸ Preferences (Mac)


Click on the Embedded icon along the top row of the window. Tools_Options_Embedded.png


Select the Project Options tab.


Add the following to the make options text box:
where N is the maximum number of jobs you would like to allow make to execute simultaneously. See below for how to choose a value for {{N}}.
This passes the -jN job server option to the top level make call, and that option is passed to all the sub-make processes that MPLAB X IDE uses to build your project.

Click image to enlarge.

How to enable make's job server mode on Windows systems

On Windows machines the method outlined above for Linux and Mac does not typically improve your build times, presumably because the top level make is not passing the -jN option to the sub make processes that are doing the majority of the work to build your project. On Windows, you can enable job server mode by manually editing the files executing the sub make processes, but unfortunately the sub make files are programmatically generated by the IDE. As you make changes to your project settings MPLAB X IDE will overwrite these files and disable make’s job server.
The long term solution may be to add a job server option into MPLAB X IDE’s options, either as a project option or as an IDE-wide option. In the short term, a Python script has been written (tested on Windows and Linux using Python 2.7) that can be executed from MPLAB X IDE’s pre-build step. The script enables the job server in the sub make process controls the project’s build, and allows you to specify the number of jobs as an argument.

To use the script:


Make sure you have Python installed on your machine.


Download the zip file and extract the Python script.
Please read this disclaimer before using the script.
The full contents of the script may be viewed online here.


Open the Makefile in your project and search for .build-pre:

Add the following pre 'build' code -

c:\python27\python "C:\py_scripts\EnableMakeJobServer.py" 3 nbproject\Makefile-${CONF}.mk

  • c:\python27\python is the Python executable. A complete path to Python needs to be specified if the executable is not within your path.
  • "C:\py_scripts\EnableMakeJobServer.py" is the Python script (including path to the script).
  • 3 is the number of make jobs (The N value passed to -jN).
  • nbproject\Makefile-${CONF}.mk is the path to the makefile. The make process will replace {CONF} with a make variable to create the make file. Example “nbproject\Makefile-default.mk”, would be the name created using the “default” build configuration.

How to choose N

It is possible that you may have issues using make’s job server. For instance, we had issues using the job server without specifying N to limit the max number of jobs. There was also a case where the job server slowed down the make process on an older Pentium 4 machine. If you are using an older machine and it slows your build, It is recommended that you do not use this method. For most multicore machines, a value between 3 and 16 will provide good performance. You may need to experiment to find the best value.

How to disable make's job server mode on Linux and Mac systems

Remove the –jN option that was added to the Tools (menu) > Options > Embedded (icon) > Project Options (tab) > Make Options.

How to disable make's job server mode on Windows systems

Remove the script from your project properties pre-build step, and when you apply the project settings MPLAB X will both remove the script from your pre-build settings and regenerate your configuration specific make file without the job server option.

While we don’t expect any issues enabling this feature for most users, if you do have issues please let us know by posting on the forum or creating a support ticket. This feature is being considered to improve MPLAB X IDE’s build performance. If there are specific cases that cause issues, we would like to know so that we can document the setting properly.

© 2018 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.