EXTUTILS::MM_WIN32(3pm)

πŸ’– ExtUtils::MM_Win32(3pm) πŸ’–

okay bestie, we're in the Perl Programmers Reference Guide and this is the ExtUtils::MM_Win32(3pm) page β€” the Windows-flavored override situation for ExtUtils::MakeMaker. πŸͺŸβœ¨ It's giving "same methods, but make it Win32," and we're keeping every single deet. πŸ’…

🌸 NAME 🌸

ExtUtils::MM_Win32 β€” methods to override UN*X behaviour in ExtUtils::MakeMaker. periodt. πŸ’–

✨ SYNOPSIS ✨

bestie, the usage is literally this, no cap:

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

🌸 DESCRIPTION 🌸

okay so for actual docs on all the methods, go see ExtUtils::MM_Unix for a documentation of the methods provided there. This package overrides the implementation of these methods, not the semantics. Same semantics, different implementation, that's the whole vibe. πŸ¦‹

πŸ’… Overridden methods πŸ’…

  • dlsyms β€” overridden; the page doesn't add extra deets for this one. πŸŽ€
  • xs_dlsyms_ext β€” on Win32, is .def. 🫢
  • replace_manpage_separator β€” changes the path separator with .. πŸŒ€
  • 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 β€” using \ for Windows, except for "gmake" where it is /. πŸͺŸ
  • init_tools β€” override some of the slower, portable commands with Windows specific ones. ⚑
  • 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 β€” add MM_Win32_VERSION. ✨
  • platform_constants β€” overridden; no extra deets here. πŸŽ€
  • specify_shell β€” set SHELL to $ENV{COMSPEC} only if make is type 'gmake'. 🐚
  • constants β€” add MAXLINELENGTH for dmake before all the constants are output. πŸ”’
  • dep_constants β€” makes dependencies that work for nmake. πŸ› οΈ
  • special_targets β€” add .USESHELL target for dmake. 🎯
  • static_lib_pure_cmd β€” defines how to run the archive utility. πŸ“¦
  • dynamic_lib β€” methods are overridden here: not dynamic_lib itself, but the utility ones that do the OS-specific work. 🧰
  • 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 β€” overridden; no extra deets here. πŸ”—
  • perl_script β€” checks for the perl program under several common perl extensions. πŸͺ
  • quote_dep β€” overridden; no extra deets here. πŸŽ€
  • xs_obj_opt β€” override to fixup -o flags for MSVC. πŸ› οΈ
  • pasthru β€” all we send is -nologo to nmake to prevent it from printing its damned banner. 😀
  • arch_check (override) β€” normalize all arguments for consistency of comparison. βš–οΈ
  • oneliner β€” these are based on what command.com does on Win98. They may be wrong for other Windows shells, I don't know. πŸ™ˆ
  • 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 β€” nmake 1.50 limits command length to 2048 characters. πŸ“
  • os_flavor β€” Windows is Win32. πŸͺŸ
  • dbgoutflag β€” returns a CC flag that tells the CC to emit a separate debugging symbol file when compiling an object file. 🐞
  • 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 β€” returns a suitable string describing the type of makefile being written. πŸ“

πŸ’Œ final sign-off, bestie: source/version is perl v5.42.3, date is 2026-11-03, and yes this is ExtUtils::MM_Win32(3pm) β€” slay. πŸ’…

πŸ“¦ where this page comes from