The Perl Advent Calendar needs more articles for 2022. Submit your idea today!
Revision history for Perl extension ExtUtils::CBuilder.

0.280236 - 2021-02-12


  - Remove image-base generation on Win32/gcc and instead use GCC's built-in
    `--enable-auto-image-base` linker option.

0.280235 - 2020-11-01


  - Fix compilation on darwin with XCode 12 (-Werror=implicit-function-declaration) 
    Thanks to DrHyde for the patch.

0.280234 - 2020-01-21


  - Updated standalone module from blead.

0.280231 - 2019-03-31


  - Protected RE interpolation in

0.280230 - 2017-11-22


  - Updated Changes
  - Used OurPkgVersion instead of PkgVersion

0.280229 - 2017-10-13


  - Remove dependency to 'vars' package.

0.280228 - 2017-07-20


  - Fix link() on Windows, broken in version 0.280226.

0.280227 - 2017-07-19


  - Restore compatibility of test suite to Perl 5.6.

0.280226 - 2017-07-14


  - Fix C++ compiler detection (RT #131749)
    (thanks to stphnlyd)

0.280225 - 2016-01-04


  - New location of libperl on Win32 when building core (RT #126632)

0.280224 - 2015-10-09


  - Use warnings/strict on all modules.

0.280223 - 2015-06-02


  - Impose deterministic order on cpp-definition options.
    Heretofore, ExtUtils::CBuilder put cpp-definition options
    into the cc command line in non-deterministic order. This
    produced noise when diffing build logs.
    Make this order deterministic.  (RT #124106)

  - Add tests for ascii-betical order in t/04-base.t.

0.280220 - 2014-09-27


  - Added missing 'use Config' from '' (thanks Debian community)

0.280219 - 2014-09-01


  - Fixed regression on Android (thanks to Brian Fraser)

0.280218 - 2014-09-01


  - Mispelled 'starup' key in BCC support was fixed. #79574
  - Fixed the version in the PM file (thanks to Jim Keenan)

0.280217 - 2014-08-22


  - Quoted perl path for Windows support #98245 [Alberto Simões] 

0.280216 - 2014-03-07


  - Android support [Brian Fraser and Piotr Roszatycki]


  - Teach ExtUtils::CBuilder to handle mod2fname properly [Brian Fraser]

0.280212 - 2013-09-08


  - Reversion all modules.  

0.280211 - 2013-09-08


  - Missing dependency Perl::OSType [Leon Timmermans]
  - Fixed repository location [Alberto Simões]

0.280210 - 2013-09-06


  - Update INSTALLDIRS to favor installation under 'site' (perl 116479)
    [James E Keenan]

0.280209 - 2012-10-20 (Perl v5.17.5)


  - Allow options to be passed to prelink in Windows (perl #115100)
    [Eric Brine]

0.280208 - 2012-06-20 (Perl v5.17.1)


  - Corrected location in which manifest file is looked for on
    Windows (RT#35943, perl #111798) []

0.280207 (Not released)


  - Corrected test for existence of manifest file on Windows
    (perl #111782) [Steve Hay]

0.280206 - 2012-03-20 (Perl v5.15.9)


  - Added a SUPPORT section to indicate that upstream is Perl 5 core

0.280205 - 2011-12-20 (Perl v5.15.6)


  - Fixed bug picking up ccflags from Config

0.280204 - 2011-06-20 (Perl v5.15.0)


  - Quotation style cleanup

0.280203 - 2011-05-14 (Perl v5.14.0)


  - Appends CFLAGS and LDFLAGS environments instead of overriding

  - Reset ccflags on compilation for VMS.


  - Refactored OS name mapping to use Perl::OSType

0.280202 - Sun Jan 23 10:47:51 EST 2011

  - Different file names used for test files; allows EU::CB tests
    to be run in parallel. [Florian Ragwitz]

0.280201 - Fri Jan 21 15:16:36 EST 2011


  - t/04-base.t no longer attempt to compile or link as this provokes
    failures on main platforms

  - Various typo fixes in Pod or comments

0.2802 - Sun Dec 12 07:22:43 EST 2010


  - Incorporated another t/04-base.t fix from bleadperl
    [Chris Williams]

0.2801 - Wed Dec  8 21:36:56 EST 2010


  - Fixed spurious t/04-base.t failure when run from Perl core
    [David Golden]

0.2800 - Mon Dec  6 16:05:46 EST 2010

  - No changes from 0.27_07

0.27_07 - Wed Sep 29 21:48:55 EDT 2010


  - Fixed t/02-link.t on perl < 5.8

0.27_06 - Mon Sep 27 15:29:54 EDT 2010


  - Preserves exit status on VMS [Craig Berry]

  - Fix Win32 split_like_shell escaping [Christian Walde]

0.27_05 - Wed Jul 28 15:29:59 EDT 2010


  - Tests no longer fail if user has set the CC environment variable

0.27_04 - Mon Jul 26 22:41:43 EDT 2010

  - handle c compiler and c++ compiler separately
    (adds requirement for IPC::Cmd) [Jens Rehsack]

  - rely on File::Temp::tempfile and File::Spec::tmpdir to
    get unique file name for checking for compiler
    [Jens Rehsack]

  - Code base modernization and substantial code coverage improvments
    [Jim Keenan]

0.2703 - Tue Mar 16 17:10:55 EDT 2010

 Bugs fixed:
 - fixed tests for Windows and MSVC [Jan Dubois]

0.2702 - Mon Feb 22 15:10:52 EST 2010

 Bugs fixed:
 - compile() changes in 0.2701 did not work on Windows.  Now fixed.

0.2701 - Tue Feb 16 09:12:45 EST 2010

 Bugs fixed:
 - compile() now accepts both string & array for 'include_dirs'
   argument, as documented.(RT#54606) [Alberto Simões]

0.27 - Thu Oct 29 21:29:56 EDT 2009

 - Removed Build.PL to avoid creating a circular dependency
 - Added version numbers to Windows compiler driver modules

0.26_05 - Sun Oct 25 17:29:02 EDT 2009

 Bugs fixed:
 - Fixed t/02link.t failures on cygwin with Perl 5.8 [David Golden]

 - Made have_compiler (and have_cplusplus) quiet without echoing
   the test command to STDOUT [David Golden]

0.26_04 - Mon Oct 19 21:57:46 EDT 2009

 - Added 'have_cplusplus()' method to check for C++ support
 - Added patches for building Perl with mingw64 [Sisyphus]
 - Allow CC environment variable to override $Config{cc}

 Bugs fixed:
 - Fixed link executable command for Win32 MSVC (RT#40819) [Cosimo
 - Removed MSVC version check when embedding a manifest file
   (RT #43002) [Steve Hay]

 - Split Windows compiler driver packages into individual *.pm files

0.260301 - Sat Aug 29 11:04:41 EDT 2009

 Bugs fixed:
 - Fixed linking error on Win32 with gcc compiler (RT#49000)

0.2603 - Sat Jul 18 06:56:06 EDT 2009

 Bugs fixed:
 - Makefile.PL had wrong INSTALLDIRS setting for older Perls
   (RT#47985) [David Golden]

0.2602 - Sat Jul  4 10:57:12 EDT 2009

 Bugs fixed:
 - Fixed 00-have-compiler.t if $^X is a relative path [David Wheeler]

0.2601 - Wed Jul  1 09:37:39 EDT 2009

 Bugs fixed:
 - On VMS, cleans up extra files generated during testing
   [John E. Malmberg, Craig Berry]

0.26 - Mon Jun 29 20:11:52 EDT 2009

 - No changes from 0.25_01

0.25_01 - Sat Jun 27 23:13:20 EDT 2009

 - Changed test library to Test::More

 - Added tests for have_compiler

 - Skips tests that need a compiler if have_compiler is false

 - have_compiler will try to compile in the current directory
   if compiling in tmpdir fails for whatever reason

0.25 - Fri Jun 26 16:18:13 EDT 2009

 - Slight diagnostic improvements in link.t

0.24_01 - Sun Mar  8 14:50:10 2009

 - On Windows, don't generate "mt" command when CRT is statically
   linked. [Jan Dubois]

 - On Cygwin, examine $Config{useshrplib} to see whether we're
   supposed to be linking with a shared perl library or not. [Reini

 - In link_executable() on Cygwin, trust $Config{ld} rather than using
   $Config{cc} for linking. [Reini Urban]

 - Add 'haiku' as a Unix-like platform. [Ingo Weinhold]

0.24 - Fri Aug 15 22:01:48 2008

 - Added 'gnu' and 'gnukfreebsd' as Unix variants. [Niko Tyni]

 - Brought in some VMS fixes from bleadperl: "Correct and complete
   CBuilder's handling of external libraries when linking on VMS."
   [Craig Berry]

0.23 - Sat Apr 19 22:28:03 2008

 - Fixed some problems (some old, some new) with Strawberry Perl on
   Windows. [Alberto Simo~es]

 - Will now install in the core perl lib directory when the user's
   perl is new enough to have us in core. [Yi Ma Mao]

0.22 - Fri Feb  8 21:52:21 2008

 - Replaced the split_like_shell() method on Windows with a
   near-no-op, which is probably more correct and has the benefit of
   not messing up UNC paths. [John R. LoVerso, see]

 - Fixed extra_compiler_flags on Windows, they were being
   ignored. [Robert May]

0.21 - Tue Oct 30 06:46:01 2007

 - Clean up perl_src path using Cwd::realpath().  Only affects usage
   as part of the perl core.

 - Protect $., $@, $!, $^E, and $? from any clobbering that might
   occur in our DESTROY method. [Zefram]

 - From bleadperl, a patch to clean up debug symbol files (.pdb for
   VC++, .tds for BCC) when running have_compiler(). [Steve Hay &
   Steve Peters]

0.19 - Sun May 13 14:29:18 2007

 - When building as part of the perl core (so this is irrelevant for
   people downloading from CPAN) we now try a little harder to find
   the perl sources. [Jos Boumans]

 - Fixed a part of the manifest thingy that got broken on 64-bit
   Windows platforms in version 0.18. [Steve Hay, Jan Dubois]

0.18 - Mon Mar 26 21:29:09 2007

 - Various OS/2 fixes:
   + Put .LIB file near .DEF file
   + Got library-file building working better
   + Handled libperl_overrides better
   [Ilya Zakharevich]

 - On Windows: embed manifest files in DLLs built with Module-Build
   when using VC8. [Steve Hay]

 - Added a workaround for a config error on dec_osf: the linker is
   $Config{cc}, not $Config{ld}. [Jarkko Hietaniemi]

 - Borland's compiler "response files" will not pass through macro
   definitions that contain quotes. The quotes get stripped and there
   seems to be no way to escape them. So we leave macros on the
   command line. [Randy W. Sims]

0.18  Sat Mar 25 13:35:47 CST 2006

 - Yet more fixes for arg_defines() on VMS. [Craig A. Berry and John
   E. Malmberg]

0.17  Wed Mar 15 22:46:15 CST 2006

 - When we're being run from an uninstalled perl distribution
   (e.g. one that's in the process of being built and tested), we
   search for perl first in the current working directory. [Randy

 - More fixing of the arg_defines() method on VMS. [Craig A. Berry and
   John E. Malmberg]

0.16  Mon Mar 13 17:08:21 CST 2006

 - Fix quoting of command line arguments on Windows. [Yitzchak

 - Provided a custom arg_defines() on VMS that does essentially the
   same thing for /define that version 0.14 did for /include. [Craig
   A. Berry]

 - Documented the existing 'quiet' parameter, which silences the
   printing of system() commands. [Suggested by Yitzchak

0.15  Mon Oct  3 17:10:32 CDT 2005

 - Several OS/2 fixes have been made, including: 1) adding the
   necessary version string to DLLs, 2) passing the executable's name
   to 'ldopts' without the .exe extension, 3) avoiding calling 'env'
   via the 'shrpenv' thingy, since it triggers a fork() bug. [Ilya

 - Integrate a couple cleanup-related changes from bleadperl that
   somehow never got into this copy. [Steve Hay]

 - Added a new 'defines' parameter to compile(), which gives a
   platform-independent way to specify various -Dfoo=bar (or the
   equivalent) compiler defines. [Randy W. Sims]

0.14  Mon Sep 19 13:40:37 CDT 2005

 - Several fixes have been made for VMS, including: 1) there can only
   be one /include qualifier, so merge multiple /includes into one; 2)
   make sure the executable is named the same way that dynaloader will
   look for it; 3) make sure the option files for the exported symbols
   and the PERLSHR image are passed properly to the linker. [John
   E. Malmberg]

0.13  Wed Aug 24 20:05:59 CDT 2005

 - Several temporary files weren't being cleaned up during testing,
   because the 'cleanup' mechanism was never properly implemented.
   This is now fixed. [Steve Hay]

0.12  Mon May 30 16:40:10 CDT 2005

 - In order to integrate into the perl core, patches were contributed
   that a) put a $VERSION variable in each .pm file, b) add a 'quiet'
   parameter to new() to shut up some of the command-echoing, c)
   checks for the perl source headers in the CORE/ directory in the
   perl source tree, not in the post-installation location, and d)
   adjusts the CWD when running the regression tests under the perl
   core. [Yitzchak Scott-Thoennes]

 - Various parts of the code were looking for the CORE/ directory in
   $Config{archlib}, $Config{installarchlib}, and $Config{archlibexp}.
   Only the latter is correct, so we use that everywhere now.
   [Curt Tilmes]

 - For Unix-ish platforms, link_executable() will now prefer
   $Config{cc} to $Config{ld}, because that typically works
   better. [Jarkko Hietaniemi and H.Merijn Brand]

 - Prelinking (invoking ExtUtils::Mksymlists to create options-files)
   is now only done when we're building dynamic libraries. [Yitzchak

0.11  Tue Apr  5 20:58:41 CDT 2005

 - Added a licensing statement to [Spotted by Chip

0.10  Mon Mar 14 20:18:19 CST 2005

 - Split out a few simple routines that format how compile switches
   are formatted, so that we can override them for platforms like VMS
   where they're very different.

 - Fix compile() and link() on VMS. [Help from Michael Schwern and
   Peter Prymmer]

0.09  Tue Feb  8 17:57:41 CST 2005

 - Fixed a broken link_executable() method on cygwin - it now uses
   'gcc' instead of $Config{ld} for the linking, because the latter is
   actually a shell script which calls a perl script which calls gcc
   in a way that only works for creating shared libraries, not

0.08  Tue Jan 18 21:54:11 CST 2005

 - Fixed a testing error in which I had the prototype wrong for the
   main() function. [Jose Pedro Oliveira]

0.07  Wed Jan 12 21:50:34 CST 2005

 - Added the link_executable() method, which provides the ability to
   create standalone executables.  This is NOT yet implemented on
   Windows, and therefore the tests for it are skipped on Win32.
   [Alberto Manuel Brandao Simoes]

 - Integrated the latest split_like_shell() for Windows from
   Module::Build (really need to find a better home for this code...),
   which now does a much better job of handling quotes and backslashes
   and so on. [Randy Sims]

 - Fixed a couple of Windows problems related to the output-file name
   in link(), and some clobbering of the 'include_dirs' parameter to
   compile(). [Randy Sims]

0.06  Mon Dec 27 22:51:36 CST 2004

 - Fixed a bug on Unix environments in which our work-around for
   shell-commands like "FOO=BAR cc" (which is supposed to be turned
   into "env FOO=BAR cc" to actually work) wasn't being called.

0.05  Wed Oct 13 23:09:09 CDT 2004

 - Fixed a bug in split_like_shell() in which leading whitespace was
   creating an empty word, manifesting as something like "gcc - no
   such file or directory" during tests. [Spotted by Warren L. Dodge]

 - Incorporate another split_like_shell() fix from Module::Build.

0.04  Sun Oct 10 00:31:08 CDT 2004

 - Changed the split_like_shell() method to use the shellwords()
   function from Text::ParseWords (a core module since 5.0), which
   does a much better job than the split() we were using.

0.03  Fri May 14 23:12:23 CDT 2004

 - Fixed minor problems with the Build.PL file, the module names
   should be quoted.

 - The VMS module declared itself with the wrong package name.

0.02  Fri Feb 20 10:17:40 CST 2004

 - Fixed a bug in .../Platform/, in which compile() was
   ignoring an 'include_dirs' argument.  [Randy Sims]

 - Fixed a bug in .../Platform/, in which output files were
   being created in the root directory \ when they should be created
   in the current directory. [Randy Sims]

0.01  Mon Jan 12 08:12:35 CST 2004

 - Original release, taken from Module::Build's C-building code, with
   patching help from Randy Sims.