Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Make (software)
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Variants== {{anchor|Derivatives}} Make has been [[Rewrite (programming)|implemented]] numerous times, generally using the same makefile format and providing the same features, but some providing enhancements from the original. Examples: * Sun DevPro Make appeared in 1986 with SunOS-3.2. With SunOS-3.2. It was delivered as an optional program; with SunOS-4.0, SunPro Make was made the default Make program.<ref>{{cite web|url=https://groups.google.com/forum/|title=Google Groups|website=arquivo.pt|access-date=18 March 2018|url-status=bot: unknown|archive-url=http://arquivo.pt/wayback/20110122130054/https://groups.google.com/forum/|archive-date=22 January 2011}}</ref>{{better source needed|date=May 2017}} In December 2006, Sun DevPro Make was made open source as part of the efforts to open-source [[Solaris (operating system)|Solaris]].<ref>{{cite web|url=https://blogs.oracle.com/jimgris/entry/opensolaris_at_two|title=OpenSolaris at Two (Jim Grisanzio)|date=12 December 2013|access-date=18 March 2018|url-status=dead|archive-url=https://web.archive.org/web/20131212131557/https://blogs.oracle.com/jimgris/entry/opensolaris_at_two|archive-date=12 December 2013}}</ref><ref>Grisanzio, Jim. [http://www.guug.de/veranstaltungen/osdevcon2007/slides/grisanzio-opensolaris-story-guug.pdf The OpenSolaris Story]{{Dead link|date=December 2024 |bot=InternetArchiveBot |fix-attempted=yes }}.</ref> * dmake or Distributed Make that came with Sun Solaris Studio as its default Make, but not the default one on the Solaris Operating System (SunOS). It was originally required to build OpenOffice, but in 2009<ref name="lo"/> the build system was rewritten to use GNU Make. While [[Apache OpenOffice]] still contains a mixture of both build systems,<ref name="oo">{{cite web|url=https://wiki.openoffice.org/wiki/Documentation/Building_Guide_AOO#Make_Systems_Used_by_Apache_OpenOffice|title=Apache OpenOffice Building Guide - Apache OpenOffice Wiki|website=wiki.openoffice.org|access-date=18 March 2018|archive-date=17 March 2018|archive-url=https://web.archive.org/web/20180317161912/https://wiki.openoffice.org/wiki/Documentation/Building_Guide_AOO#Make_Systems_Used_by_Apache_OpenOffice|url-status=live}}</ref> the much more actively developed [[LibreOffice]] only uses the modernized "gbuild" now.<ref name="lo">{{cite web|url=https://wiki.documentfoundation.org/Development/Gbuild|title=Development/Gbuild - The Document Foundation Wiki|website=wiki.documentfoundation.org|access-date=18 March 2018}}</ref> * [[BSD]] Make (''pmake'',<ref>{{citation|url=https://svnweb.freebsd.org/base/stable/2.0.5/usr.bin/make/make.h?revision=8869&view=markup|title=FreeBSD 2.0.5 Make Source Code|date=1993|access-date=2016-05-06|archive-date=2023-03-06|archive-url=https://web.archive.org/web/20230306011019/https://svnweb.freebsd.org/base/stable/2.0.5/usr.bin/make/make.h?revision=8869&view=markup|url-status=live}}</ref> ''bmake''<ref name="fbsdbmake">{{Cite web|url=https://www.freebsd.org/cgi/man.cgi?query=bmake&sektion=1|title=Bmake(1)}}</ref> or ''fmake''<ref>{{Cite web |title=fmake(1) General Commands Manual |url=https://manpages.debian.org/jessie/freebsd-buildutils/fmake.1 |access-date=2020-11-30 |archive-date=2021-04-20 |archive-url=https://web.archive.org/web/20210420110426/https://manpages.debian.org/jessie/freebsd-buildutils/fmake.1 |url-status=live }}</ref>), which is derived from Adam de Boor's work on a version of Make capable of building targets in [[Parallel computing|parallel]], and survives with varying degrees of modification in [[FreeBSD]],<ref name="fbsdbmake"/> [[NetBSD]]<ref>{{cite web|url=https://netbsd.gw.com/cgi-bin/man-cgi?make++NetBSD-current|title=make|website=NetBSD Manual Pages|access-date=9 July 2020|archive-date=9 July 2020|archive-url=https://web.archive.org/web/20200709221421/https://netbsd.gw.com/cgi-bin/man-cgi?make++NetBSD-current|url-status=dead}}</ref> and [[OpenBSD]].<ref>{{cite web|url=https://man.openbsd.org/make.1#HISTORY|title=make(1) - OpenBSD manual pages|website=man.openbsd.org|access-date=18 March 2018|archive-date=5 February 2018|archive-url=https://web.archive.org/web/20180205000820/https://man.openbsd.org/make.1#HISTORY|url-status=live}}</ref> Distinctively, it has conditionals and iterative loops which are applied at the parsing stage and may be used to conditionally and programmatically construct the makefile,<ref>{{cite web|url=https://www.freebsd.org/cgi/man.cgi?query=make&manpath=FreeBSD+12.1-RELEASE+and+Ports#INCLUDE%09STATEMENTS,_CONDITIONALS_AND_FOR_LOOPS|title=make|website=FreeBSD|access-date=9 July 2020|quote=Makefile inclusion, conditional structures and for loops reminiscent of the C programming language are provided in make.|archive-date=11 July 2020|archive-url=https://web.archive.org/web/20200711144451/https://www.freebsd.org/cgi/man.cgi?query=make&manpath=FreeBSD%2012.1-RELEASE%20and%20Ports#INCLUDE%09STATEMENTS,_CONDITIONALS_AND_FOR_LOOPS|url-status=live}}</ref> including generation of targets at runtime.{{citation needed|date=September 2014}} * [[GNU]] Make (short ''gmake'') is the standard implementation of Make for Linux and macOS.<ref>{{citation |url=http://www.linuxdevcenter.com/pub/a/linux/excerpts/9780596100292/gnu-make-utility.html |title=Unix in a Nutshell, Fourth Edition |author=Arnold Robbins |date=2005 |publisher=O'Reilly |access-date=2014-05-28 |archive-date=2014-11-21 |archive-url=https://web.archive.org/web/20141121143147/http://www.linuxdevcenter.com/pub/a/linux/excerpts/9780596100292/gnu-make-utility.html |url-status=live }}</ref> It provides several extensions over the original Make, such as conditionals. It also provides many built-in functions which can be used to eliminate the need for shell-scripting in the makefile rules as well as to manipulate the variables set and used in the makefile.<ref>{{citation |url=https://www.gnu.org/software/make/manual/html_node/Functions.html |title=8. Functions for Transforming Text |work=GNU make |publisher=Free Software Foundation |date=2013 |access-date=2014-05-28 |archive-date=2014-05-23 |archive-url=https://web.archive.org/web/20140523114951/http://www.gnu.org/software/make/manual/html_node/Functions.html |url-status=live }}</ref> For example, the ''foreach'' function can be used to iterate over a list of values, such as the names of files in a given directory.<ref>{{citation |url=https://www.gnu.org/software/make/manual/html_node/Foreach-Function.html#Foreach-Function |title=8.5 The foreach Function |work=GNU make |publisher=Free Software Foundation |date=2013 |access-date=2014-05-28 |archive-date=2014-05-22 |archive-url=https://web.archive.org/web/20140522071851/http://www.gnu.org/software/make/manual/html_node/Foreach-Function.html#Foreach-Function |url-status=live }}</ref> GNU Make is required for building many software systems, including [[GNU Compiler Collection]] (GCC) (since version 3.4<ref>{{cite web |url=https://www.gnu.org/software/gcc/gcc-3.4/changes.html |title=GCC 3.4 Release Series Changes, New Features, and Fixes |publisher=Free Software Foundation |date=2006 |access-date=2016-07-22 |archive-date=2016-10-24 |archive-url=https://web.archive.org/web/20161024053749/https://www.gnu.org/software/gcc/gcc-3.4/changes.html |url-status=live }}</ref>), the Linux kernel,<ref>{{cite magazine |url=http://www.linuxjournal.com/content/kbuild-linux-kernel-build-system |title=Kbuild: the Linux Kernel Build System |author=Javier Martinez Canillas |magazine=Linux Journal |date=December 26, 2012 |access-date=May 28, 2014 |archive-date=November 21, 2014 |archive-url=https://web.archive.org/web/20141121005050/http://www.linuxjournal.com/content/kbuild-linux-kernel-build-system |url-status=live }}</ref><ref>{{citation |url=http://www.linuxtopia.org/online_books/linux_kernel/kernel_configuration/ch03.html |title=Linux Kernel in a Nutshell |author=Greg Kroah-Hartman |publisher=O'Reilly |date=2006 |access-date=2014-05-28 |archive-date=2014-08-11 |archive-url=https://web.archive.org/web/20140811131446/http://linuxtopia.org/online_books/linux_kernel/kernel_configuration/ch03.html |url-status=live }}</ref> Apache OpenOffice,<ref name="oo"/> LibreOffice,<ref name="lo"/> and [[Mozilla Firefox]].<ref>{{Cite web | url=https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions | title=Build Instructions | access-date=2017-05-12 | archive-date=2017-04-25 | archive-url=https://web.archive.org/web/20170425211219/https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions | url-status=dead }}</ref> * Rocky Bernstein's Remake<ref>{{cite web|url=http://bashdb.sourceforge.net/remake/|title=Remake – GNU Make with comprehensible tracing and a debugger|author=Rocky Bernstein|access-date=2018-01-20|archive-date=2018-01-21|archive-url=https://web.archive.org/web/20180121071405/http://bashdb.sourceforge.net/remake/|url-status=live}}</ref> is a fork of GNU Make and provides several extensions over GNU Make, such as better location and error-location reporting, execution tracing, execution profiling, and it contains a debugger. * Glenn Fowler's ''nmake''<ref>{{cite web |url=http://www2.research.att.com/~astopen/nmake/nmake.html |title=nmake Overview |author=Glenn Fowler |publisher=Information and Software Systems Research, AT&T Labs Research |date=January 4, 2012 |access-date=May 26, 2014 |archive-url=https://web.archive.org/web/20150902010526/http://www2.research.att.com/~astopen/nmake/nmake.html |archive-date=September 2, 2015 |url-status=dead }}</ref> (unrelated to the same-named Microsoft variant) is incompatible with the UNIX variant, but provides features which, according to some, reduce the size of makefiles by a factor of 10. * [[Microsoft]] ''nmake'' is normally installed with [[Visual Studio]].<ref>{{cite web |url=http://msdn.microsoft.com/en-us/library/dd9y37ha.aspx |title=NMAKE Reference Visual Studio 2015 |publisher=Microsoft |date=2015 |access-date=2009-11-27 |archive-date=2009-12-08 |archive-url=https://web.archive.org/web/20091208064323/http://msdn.microsoft.com/en-us/library/dd9y37ha.aspx |url-status=live }}</ref> It supports preprocessor directives such as includes and conditional expressions which use variables set on the command-line or within the makefiles.<ref>{{cite web |url=http://msdn.microsoft.com/en-us/library/7y32zxwh.aspx |title=Makefile Preprocessing Directives |date=2014 |access-date=2014-05-27 |archive-date=2014-08-26 |archive-url=https://web.archive.org/web/20140826122139/http://msdn.microsoft.com/en-us/library/7y32zxwh.aspx |url-status=live }}</ref><ref>{{cite web |url=http://msdn.microsoft.com/en-us/library/8t2e8d78.aspx |title=Makefile Preprocessing Operators |publisher=Microsoft |date=2014 |access-date=2014-05-27 |archive-date=2014-08-26 |archive-url=https://web.archive.org/web/20140826122134/http://msdn.microsoft.com/en-us/library/8t2e8d78.aspx |url-status=live }}</ref> Inference rules differ from Make; for example they can include search paths.<ref>{{cite web |url=http://msdn.microsoft.com/en-us/library/hk9ztb8x.aspx |title=Search Paths in Rules |publisher=Microsoft |date=2014 |access-date=2014-05-27 |archive-date=2014-08-26 |archive-url=https://web.archive.org/web/20140826122150/http://msdn.microsoft.com/en-us/library/hk9ztb8x.aspx |url-status=live }}</ref> *[[Embarcadero Technologies|Embarcadero]] make has a command-line option that "Causes MAKE to mimic Microsoft's NMAKE.".<ref>{{cite web |url=http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/devwin32/make_xml.html |title=MAKE |publisher=CodeGear(TM) |date=2008 |access-date=2014-08-24 |archive-date=2017-03-02 |archive-url=https://web.archive.org/web/20170302093429/http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/devwin32/make_xml.html |url-status=live }}</ref> *[[Qt Project]]'s ''Jom'' tool is a clone of nmake.<ref>{{cite web |url=https://wiki.qt.io/Jom |title=Jom - Qt Wiki |publisher=Qt Project |date=2021 |access-date=2021-01-26 |archive-date=2021-02-02 |archive-url=https://web.archive.org/web/20210202130552/https://wiki.qt.io/Jom |url-status=live }}</ref> * ''Mk'' replaced Make in [[Research Unix]], starting from version 9.<ref name="reader">{{cite tech report |first=M. D. |last=McIlroy |author-link=Doug McIlroy |title=A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 |number=CSTR 139 |institution=Bell Labs |year=1987 |url=http://www.9grid.fr/www.9grid.fr/misc/unix-reader.pdf}}</ref> A redesign of the original tool by Bell Labs programmer Andrew G. Hume, it features a different syntax. Mk became the standard build tool in [[Plan 9 from Bell Labs|Plan 9]], Bell Labs' intended successor to Unix.<ref>{{cite encyclopedia |last1=Hume |first1=Andrew G. |first2=Bob |last2=Flandrena |title=Maintaining files on Plan 9 with Mk |encyclopedia=Plan 9 Programmer’s Manual |publisher=AT&T Bell Laboratories |year=2002 |url=http://9p.io/sys/doc/mk.html |archive-url=https://web.archive.org/web/20150711105955/http://9p.io/sys/doc/mk.html |archive-date=July 11, 2015 |url-status=live}}</ref> * ''Kati'' is Google's replacement of GNU Make, as of 2020 used in [[Android OS]] builds. It translates the makefile into [[Ninja (build system)|ninja]] for faster incremental builds (similar to the cmake metatool).<ref>{{cite web |title=google/kati: An experimental GNU make clone |url=https://github.com/google/kati |website=GitHub |date=30 November 2020}}</ref> * Snakemake is a Python-driven implementation for compiling and running [[bioinformatics]] workflows.<ref>{{Cite journal |last1=Mölder |first1=Felix |last2=Jablonski |first2=Kim Philipp |last3=Letcher |first3=Brice |last4=Hall |first4=Michael B. |last5=Tomkins-Tinch |first5=Christopher H. |last6=Sochat |first6=Vanessa |last7=Forster |first7=Jan |last8=Lee |first8=Soohyun |last9=Twardziok |first9=Sven O. |last10=Kanitz |first10=Alexander |last11=Wilm |first11=Andreas |date=2021-04-19 |title=Sustainable data analysis with Snakemake |journal=F1000Research |language=en |volume=10 |pages=33 |doi=10.12688/f1000research.29032.2 |issn=2046-1402 |pmc=8114187 |pmid=34035898 |doi-access=free }}</ref> [[POSIX]] includes standardization of the basic features and operation of the Make utility, and is implemented with varying degrees of compatibility with Unix-based versions of Make. In general, simple makefiles may be used between various versions of Make with reasonable success. GNU Make, Makepp and some versions of BSD Make default to looking first for files named "GNUmakefile",<ref>{{cite web |url=https://www.gnu.org/software/make/manual/make.html#Makefile-Names |title=GNU 'make' |publisher=Free Software Foundation |access-date=2014-04-16 |archive-date=2018-06-05 |archive-url=https://web.archive.org/web/20180605023853/https://www.gnu.org/software/make/manual/make.html#Makefile-Names |url-status=live }}</ref> "Makeppfile"<ref>{{cite web |url=http://makepp.sourceforge.net/2.0/makepp_command.html#f_makefile |title=Makepp }}</ref> and "BSDmakefile"<ref>{{cite web |url=https://www.freebsd.org/cgi/man.cgi?query=make&apropos=0&sektion=0&manpath=FreeBSD+6.2-RELEASE&format=html#DESCRIPTION |title=Free BSD make |access-date=2018-05-07 |archive-date=2018-05-08 |archive-url=https://web.archive.org/web/20180508121646/https://www.freebsd.org/cgi/man.cgi?query=make&apropos=0&sektion=0&manpath=FreeBSD+6.2-RELEASE&format=html#DESCRIPTION |url-status=live }}</ref> respectively, which allows one to put makefiles which use implementation-defined behavior in separate locations.
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Make (software)
(section)
Add topic