8

AN OVERBROAD PATENT ON SOFTWARE BUILD SYSTEMS

SAP is trying to patent... Makefiles and other build systems that combine a platform-independent configuration file with platform-specific templates to create platform-specific build systems. 10 minutes of your time can help narrow US patent applications before they become patents. Follow @askpatents on twitter to help.

QUESTION - Have you seen anything that was published before Jan, 2012 that discusses:

Creating a platform-specific Makefile by combining a platform-independent Makefile and a platform-specific template Makefile?

If so, please submit evidence of prior art as an answer to this question. Only one piece of prior art per answer below. We welcome multiple answers from the same individual.

TITLE: Unified Software Build System

  • Publication Number: US20130198717 A1
  • Assignee: SAP
  • Prior Art Date: Seeking prior Art predating January 2012
  • Open for Challenge at USPTO: Open through Feb 1, 2014

Claim 1 requires each and every step below::

A method comprising:

  1. Receiving the unified build system configuration file in a computer system, the unified build system configuration file comprising at least one platform-independent build system configuration
  2. Generating, using the computer system, at least one platform-specific build system configuration from the at least one platform-independent build system configuration
  3. Selecting at least one template for the unified build system configuration file, the template selected from among templates corresponding to each of multiple platforms
  4. Generating the one or more build system build files for at least one of the multiple platforms using the platform-specific build system configuration and the selected template; and
  5. Providing the generated one or more build system build files in response to the unified build system configuration file.

This is already pretty much in English.


What is good prior art? Please see our FAQ.

Want to help? Please vote or comment on submissions below. We welcome you to post your own request for prior art on other questionable US Patent Applications.

2
  • 1
    The In English translation is odd. Wrong cut and paste? Aug 6, 2013 at 7:12
  • @JoannesVermorel Yup, thanks for spotting that! This was my first post and I will be more careful next time.
    – Dave
    Aug 6, 2013 at 15:00

5 Answers 5

6

Here is a build system that: uses platform-independent build files; generates platform-specific build files for multiple platforms; and is template based.

http://www.bakefile.org

"Bakefile is cross-platform, cross-compiler native makefiles generator. It takes compiler-independent description of build tasks as input and generates native makefile (autoconf's Makefile.in, Visual C++ project, bcc makefile etc.)"

Here is an example of a platform-independent build file:

<exe id="foo">
  <app-type>gui</app-type>
  <sources>foo.c bar.c</sources>
</exe>

The following command line would generate a platform-specific build file for Microsoft Visual C++ on Windows:

bakefile -fmsvs2008prj file.bkl 

or for Macintosh:

bakefile -fxcode2 file.bkl 

The above example uses the "exe" template, which in turn uses platform-specific templates to implement executables differently on Windows, Mac, Linux etc. Further information on templates:

http://www.bakefile.org/doc/ch05.html#cmd.template

Finally a publication from July 26, 2005 mentioning bakefile:

http://my.safaribooksonline.com/book/programming/0131473816

6

The patent is a very exact description of automake & autoconf toolchain:

http://www.gnu.org/software/autoconf/autoconf.html

Autoconf is an extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. These scripts can adapt the packages to many kinds of UNIX-like systems without manual user intervention. Autoconf creates a configuration script for a package from a template file that lists the operating system features that the package can use, in the form of M4 macro calls.

Producing configuration scripts using Autoconf requires GNU M4. You should install GNU M4 (at least version 1.4.6, although 1.4.13 or later is recommended) before configuring Autoconf, so that Autoconf's configure script can find it. The configuration scripts produced by Autoconf are self-contained, so their users do not need to have Autoconf (or GNU M4).

5

I believe that the imake tool used for over a decade to build X11 did this with Makefiles.

There is an old O’Reilly book about imake that would substantiate this in more detail, but the imake FAQ from 1997 says right at the top:

What is imake? How does it work?

imake is a Makefile-generator that is intended to make it easier to develop software portably for multiple systems. … Machine-dependencies are specified explicitly in a set of configuration files. Instead of writing a Makefile, you write an Imakefile, which is a machine-independent description of what targets you want to build. This way your description file doesn't need to change when you build your software on different systems. imake reads the Imakefile and combines the specifications in it with the proper machine dependencies from the configuration files to write a Makefile tailored for a specific system.

After applying the dictionary

  • build system configuration file = Makefile
  • unified build system configuration file = Imakefile

this seems to be exactly the claim.

5

Cmake [ http://www.cmake.org/ ] is a cross-platform system for building makefiles from templates.

Quoting their site:

"CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice."

2

There is an excellent build system that covers off each point in claim 1 and simultaneously takes it much further. The build system is part of "Real Time Software Components" (RTSC). It employs a scriptable build system revolving around a tool suite called XDCTools.

With XDCTools, a project defines its build configuration in a file with a .bld extension (Claim 1.1). The platform-specific build steps to perform, for any number of platforms, are also defined in this or other .bld files (Claim 1.2). What targets to build for are further defined in the same or other .bld files. The so-called 'templates' are the scripted build steps encapsulated in the .bld files. (Claim 1.3). After the .bld files have been processed, a series of makefiles are generated, at least one for each selected platform/target. (Claim 1.4). The makefiles are 'provided' in an output directory (Claim 1.5).

XDCTools is responsible for building the entire project and does not just spit out makefiles as its end product. The makefiles that it does produce are typically intermediate products that are then used by the tool to complete the builds. Unfortunately, documentation of the specific workings of the build system is largely buried within descriptions of RTSC's higher level functions such as creating, producing and consuming software 'modules'.

References:

RTSC home page: http://eclipse.org/rtsc/

An overview of RTSC: http://rtsc.eclipse.org/docs-tip/Introducing_RTSC

A partial description of the build system: http://rtsc.eclipse.org/docs-tip/Using_Targets_and_Platforms

Page dating the use of RTSC/XDCTools to at least 2007: http://rtsc.eclipse.org/docs-tip/FAQ-080713-6

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .