ExtUtils::MM\_Win32(3pm) Perl Programmers Reference Guide ExtUtils::MM\_Win32(3pm)

# [NAME](#NAME)

ExtUtils::MM\_Win32 - methods to override UN\*X behaviour in ExtUtils::MakeMaker

# [SYNOPSIS](#SYNOPSIS)

```
 use ExtUtils::MM_Win32; # Done internally by ExtUtils::MakeMaker if needed
```

# [DESCRIPTION](#DESCRIPTION)

See ExtUtils::MM\_Unix for a documentation of the methods provided there. This package overrides the implementation of these methods, not the semantics.

## [Overridden methods](#Overridden_methods)

[**dlsyms**](#dlsyms)

[xs\_dlsyms\_ext](#xs_dlsyms_ext)

On Win32, is ".def".

[replace\_manpage\_separator](#replace_manpage_separator)

Changes the path separator with .

[**maybe\_command**](#maybe_command)

Since Windows has nothing as simple as an executable bit, we check the file extension.

The PATHEXT env variable will be used to get a list of extensions that might indicate a command, otherwise .com, .exe, .bat and .cmd will be used by default.

[**init\_DIRFILESEP**](#init_DIRFILESEP)

Using \\ for Windows, except for "gmake" where it is /.

[init\_tools](#init_tools)

Override some of the slower, portable commands with Windows specific ones.

[init\_others](#init_others)

Override the default link and compile tools.

LDLOADLIBS's default is changed to $Config{libs}.

Adjustments are made for Borland's quirks needing -L to come first.

[init\_platform](#init_platform)

Add MM\_Win32\_VERSION.

[platform\_constants](#platform_constants)

[specify\_shell](#specify_shell)

Set SHELL to $ENV{COMSPEC} only if make is type 'gmake'.

[constants](#constants)

Add MAXLINELENGTH for dmake before all the constants are output.

[dep\_constants](#dep_constants)

Makes dependencies that work for nmake.

[special\_targets](#special_targets)

Add .USESHELL target for dmake.

[static\_lib\_pure\_cmd](#static_lib_pure_cmd)

Defines how to run the archive utility

[dynamic\_lib](#dynamic_lib)

Methods are overridden here: not dynamic\_lib itself, but the utility ones that do the OS-specific work.

[extra\_clean\_files](#extra_clean_files)

Clean out some extra dll.{base,exp} files which might be generated by gcc. Otherwise, take out all \*.pdb files.

[init\_linker](#init_linker)

[perl\_script](#perl_script)

Checks for the perl program under several common perl extensions.

[quote\_dep](#quote_dep)

[xs\_obj\_opt](#xs_obj_opt)

Override to fixup -o flags for MSVC.

[pasthru](#pasthru)

All we send is -nologo to nmake to prevent it from printing its damned banner.

[arch\_check (override)](#arch_check)

Normalize all arguments for consistency of comparison.

[oneliner](#oneliner)

These are based on what command.com does on Win98. They may be wrong for other Windows shells, I don't know.

[cd](#cd)

dmake can handle Unix style cd'ing but nmake (at least 1.5) cannot. It wants:

```
    cd dir1\dir2
    command
    another_command
    cd ..\..
    
```

[max\_exec\_len](#max_exec_len)

nmake 1.50 limits command length to 2048 characters.

[os\_flavor](#os_flavor)

Windows is Win32.

[dbgoutflag](#dbgoutflag)

Returns a CC flag that tells the CC to emit a separate debugging symbol file when compiling an object file.

[cflags](#cflags)

Defines the PERLDLL symbol if we are configured for static building since all code destined for the perl5xx.dll must be compiled with the PERLDLL symbol defined.

[make\_type](#make_type)

Returns a suitable string describing the type of makefile being written.

2026-10-27 perl v5.44.0

---

Document: ExtUtils::MM_Win32(3pm) from perl 5.44.0-r4 (Chainguard OS)
Source: https://github.com/Perl/perl5.git
