home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / win32 / makefile.mk < prev    next >
Makefile  |  2000-03-22  |  36KB  |  1,303 lines

  1. #
  2. # Makefile to build perl on Windows NT using DMAKE.
  3. # Supported compilers:
  4. #    Visual C++ 2.0 thro 6.0
  5. #    Borland C++ 5.02
  6. #    Mingw32 with gcc-2.95.2 or better  **experimental**
  7. #
  8. # This is set up to build a perl.exe that runs off a shared library
  9. # (perl56.dll).  Also makes individual DLLs for the XS extensions.
  10. #
  11.  
  12. ##
  13. ## Make sure you read README.win32 *before* you mess with anything here!
  14. ##
  15.  
  16. ##
  17. ## Build configuration.  Edit the values below to suit your needs.
  18. ##
  19.  
  20. #
  21. # Set these to wherever you want "dmake install" to put your
  22. # newly built perl.
  23. #
  24. INST_DRV    *= c:
  25. INST_TOP    *= $(INST_DRV)\perl
  26.  
  27. #
  28. # Comment this out if you DON'T want your perl installation to be versioned.
  29. # This means that the new installation will overwrite any files from the
  30. # old installation at the same INST_TOP location.  Leaving it enabled is
  31. # the safest route, as perl adds the extra version directory to all the
  32. # locations it installs files to.  If you disable it, an alternative
  33. # versioned installation can be obtained by setting INST_TOP above to a
  34. # path that includes an arbitrary version string.
  35. #
  36. INST_VER    *= \5.6.0
  37.  
  38. #
  39. # Comment this out if you DON'T want your perl installation to have
  40. # architecture specific components.  This means that architecture-
  41. # specific files will be installed along with the architecture-neutral
  42. # files.  Leaving it enabled is safer and more flexible, in case you
  43. # want to build multiple flavors of perl and install them together in
  44. # the same location.  Commenting it out gives you a simpler
  45. # installation that is easier to understand for beginners.
  46. #
  47. INST_ARCH    *= \$(ARCHNAME)
  48.  
  49. #
  50. # uncomment to enable multiple interpreters.  This is need for fork()
  51. # emulation.
  52. #
  53. #USE_MULTI    *= define
  54.  
  55. #
  56. # Beginnings of interpreter cloning/threads; still very incomplete.
  57. # This should be enabled to get the fork() emulation.  This needs
  58. # USE_MULTI as well.
  59. #
  60. #USE_ITHREADS    *= define
  61.  
  62. #
  63. # uncomment to enable the implicit "host" layer for all system calls
  64. # made by perl.  This needs USE_MULTI above.  This is also needed to
  65. # get fork().
  66. #
  67. #USE_IMP_SYS    *= define
  68.  
  69. #
  70. # WARNING! This option is deprecated and will eventually go away (enable
  71. # USE_ITHREADS instead).
  72. #
  73. # uncomment to enable threads-capabilities.  This is incompatible with
  74. # USE_ITHREADS, and is only here for people who may have come to rely
  75. # on the experimental Thread support that was in 5.005.
  76. #
  77. #USE_5005THREADS    *= define
  78.  
  79. #
  80. # WARNING! This option is deprecated and will eventually go away (enable
  81. # USE_MULTI instead).
  82. #
  83. # uncomment next line if you want to use the PERL_OBJECT build option.
  84. # DO NOT ENABLE unless you have legacy code that relies on the C++
  85. # CPerlObj class that was available in 5.005.  This cannot be enabled
  86. # if you ask for USE_5005THREADS above.
  87. #
  88. #USE_OBJECT    *= define
  89.  
  90. #
  91. # uncomment exactly one of the following
  92. # Visual C++ 2.x
  93. #CCTYPE        *= MSVC20
  94. # Visual C++ > 2.x and < 6.x
  95. #CCTYPE        *= MSVC
  96. # Visual C++ >= 6.x
  97. #CCTYPE        *= MSVC60
  98. # Borland 5.02 or later
  99. #CCTYPE        *= BORLAND
  100. # mingw32+gcc-2.95.2 or better
  101. CCTYPE        *= GCC
  102.  
  103. #
  104. # uncomment this if you are compiling under Windows 95/98 and command.com
  105. # (not needed if you're running under 4DOS/NT 6.01 or later)
  106. #IS_WIN95    *= define
  107.  
  108. #
  109. # uncomment next line if you want debug version of perl (big,slow)
  110. # If not enabled, we automatically try to use maximum optimization
  111. # with all compilers that are known to have a working optimizer.
  112. #
  113. #CFG        *= Debug
  114.  
  115. #
  116. # uncomment to enable use of PerlCRT.DLL when using the Visual C compiler.
  117. # It has patches that fix known bugs in older versions of MSVCRT.DLL.
  118. # This currently requires VC 5.0 with Service Pack 3 or later.
  119. # Get it from CPAN at http://www.perl.com/CPAN/authors/id/D/DO/DOUGL/
  120. # and follow the directions in the package to install.
  121. #
  122. # Not recommended if you have VC 6.x and you're not running Windows 9x.
  123. #
  124. #USE_PERLCRT    *= define
  125.  
  126. #
  127. # uncomment to enable linking with setargv.obj under the Visual C
  128. # compiler. Setting this options enables perl to expand wildcards in
  129. # arguments, but it may be harder to use alternate methods like
  130. # File::DosGlob that are more powerful.  This option is supported only with
  131. # Visual C.
  132. #
  133. #USE_SETARGV    *= define
  134.  
  135. #
  136. # if you have the source for des_fcrypt(), uncomment this and make sure the
  137. # file exists (see README.win32).  File should be located in the same
  138. # directory as this file.
  139. #
  140. #CRYPT_SRC    *= fcrypt.c
  141.  
  142. #
  143. # if you didn't set CRYPT_SRC and if you have des_fcrypt() available in a
  144. # library, uncomment this, and make sure the library exists (see README.win32)
  145. # Specify the full pathname of the library.
  146. #
  147. #CRYPT_LIB    *= fcrypt.lib
  148.  
  149. #
  150. # set this if you wish to use perl's malloc
  151. # WARNING: Turning this on/off WILL break binary compatibility with extensions
  152. # you may have compiled with/without it.  Be prepared to recompile all
  153. # extensions if you change the default.  Currently, this cannot be enabled
  154. # if you ask for USE_IMP_SYS above.
  155. #
  156. #PERL_MALLOC    *= define
  157.  
  158. #
  159. # set the install locations of the compiler include/libraries
  160. # Running VCVARS32.BAT is *required* when using Visual C.
  161. # Some versions of Visual C don't define MSVCDIR in the environment,
  162. # so you may have to set CCHOME explicitly (spaces in the path name should
  163. # not be quoted)
  164. #
  165. #CCHOME        *= c:\bc5
  166. #CCHOME        *= $(MSVCDIR)
  167. CCHOME        *= c:\gcc-2.95.2-msvcrt
  168. CCINCDIR    *= $(CCHOME)\include
  169. CCLIBDIR    *= $(CCHOME)\lib
  170.  
  171. #
  172. # Additional compiler flags can be specified here.
  173. #
  174.  
  175. #
  176. # This should normally be disabled.  Adding -DPERL_POLLUTE enables support
  177. # for old symbols by default, at the expense of extreme pollution.  You most
  178. # probably just want to build modules that won't compile with
  179. #         perl Makefile.PL POLLUTE=1
  180. # instead of enabling this.  Please report such modules to the respective
  181. # authors.
  182. #
  183. #BUILDOPT    += -DPERL_POLLUTE
  184.  
  185. #
  186. # This should normally be disabled.  Enabling it will disable the File::Glob
  187. # implementation of CORE::glob.
  188. #
  189. #BUILDOPT    += -DPERL_EXTERNAL_GLOB
  190.  
  191. #
  192. # This should normally be disabled.  Enabling it causes perl to read scripts
  193. # in text mode (which is the 5.005 behavior) and will break ByteLoader.
  194. #BUILDOPT    += -DPERL_TEXTMODE_SCRIPTS
  195.  
  196. #
  197. # specify semicolon-separated list of extra directories that modules will
  198. # look for libraries (spaces in path names need not be quoted)
  199. #
  200. EXTRALIBDIRS    *=
  201.  
  202. #
  203. # set this to point to cmd.exe (only needed if you use some
  204. # alternate shell that doesn't grok cmd.exe style commands)
  205. #
  206. #SHELL        *= g:\winnt\system32\cmd.exe
  207.  
  208. #
  209. # set this to your email address (perl will guess a value from
  210. # from your loginname and your hostname, which may not be right)
  211. #
  212. #EMAIL        *=
  213.  
  214. ##
  215. ## Build configuration ends.
  216. ##
  217.  
  218. ##################### CHANGE THESE ONLY IF YOU MUST #####################
  219.  
  220. .IF "$(CRYPT_SRC)$(CRYPT_LIB)" == ""
  221. D_CRYPT        = undef
  222. .ELSE
  223. D_CRYPT        = define
  224. CRYPT_FLAG    = -DHAVE_DES_FCRYPT
  225. .ENDIF
  226.  
  227. .IF "$(USE_OBJECT)" == "define"
  228. PERL_MALLOC    != undef
  229. USE_5005THREADS    != undef
  230. USE_MULTI    != undef
  231. USE_IMP_SYS    != define
  232. .ENDIF
  233.  
  234. PERL_MALLOC    *= undef
  235.  
  236. USE_5005THREADS    *= undef
  237.  
  238. .IF "$(USE_5005THREADS)" == "define"
  239. USE_ITHREADS    != undef
  240. .ENDIF
  241.  
  242. .IF "$(USE_IMP_SYS)" == "define"
  243. PERL_MALLOC    != undef
  244. .ENDIF
  245.  
  246. USE_MULTI    *= undef
  247. USE_OBJECT    *= undef
  248. USE_ITHREADS    *= undef
  249. USE_IMP_SYS    *= undef
  250. USE_PERLCRT    *= undef
  251.  
  252. .IF "$(USE_IMP_SYS)$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" == "defineundefundefundef"
  253. USE_MULTI    != define
  254. .ENDIF
  255.  
  256. .IF "$(USE_ITHREADS)$(USE_MULTI)$(USE_OBJECT)" == "defineundefundef"
  257. USE_MULTI    != define
  258. USE_5005THREADS    != undef
  259. .ENDIF
  260.  
  261. .IF "$(USE_MULTI)$(USE_5005THREADS)$(USE_OBJECT)" != "undefundefundef"
  262. BUILDOPT    += -DPERL_IMPLICIT_CONTEXT
  263. .ENDIF
  264.  
  265. .IF "$(USE_IMP_SYS)" != "undef"
  266. BUILDOPT    += -DPERL_IMPLICIT_SYS
  267. .ENDIF
  268.  
  269. .IMPORT .IGNORE : PROCESSOR_ARCHITECTURE
  270.  
  271. PROCESSOR_ARCHITECTURE *= x86
  272.  
  273. .IF "$(USE_OBJECT)" == "define"
  274. ARCHNAME    = MSWin32-$(PROCESSOR_ARCHITECTURE)-object
  275. .ELIF "$(USE_5005THREADS)" == "define"
  276. ARCHNAME    = MSWin32-$(PROCESSOR_ARCHITECTURE)-thread
  277. .ELIF "$(USE_MULTI)" == "define"
  278. ARCHNAME    = MSWin32-$(PROCESSOR_ARCHITECTURE)-multi
  279. .ELSE
  280. ARCHNAME    = MSWin32-$(PROCESSOR_ARCHITECTURE)
  281. .ENDIF
  282.  
  283. .IF "$(USE_ITHREADS)" == "define"
  284. ARCHNAME    !:= $(ARCHNAME)-thread
  285. .ENDIF
  286.  
  287. # Visual Studio 98 specific
  288. .IF "$(CCTYPE)" == "MSVC60"
  289.  
  290. # VC 6.0 can load the socket dll on demand.  Makes the test suite
  291. # run in about 10% less time.
  292. DELAYLOAD    *= -DELAYLOAD:wsock32.dll -DELAYLOAD:shell32.dll delayimp.lib 
  293.  
  294. # VC 6.0 seems capable of compiling perl correctly with optimizations
  295. # enabled.  Anything earlier fails tests.
  296. CFG        *= Optimize
  297. .ENDIF
  298.  
  299. ARCHDIR        = ..\lib\$(ARCHNAME)
  300. COREDIR        = ..\lib\CORE
  301. AUTODIR        = ..\lib\auto
  302. LIBDIR        = ..\lib
  303. EXTDIR        = ..\ext
  304. PODDIR        = ..\pod
  305. EXTUTILSDIR    = $(LIBDIR)\ExtUtils
  306.  
  307. #
  308. INST_SCRIPT    = $(INST_TOP)$(INST_VER)\bin
  309. INST_BIN    = $(INST_SCRIPT)$(INST_ARCH)
  310. INST_LIB    = $(INST_TOP)$(INST_VER)\lib
  311. INST_ARCHLIB    = $(INST_LIB)$(INST_ARCH)
  312. INST_COREDIR    = $(INST_ARCHLIB)\CORE
  313. INST_POD    = $(INST_LIB)\pod
  314. INST_HTML    = $(INST_POD)\html
  315.  
  316. #
  317. # Programs to compile, build .lib files and link
  318. #
  319.  
  320. .USESHELL :
  321.  
  322. .IF "$(CCTYPE)" == "BORLAND"
  323.  
  324. CC        = bcc32
  325. LINK32        = tlink32
  326. LIB32        = tlib /P128
  327. IMPLIB        = implib -c
  328. RSC        = rc
  329.  
  330. #
  331. # Options
  332. #
  333. INCLUDES    = -I$(COREDIR) -I.\include -I. -I.. -I"$(CCINCDIR)"
  334. #PCHFLAGS    = -H -Hc -H=c:\temp\bcmoduls.pch 
  335. DEFINES        = -DWIN32 $(CRYPT_FLAG)
  336. LOCDEFS        = -DPERLDLL -DPERL_CORE
  337. SUBSYS        = console
  338. CXX_FLAG    = -P
  339.  
  340. LIBC        = cw32mti.lib
  341. LIBFILES    = $(CRYPT_LIB) import32.lib $(LIBC) odbc32.lib odbccp32.lib
  342.  
  343. .IF  "$(CFG)" == "Debug"
  344. OPTIMIZE    = -v -D_RTLDLL -DDEBUGGING
  345. LINK_DBG    = -v
  346. .ELSE
  347. OPTIMIZE    = -O2 -D_RTLDLL
  348. LINK_DBG    = 
  349. .ENDIF
  350.  
  351. CFLAGS        = -w -g0 -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \
  352.         $(PCHFLAGS) $(OPTIMIZE)
  353. LINK_FLAGS    = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
  354. OBJOUT_FLAG    = -o
  355. EXEOUT_FLAG    = -e
  356. LIBOUT_FLAG    = 
  357.  
  358. .ELIF "$(CCTYPE)" == "GCC"
  359.  
  360. CC        = gcc
  361. LINK32        = gcc
  362. LIB32        = ar rc
  363. IMPLIB        = dlltool
  364. RSC        = rc
  365.  
  366. o = .o
  367. a = .a
  368.  
  369. #
  370. # Options
  371. #
  372.  
  373. INCLUDES    = -I$(COREDIR) -I.\include -I. -I..
  374. DEFINES        = -DWIN32 $(CRYPT_FLAG)
  375. LOCDEFS        = -DPERLDLL -DPERL_CORE
  376. SUBSYS        = console
  377. CXX_FLAG    = -xc++
  378.  
  379. LIBC        = -lmsvcrt
  380.  
  381. # same libs as MSVC
  382. LIBFILES    = $(CRYPT_LIB) $(LIBC) \
  383.           -lmoldname -lkernel32 -luser32 -lgdi32 \
  384.           -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 \
  385.           -loleaut32 -lnetapi32 -luuid -lwsock32 -lmpr \
  386.           -lwinmm -lversion -lodbc32
  387.  
  388. .IF  "$(CFG)" == "Debug"
  389. OPTIMIZE    = -g -DDEBUGGING
  390. LINK_DBG    = -g
  391. .ELSE
  392. OPTIMIZE    = -g -O2
  393. LINK_DBG    = 
  394. .ENDIF
  395.  
  396. CFLAGS        = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE)
  397. LINK_FLAGS    = $(LINK_DBG) -L"$(INST_COREDIR)" -L"$(CCLIBDIR)"
  398. OBJOUT_FLAG    = -o
  399. EXEOUT_FLAG    = -o
  400. LIBOUT_FLAG    = 
  401.  
  402. # NOTE: we assume that GCC uses MSVCRT.DLL
  403. BUILDOPT    += -fno-strict-aliasing -DPERL_MSVCRT_READFIX
  404.  
  405. .ELSE
  406.  
  407. CC        = cl
  408. LINK32        = link
  409. LIB32        = $(LINK32) -lib
  410. RSC        = rc
  411.  
  412. #
  413. # Options
  414. #
  415.  
  416. INCLUDES    = -I$(COREDIR) -I.\include -I. -I..
  417. #PCHFLAGS    = -Fpc:\temp\vcmoduls.pch -YX 
  418. DEFINES        = -DWIN32 -D_CONSOLE -DNO_STRICT $(CRYPT_FLAG)
  419. LOCDEFS        = -DPERLDLL -DPERL_CORE
  420. SUBSYS        = console
  421. CXX_FLAG    = -TP -GX
  422.  
  423. .IF "$(USE_PERLCRT)" != "define"
  424. LIBC    = msvcrt.lib
  425. .ELSE
  426. LIBC    = PerlCRT.lib
  427. .ENDIF
  428.  
  429. PERLEXE_RES    =
  430. PERLDLL_RES    =
  431.  
  432. .IF  "$(CFG)" == "Debug"
  433. .IF "$(CCTYPE)" == "MSVC20"
  434. OPTIMIZE    = -Od -MD -Z7 -DDEBUGGING
  435. .ELSE
  436. OPTIMIZE    = -Od -MD -Zi -DDEBUGGING
  437. .ENDIF
  438. LINK_DBG    = -debug -pdb:none
  439. .ELSE
  440. .IF "$(CFG)" == "Optimize"
  441. # -O1 yields smaller code, which turns out to be faster than -O2
  442. #OPTIMIZE    = -O2 -MD -DNDEBUG
  443. OPTIMIZE    = -O1 -MD -DNDEBUG
  444. .ELSE
  445. OPTIMIZE    = -Od -MD -DNDEBUG
  446. .ENDIF
  447. LINK_DBG    = -release
  448. .ENDIF
  449.  
  450. LIBBASEFILES    = $(CRYPT_LIB) \
  451.         oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib \
  452.         comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \
  453.         netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib \
  454.         version.lib odbc32.lib odbccp32.lib
  455.  
  456. # we add LIBC here, since we may be using PerlCRT.dll
  457. LIBFILES    = $(LIBBASEFILES) $(LIBC)
  458.  
  459. CFLAGS        = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
  460.         $(PCHFLAGS) $(OPTIMIZE)
  461. LINK_FLAGS    = -nologo -nodefaultlib $(LINK_DBG) \
  462.         -libpath:"$(INST_COREDIR)" \
  463.         -machine:$(PROCESSOR_ARCHITECTURE)
  464. OBJOUT_FLAG    = -Fo
  465. EXEOUT_FLAG    = -Fe
  466. LIBOUT_FLAG    = /out:
  467.  
  468. .IF "$(USE_PERLCRT)" != "define"
  469. BUILDOPT    += -DPERL_MSVCRT_READFIX
  470. .ENDIF
  471.  
  472. .ENDIF
  473.  
  474. .IF "$(USE_OBJECT)" == "define"
  475. OPTIMIZE    += $(CXX_FLAG)
  476. BUILDOPT    += -DPERL_OBJECT
  477. .ENDIF
  478.  
  479. CFLAGS_O    = $(CFLAGS) $(BUILDOPT)
  480.  
  481. # used to allow local linking flags that are not propogated into Config.pm,
  482. # currently unused
  483. #   -- BKS, 12-12-1999
  484. PRIV_LINK_FLAGS    *=
  485. BLINK_FLAGS    = $(PRIV_LINK_FLAGS) $(LINK_FLAGS)
  486.  
  487. #################### do not edit below this line #######################
  488. ############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
  489.  
  490. o *= .obj
  491. a *= .lib
  492.  
  493. LKPRE        = INPUT (
  494. LKPOST        = )
  495.  
  496. #
  497. # Rules
  498.  
  499. .SUFFIXES : .c $(o) .dll $(a) .exe .rc .res
  500.  
  501. .c$(o):
  502.     $(CC) -c $(null,$(<:d) $(NULL) -I$(<:d)) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $<
  503.  
  504. .y.c:
  505.     $(NOOP)
  506.  
  507. $(o).dll:
  508. .IF "$(CCTYPE)" == "BORLAND"
  509.     $(LINK32) -Tpd -ap $(BLINK_FLAGS) c0d32$(o) $<,$@,,$(LIBFILES),$(*B).def
  510.     $(IMPLIB) $(*B).lib $@
  511. .ELIF "$(CCTYPE)" == "GCC"
  512.     $(LINK32) -o $@ $(BLINK_FLAGS) $< $(LIBFILES)
  513.     $(IMPLIB) --input-def $(*B).def --output-lib $(*B).a $@
  514. .ELSE
  515.     $(LINK32) -dll -subsystem:windows -implib:$(*B).lib -def:$(*B).def \
  516.         -out:$@ $(BLINK_FLAGS) $(LIBFILES) $< $(LIBPERL)  
  517. .ENDIF
  518.  
  519. .rc.res:
  520.     $(RSC) -i.. $<
  521.  
  522. #
  523. # various targets
  524. MINIPERL    = ..\miniperl.exe
  525. MINIDIR        = .\mini
  526. PERLEXE        = ..\perl.exe
  527. WPERLEXE    = ..\wperl.exe
  528. GLOBEXE        = ..\perlglob.exe
  529. CONFIGPM    = ..\lib\Config.pm
  530. MINIMOD        = ..\lib\ExtUtils\Miniperl.pm
  531. X2P        = ..\x2p\a2p.exe
  532.  
  533. PL2BAT        = bin\pl2bat.pl
  534. GLOBBAT        = bin\perlglob.bat
  535.  
  536. UTILS        =            \
  537.         ..\utils\h2ph        \
  538.         ..\utils\splain        \
  539.         ..\utils\dprofpp    \
  540.         ..\utils\perlbug    \
  541.         ..\utils\pl2pm         \
  542.         ..\utils\c2ph        \
  543.         ..\utils\h2xs        \
  544.         ..\utils\perldoc    \
  545.         ..\utils\perlcc        \
  546.         ..\pod\checkpods    \
  547.         ..\pod\pod2html        \
  548.         ..\pod\pod2latex    \
  549.         ..\pod\pod2man        \
  550.         ..\pod\pod2text        \
  551.         ..\pod\pod2usage    \
  552.         ..\pod\podchecker    \
  553.         ..\pod\podselect    \
  554.         ..\x2p\find2perl    \
  555.         ..\x2p\s2p        \
  556.         bin\exetype.pl        \
  557.         bin\runperl.pl        \
  558.         bin\pl2bat.pl        \
  559.         bin\perlglob.pl        \
  560.         bin\search.pl
  561.  
  562. .IF "$(CCTYPE)" == "BORLAND"
  563.  
  564. CFGSH_TMPL    = config.bc
  565. CFGH_TMPL    = config_H.bc
  566.  
  567. .ELIF "$(CCTYPE)" == "GCC"
  568.  
  569. CFGSH_TMPL    = config.gc
  570. CFGH_TMPL    = config_H.gc
  571. PERLIMPLIB    = ..\libperl56$(a)
  572.  
  573. .ELSE
  574.  
  575. CFGSH_TMPL    = config.vc
  576. CFGH_TMPL    = config_H.vc
  577.  
  578. .ENDIF
  579.  
  580. PERLIMPLIB    *= ..\perl56$(a)
  581. PERLDLL        = ..\perl56.dll
  582.  
  583. XCOPY        = xcopy /f /r /i /d
  584. RCOPY        = xcopy /f /r /i /e /d
  585. NOOP        = @echo
  586.  
  587. #
  588. # filenames given to xsubpp must have forward slashes (since it puts
  589. # full pathnames in #line strings)
  590. XSUBPP        = ..\$(MINIPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
  591.         -C++ -prototypes
  592.  
  593. MICROCORE_SRC    =        \
  594.         ..\av.c        \
  595.         ..\deb.c    \
  596.         ..\doio.c    \
  597.         ..\doop.c    \
  598.         ..\dump.c    \
  599.         ..\globals.c    \
  600.         ..\gv.c        \
  601.         ..\hv.c        \
  602.         ..\mg.c        \
  603.         ..\op.c        \
  604.         ..\perl.c    \
  605.         ..\perlapi.c    \
  606.         ..\perly.c    \
  607.         ..\pp.c        \
  608.         ..\pp_ctl.c    \
  609.         ..\pp_hot.c    \
  610.         ..\pp_sys.c    \
  611.         ..\regcomp.c    \
  612.         ..\regexec.c    \
  613.         ..\run.c    \
  614.         ..\scope.c    \
  615.         ..\sv.c        \
  616.         ..\taint.c    \
  617.         ..\toke.c    \
  618.         ..\universal.c    \
  619.         ..\utf8.c    \
  620.         ..\util.c    \
  621.         ..\xsutils.c
  622.  
  623. EXTRACORE_SRC    += perllib.c
  624.  
  625. .IF "$(PERL_MALLOC)" == "define"
  626. EXTRACORE_SRC    += ..\malloc.c
  627. .ENDIF
  628.  
  629. .IF "$(USE_OBJECT)" != "define"
  630. EXTRACORE_SRC    += ..\perlio.c
  631. .ENDIF
  632.  
  633. WIN32_SRC    =        \
  634.         .\win32.c    \
  635.         .\win32sck.c    \
  636.         .\win32thread.c 
  637.  
  638. .IF "$(CRYPT_SRC)" != ""
  639. WIN32_SRC    += .\$(CRYPT_SRC)
  640. .ENDIF
  641.  
  642. DLL_SRC        = $(DYNALOADER).c
  643.  
  644. X2P_SRC        =        \
  645.         ..\x2p\a2p.c    \
  646.         ..\x2p\hash.c    \
  647.         ..\x2p\str.c    \
  648.         ..\x2p\util.c    \
  649.         ..\x2p\walk.c
  650.  
  651. CORE_NOCFG_H    =        \
  652.         ..\av.h        \
  653.         ..\cop.h    \
  654.         ..\cv.h        \
  655.         ..\dosish.h    \
  656.         ..\embed.h    \
  657.         ..\form.h    \
  658.         ..\gv.h        \
  659.         ..\handy.h    \
  660.         ..\hv.h        \
  661.         ..\iperlsys.h    \
  662.         ..\mg.h        \
  663.         ..\nostdio.h    \
  664.         ..\op.h        \
  665.         ..\opcode.h    \
  666.         ..\perl.h    \
  667.         ..\perlapi.h    \
  668.         ..\perlsdio.h    \
  669.         ..\perlsfio.h    \
  670.         ..\perly.h    \
  671.         ..\pp.h        \
  672.         ..\proto.h    \
  673.         ..\regexp.h    \
  674.         ..\scope.h    \
  675.         ..\sv.h        \
  676.         ..\thread.h    \
  677.         ..\unixish.h    \
  678.         ..\utf8.h    \
  679.         ..\util.h    \
  680.         ..\warnings.h    \
  681.         ..\XSUB.h    \
  682.         ..\EXTERN.h    \
  683.         ..\perlvars.h    \
  684.         ..\intrpvar.h    \
  685.         ..\thrdvar.h    \
  686.         .\include\dirent.h    \
  687.         .\include\netdb.h    \
  688.         .\include\sys\socket.h    \
  689.         .\win32.h
  690.  
  691. CORE_H        = $(CORE_NOCFG_H) .\config.h
  692.  
  693. MICROCORE_OBJ    = $(MICROCORE_SRC:db:+$(o))
  694. CORE_OBJ    = $(MICROCORE_OBJ) $(EXTRACORE_SRC:db:+$(o))
  695. WIN32_OBJ    = $(WIN32_SRC:db:+$(o))
  696. MINICORE_OBJ    = $(MINIDIR)\{$(MICROCORE_OBJ:f) miniperlmain$(o) perlio$(o)}
  697. MINIWIN32_OBJ    = $(MINIDIR)\{$(WIN32_OBJ:f)}
  698. MINI_OBJ    = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
  699. DLL_OBJ        = $(DLL_SRC:db:+$(o))
  700. X2P_OBJ        = $(X2P_SRC:db:+$(o))
  701.  
  702. PERLDLL_OBJ    = $(CORE_OBJ)
  703. PERLEXE_OBJ    = perlmain$(o)
  704.  
  705. PERLDLL_OBJ    += $(WIN32_OBJ) $(DLL_OBJ)
  706.  
  707. .IF "$(USE_SETARGV)" != ""
  708. SETARGV_OBJ    = setargv$(o)
  709. .ENDIF
  710.  
  711. DYNAMIC_EXT    = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B re \
  712.         Data/Dumper Devel/Peek ByteLoader Devel/DProf File/Glob \
  713.         Sys/Hostname
  714. STATIC_EXT    = DynaLoader
  715. NONXS_EXT    = Errno
  716.  
  717. DYNALOADER    = $(EXTDIR)\DynaLoader\DynaLoader
  718. SOCKET        = $(EXTDIR)\Socket\Socket
  719. FCNTL        = $(EXTDIR)\Fcntl\Fcntl
  720. OPCODE        = $(EXTDIR)\Opcode\Opcode
  721. SDBM_FILE    = $(EXTDIR)\SDBM_File\SDBM_File
  722. IO        = $(EXTDIR)\IO\IO
  723. POSIX        = $(EXTDIR)\POSIX\POSIX
  724. ATTRS        = $(EXTDIR)\attrs\attrs
  725. THREAD        = $(EXTDIR)\Thread\Thread
  726. B        = $(EXTDIR)\B\B
  727. RE        = $(EXTDIR)\re\re
  728. DUMPER        = $(EXTDIR)\Data\Dumper\Dumper
  729. ERRNO        = $(EXTDIR)\Errno\Errno
  730. PEEK        = $(EXTDIR)\Devel\Peek\Peek
  731. BYTELOADER    = $(EXTDIR)\ByteLoader\ByteLoader
  732. DPROF        = $(EXTDIR)\Devel\DProf\DProf
  733. GLOB        = $(EXTDIR)\File\Glob\Glob
  734. HOSTNAME    = $(EXTDIR)\Sys\Hostname\Hostname
  735.  
  736. SOCKET_DLL    = $(AUTODIR)\Socket\Socket.dll
  737. FCNTL_DLL    = $(AUTODIR)\Fcntl\Fcntl.dll
  738. OPCODE_DLL    = $(AUTODIR)\Opcode\Opcode.dll
  739. SDBM_FILE_DLL    = $(AUTODIR)\SDBM_File\SDBM_File.dll
  740. IO_DLL        = $(AUTODIR)\IO\IO.dll
  741. POSIX_DLL    = $(AUTODIR)\POSIX\POSIX.dll
  742. ATTRS_DLL    = $(AUTODIR)\attrs\attrs.dll
  743. THREAD_DLL    = $(AUTODIR)\Thread\Thread.dll
  744. B_DLL        = $(AUTODIR)\B\B.dll
  745. DUMPER_DLL    = $(AUTODIR)\Data\Dumper\Dumper.dll
  746. PEEK_DLL    = $(AUTODIR)\Devel\Peek\Peek.dll
  747. RE_DLL        = $(AUTODIR)\re\re.dll
  748. BYTELOADER_DLL    = $(AUTODIR)\ByteLoader\ByteLoader.dll
  749. DPROF_DLL    = $(AUTODIR)\Devel\DProf\DProf.dll
  750. GLOB_DLL    = $(AUTODIR)\File\Glob\Glob.dll
  751. HOSTNAME_DLL    = $(AUTODIR)\Sys\Hostname\Hostname.dll
  752.  
  753. ERRNO_PM    = $(LIBDIR)\Errno.pm
  754.  
  755. EXTENSION_C    =        \
  756.         $(SOCKET).c    \
  757.         $(FCNTL).c    \
  758.         $(OPCODE).c    \
  759.         $(SDBM_FILE).c    \
  760.         $(IO).c        \
  761.         $(POSIX).c    \
  762.         $(ATTRS).c    \
  763.         $(THREAD).c    \
  764.         $(RE).c        \
  765.         $(DUMPER).c    \
  766.         $(PEEK).c    \
  767.         $(B).c        \
  768.         $(BYTELOADER).c    \
  769.         $(DPROF).c    \
  770.         $(GLOB).c    \
  771.         $(HOSTNAME).c
  772.  
  773. EXTENSION_DLL    =        \
  774.         $(SOCKET_DLL)    \
  775.         $(FCNTL_DLL)    \
  776.         $(OPCODE_DLL)    \
  777.         $(SDBM_FILE_DLL)\
  778.         $(IO_DLL)    \
  779.         $(POSIX_DLL)    \
  780.         $(ATTRS_DLL)    \
  781.         $(DUMPER_DLL)    \
  782.         $(PEEK_DLL)    \
  783.         $(B_DLL)    \
  784.         $(RE_DLL)    \
  785.         $(THREAD_DLL)    \
  786.         $(BYTELOADER_DLL)    \
  787.         $(DPROF_DLL)    \
  788.         $(GLOB_DLL)    \
  789.         $(HOSTNAME_DLL)
  790.  
  791. EXTENSION_PM    =        \
  792.         $(ERRNO_PM)
  793.  
  794. POD2HTML    = $(PODDIR)\pod2html
  795. POD2MAN        = $(PODDIR)\pod2man
  796. POD2LATEX    = $(PODDIR)\pod2latex
  797. POD2TEXT    = $(PODDIR)\pod2text
  798.  
  799. # vars must be separated by "\t+~\t+", since we're using the tempfile
  800. # version of config_sh.pl (we were overflowing someone's buffer by
  801. # trying to fit them all on the command line)
  802. #    -- BKS 10-17-1999
  803. CFG_VARS    =                    \
  804.         INST_DRV=$(INST_DRV)        ~    \
  805.         INST_TOP=$(INST_TOP:s/\/\\/)    ~    \
  806.         INST_VER=$(INST_VER:s/\/\\/)    ~    \
  807.         INST_ARCH=$(INST_ARCH)        ~    \
  808.         archname=$(ARCHNAME)        ~    \
  809.         cc=$(CC)            ~    \
  810.         ccflags=$(OPTIMIZE) $(DEFINES) $(BUILDOPT)    ~    \
  811.         cf_email=$(EMAIL)        ~    \
  812.         d_crypt=$(D_CRYPT)        ~    \
  813.         d_mymalloc=$(PERL_MALLOC)    ~    \
  814.         libs=$(LIBFILES:f)        ~    \
  815.         incpath=$(CCINCDIR:s/\/\\/)    ~    \
  816.         libperl=$(PERLIMPLIB:f)        ~    \
  817.         libpth=$(CCLIBDIR:s/\/\\/);$(EXTRALIBDIRS:s/\/\\/)    ~    \
  818.         libc=$(LIBC)            ~    \
  819.         make=dmake            ~    \
  820.         _o=$(o)    obj_ext=$(o)        ~    \
  821.         _a=$(a)    lib_ext=$(a)        ~    \
  822.         static_ext=$(STATIC_EXT)    ~    \
  823.         dynamic_ext=$(DYNAMIC_EXT)    ~    \
  824.         nonxs_ext=$(NONXS_EXT)        ~    \
  825.         use5005threads=$(USE_5005THREADS)    ~    \
  826.         useithreads=$(USE_ITHREADS)    ~    \
  827.         usethreads=$(USE_5005THREADS)    ~    \
  828.         usemultiplicity=$(USE_MULTI)    ~    \
  829.         LINK_FLAGS=$(LINK_FLAGS:s/\/\\/)        ~    \
  830.         optimize=$(OPTIMIZE)
  831.  
  832. #
  833. # set up targets varying between Win95 and WinNT builds
  834. #
  835.  
  836. .IF "$(IS_WIN95)" == "define"
  837. MK2         = .\makefile.95
  838. RIGHTMAKE    = __switch_makefiles
  839. NOOP        = @rem
  840. .ELSE
  841. MK2        = __not_needed
  842. RIGHTMAKE    = __not_needed
  843. .ENDIF
  844.  
  845. #
  846. # Top targets
  847. #
  848.  
  849. all : .\config.h $(GLOBEXE) $(MINIPERL) $(MK2)        \
  850.     $(RIGHTMAKE) $(MINIMOD) $(CONFIGPM) $(PERLEXE)    \
  851.     $(X2P) $(EXTENSION_DLL) $(EXTENSION_PM)
  852.  
  853. $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
  854.  
  855. #----------------------------------------------------------------
  856.  
  857. #-------------------- BEGIN Win95 SPECIFIC ----------------------
  858.  
  859. # this target is a jump-off point for Win95
  860. #  1. it switches to the Win95-specific makefile if it exists
  861. #     (__do_switch_makefiles)
  862. #  2. it prints a message when the Win95-specific one finishes (__done)
  863. #  3. it then kills this makefile by trying to make __no_such_target
  864.  
  865. __switch_makefiles: __do_switch_makefiles __done __no_such_target
  866.  
  867. __do_switch_makefiles:
  868. .IF "$(NOTFIRST)" != "true"
  869.     if exist $(MK2) $(MAKE:s/-S//) -f $(MK2) $(MAKETARGETS) NOTFIRST=true
  870. .ELSE
  871.     $(NOOP)
  872. .ENDIF
  873.  
  874. .IF "$(NOTFIRST)" != "true"
  875. __done:
  876.     @echo Build process complete. Ignore any errors after this message.
  877.     @echo Run "dmake test" to test and "dmake install" to install
  878.  
  879. .ELSE
  880. # dummy targets for Win95-specific makefile
  881.  
  882. __done:
  883.     $(NOOP)
  884.  
  885. __no_such_target:
  886.     $(NOOP)
  887.  
  888. .ENDIF
  889.  
  890. # This target is used to generate the new makefile (.\makefile.95) for Win95
  891.  
  892. .\makefile.95: .\makefile.mk
  893.     $(MINIPERL) genmk95.pl makefile.mk $(MK2)
  894.  
  895. #--------------------- END Win95 SPECIFIC ---------------------
  896.  
  897. # a blank target for when builds don't need to do certain things
  898. # this target added for Win95 port but used to keep the WinNT port able to 
  899. # use this file
  900. __not_needed:
  901.     $(NOOP)
  902.  
  903. $(GLOBEXE) : perlglob$(o)
  904. .IF "$(CCTYPE)" == "BORLAND"
  905.     $(CC) -c -w -v -tWM -I"$(CCINCDIR)" perlglob.c
  906.     $(LINK32) -Tpe -ap $(BLINK_FLAGS) c0x32$(o) perlglob$(o) \
  907.         "$(CCLIBDIR)\32BIT\wildargs$(o)",$@,,import32.lib cw32mt.lib,
  908. .ELIF "$(CCTYPE)" == "GCC"
  909.     $(LINK32) $(BLINK_FLAGS) -mconsole -o $@ perlglob$(o) $(LIBFILES)
  910. .ELSE
  911.     $(LINK32) $(BLINK_FLAGS) $(LIBFILES) -out:$@ -subsystem:$(SUBSYS) \
  912.         perlglob$(o) setargv$(o) 
  913. .ENDIF
  914.  
  915. perlglob$(o)  : perlglob.c
  916.  
  917. config.w32 : $(CFGSH_TMPL)
  918.     copy $(CFGSH_TMPL) config.w32
  919.  
  920. .\config.h : $(CFGH_TMPL) $(CORE_NOCFG_H)
  921.     -del /f config.h
  922.     copy $(CFGH_TMPL) config.h
  923.  
  924. ..\config.sh : config.w32 $(MINIPERL) config_sh.PL
  925.     $(MINIPERL) -I..\lib config_sh.PL --cfgsh-option-file \
  926.         $(mktmp $(CFG_VARS)) config.w32 > ..\config.sh
  927.  
  928. # this target is for when changes to the main config.sh happen
  929. # edit config.{b,v,g}c and make this target once for each supported
  930. # compiler (e.g. `dmake CCTYPE=BORLAND regen_config_h`)
  931. regen_config_h:
  932.     perl config_sh.PL --cfgsh-option-file $(mktmp $(CFG_VARS)) \
  933.         $(CFGSH_TMPL) > ..\config.sh
  934.     -cd .. && del /f perl.exe
  935.     cd .. && perl configpm
  936.     -del /f $(CFGH_TMPL)
  937.     -mkdir $(COREDIR)
  938.     -perl -I..\lib config_h.PL "INST_VER=$(INST_VER)"
  939.     rename config.h $(CFGH_TMPL)
  940.  
  941. $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
  942.     cd .. && miniperl configpm
  943.     if exist lib\* $(RCOPY) lib\*.* ..\lib\$(NULL)
  944.     $(XCOPY) ..\*.h $(COREDIR)\*.*
  945.     $(XCOPY) *.h $(COREDIR)\*.*
  946.     $(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
  947.     $(RCOPY) include $(COREDIR)\*.*
  948.     $(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" \
  949.         || $(MAKE) $(MAKEMACROS) $(CONFIGPM) $(MAKEFILE)
  950.  
  951. $(MINIPERL) : $(MINIDIR) $(MINI_OBJ) $(CRTIPMLIBS)
  952. .IF "$(CCTYPE)" == "BORLAND"
  953.     $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
  954.         @$(mktmp c0x32$(o) $(MINI_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
  955. .ELIF "$(CCTYPE)" == "GCC"
  956.     $(LINK32) -v -mconsole -o $@ $(BLINK_FLAGS) \
  957.         $(mktmp $(LKPRE) $(MINI_OBJ:s,\,\\) $(LIBFILES) $(LKPOST)) 
  958. .ELSE
  959.     $(LINK32) -subsystem:console -out:$@ \
  960.         @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(MINI_OBJ:s,\,\\))
  961. .ENDIF
  962.  
  963. $(MINIDIR) :
  964.     if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
  965.  
  966. $(MINICORE_OBJ) : $(CORE_NOCFG_H)
  967.     $(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB $(OBJOUT_FLAG)$@ ..\$(*B).c
  968.  
  969. $(MINIWIN32_OBJ) : $(CORE_NOCFG_H)
  970.     $(CC) -c $(CFLAGS) $(OBJOUT_FLAG)$@ $(*B).c
  971.  
  972. # -DPERL_IMPLICIT_SYS needs C++ for perllib.c
  973. # rules wrapped in .IFs break Win9X build (we end up with unbalanced []s unless
  974. # unless the .IF is true), so instead we use a .ELSE with the default.
  975. # This is the only file that depends on perlhost.h, vmem.h, and vdir.h
  976.  
  977. perllib$(o)    : perllib.c .\perlhost.h .\vdir.h .\vmem.h
  978. .IF "$(USE_IMP_SYS)$(USE_OBJECT)" == "defineundef"
  979.     $(CC) -c -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ perllib.c
  980. .ELSE
  981.     $(CC) -c -I. $(CFLAGS_O) $(OBJOUT_FLAG)$@ perllib.c
  982. .ENDIF
  983.  
  984. # 1. we don't want to rebuild miniperl.exe when config.h changes
  985. # 2. we don't want to rebuild miniperl.exe with non-default config.h
  986. $(MINI_OBJ)    : $(CORE_NOCFG_H)
  987.  
  988. $(WIN32_OBJ)    : $(CORE_H)
  989. $(CORE_OBJ)    : $(CORE_H)
  990. $(DLL_OBJ)    : $(CORE_H)
  991. $(X2P_OBJ)    : $(CORE_H)
  992.  
  993. perldll.def : $(MINIPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
  994.     $(MINIPERL) -w ..\makedef.pl PLATFORM=win32 $(OPTIMIZE) $(DEFINES) \
  995.     $(BUILDOPT) CCTYPE=$(CCTYPE) > perldll.def
  996.  
  997. $(PERLDLL): perldll.def $(PERLDLL_OBJ) $(PERLDLL_RES)
  998. .IF "$(CCTYPE)" == "BORLAND"
  999.     $(LINK32) -Tpd -ap $(BLINK_FLAGS) \
  1000.         @$(mktmp c0d32$(o) $(PERLDLL_OBJ:s,\,\\)\n \
  1001.         $@,\n \
  1002.         $(LIBFILES)\n \
  1003.         perldll.def\n)
  1004.     $(IMPLIB) $*.lib $@
  1005. .ELIF "$(CCTYPE)" == "GCC"
  1006.     $(LINK32) -mdll -o $@ -Wl,--base-file -Wl,perl.base $(BLINK_FLAGS) \
  1007.         $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
  1008.     dlltool --output-lib $(PERLIMPLIB) \
  1009.         --dllname $(PERLDLL:b).dll \
  1010.         --def perldll.def \
  1011.         --base-file perl.base \
  1012.         --output-exp perl.exp
  1013.     $(LINK32) -mdll -o $@ $(BLINK_FLAGS) \
  1014.         $(mktmp $(LKPRE) $(PERLDLL_OBJ:s,\,\\) $(LIBFILES) \
  1015.         perl.exp $(LKPOST))
  1016. .ELSE
  1017.     $(LINK32) -dll -def:perldll.def -out:$@ \
  1018.         @$(mktmp -base:0x28000000 $(BLINK_FLAGS) $(DELAYLOAD) $(LIBFILES) \
  1019.             $(PERLDLL_RES) $(PERLDLL_OBJ:s,\,\\))
  1020. .ENDIF
  1021.     $(XCOPY) $(PERLIMPLIB) $(COREDIR)
  1022.  
  1023. $(MINIMOD) : $(MINIPERL) ..\minimod.pl
  1024.     cd .. && miniperl minimod.pl > lib\ExtUtils\Miniperl.pm
  1025.  
  1026. ..\x2p\a2p$(o) : ..\x2p\a2p.c
  1027.     $(CC) -I..\x2p $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\a2p.c
  1028.  
  1029. ..\x2p\hash$(o) : ..\x2p\hash.c
  1030.     $(CC) -I..\x2p  $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\hash.c
  1031.  
  1032. ..\x2p\str$(o) : ..\x2p\str.c
  1033.     $(CC) -I..\x2p  $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\str.c
  1034.  
  1035. ..\x2p\util$(o) : ..\x2p\util.c
  1036.     $(CC) -I..\x2p  $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\util.c
  1037.  
  1038. ..\x2p\walk$(o) : ..\x2p\walk.c
  1039.     $(CC) -I..\x2p  $(CFLAGS) $(OBJOUT_FLAG)$@ -c ..\x2p\walk.c
  1040.  
  1041. $(X2P) : $(MINIPERL) $(X2P_OBJ)
  1042.     $(MINIPERL) ..\x2p\find2perl.PL
  1043.     $(MINIPERL) ..\x2p\s2p.PL
  1044. .IF "$(CCTYPE)" == "BORLAND"
  1045.     $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
  1046.         @$(mktmp c0x32$(o) $(X2P_OBJ:s,\,\\),$(@:s,\,\\),,$(LIBFILES),)
  1047. .ELIF "$(CCTYPE)" == "GCC"
  1048.     $(LINK32) -v -o $@ $(BLINK_FLAGS) \
  1049.         $(mktmp $(LKPRE) $(X2P_OBJ:s,\,\\) $(LIBFILES) $(LKPOST))
  1050. .ELSE
  1051.     $(LINK32) -subsystem:console -out:$@ \
  1052.         @$(mktmp $(BLINK_FLAGS) $(LIBFILES) $(X2P_OBJ:s,\,\\))
  1053. .ENDIF
  1054.  
  1055. perlmain.c : runperl.c 
  1056.     copy runperl.c perlmain.c
  1057.  
  1058. perlmain$(o) : perlmain.c
  1059.     $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
  1060.  
  1061. $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES)
  1062. .IF "$(CCTYPE)" == "BORLAND"
  1063.     $(LINK32) -Tpe -ap $(BLINK_FLAGS) \
  1064.         @$(mktmp c0x32$(o) $(PERLEXE_OBJ:s,\,\\)\n \
  1065.         $(@:s,\,\\),\n \
  1066.         $(PERLIMPLIB) $(LIBFILES)\n)
  1067. .ELIF "$(CCTYPE)" == "GCC"
  1068.     $(LINK32) -mconsole -o $@ $(BLINK_FLAGS)  \
  1069.         $(PERLEXE_OBJ) $(PERLIMPLIB) $(LIBFILES)
  1070. .ELSE
  1071.     $(LINK32) -subsystem:console -out:$@ -stack:0x8000000 $(BLINK_FLAGS) \
  1072.         $(LIBFILES) $(PERLEXE_OBJ) $(SETARGV_OBJ) $(PERLIMPLIB) $(PERLEXE_RES)
  1073. .ENDIF
  1074.     copy $(PERLEXE) $(WPERLEXE)
  1075.     $(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
  1076.     copy splittree.pl .. 
  1077.     $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
  1078.  
  1079. $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
  1080.     if not exist $(AUTODIR) mkdir $(AUTODIR)
  1081.     cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib $(*B)_pm.PL
  1082.     cd $(EXTDIR)\$(*B) && ..\$(MINIPERL) -I..\..\lib XSLoader_pm.PL
  1083.     $(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
  1084.     $(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
  1085.     cd $(EXTDIR)\$(*B) && $(XSUBPP) dl_win32.xs > $(*B).c
  1086.     $(XCOPY) $(EXTDIR)\$(*B)\dlutils.c .
  1087.  
  1088. $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
  1089.     copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
  1090.  
  1091. $(DUMPER_DLL): $(PERLEXE) $(DUMPER).xs
  1092.     cd $(EXTDIR)\Data\$(*B) && \
  1093.     ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
  1094.     cd $(EXTDIR)\Data\$(*B) && $(MAKE)
  1095.  
  1096. $(DPROF_DLL): $(PERLEXE) $(DPROF).xs
  1097.     cd $(EXTDIR)\Devel\$(*B) && \
  1098.     ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
  1099.     cd $(EXTDIR)\Devel\$(*B) && $(MAKE)
  1100.  
  1101. $(GLOB_DLL): $(PERLEXE) $(GLOB).xs
  1102.     cd $(EXTDIR)\File\$(*B) && \
  1103.     ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
  1104.     cd $(EXTDIR)\File\$(*B) && $(MAKE)
  1105.  
  1106. $(PEEK_DLL): $(PERLEXE) $(PEEK).xs
  1107.     cd $(EXTDIR)\Devel\$(*B) && \
  1108.     ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
  1109.     cd $(EXTDIR)\Devel\$(*B) && $(MAKE)
  1110.  
  1111. $(RE_DLL): $(PERLEXE) $(RE).xs
  1112.     cd $(EXTDIR)\$(*B) && \
  1113.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1114.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1115.  
  1116. $(B_DLL): $(PERLEXE) $(B).xs
  1117.     cd $(EXTDIR)\$(*B) && \
  1118.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1119.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1120.  
  1121. $(THREAD_DLL): $(PERLEXE) $(THREAD).xs
  1122.     cd $(EXTDIR)\$(*B) && \
  1123.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1124.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1125.  
  1126. $(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
  1127.     cd $(EXTDIR)\$(*B) && \
  1128.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1129.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1130.  
  1131. $(POSIX_DLL): $(PERLEXE) $(POSIX).xs
  1132.     cd $(EXTDIR)\$(*B) && \
  1133.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1134.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1135.  
  1136. $(IO_DLL): $(PERLEXE) $(IO).xs
  1137.     cd $(EXTDIR)\$(*B) && \
  1138.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1139.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1140.  
  1141. $(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs
  1142.     cd $(EXTDIR)\$(*B) && \
  1143.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1144.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1145.  
  1146. $(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs
  1147.     cd $(EXTDIR)\$(*B) && \
  1148.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1149.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1150.  
  1151. $(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs
  1152.     cd $(EXTDIR)\$(*B) && \
  1153.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1154.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1155.  
  1156. $(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs
  1157.     cd $(EXTDIR)\$(*B) && \
  1158.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1159.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1160.  
  1161. $(HOSTNAME_DLL): $(PERLEXE) $(HOSTNAME).xs
  1162.     cd $(EXTDIR)\Sys\$(*B) && \
  1163.     ..\..\..\miniperl -I..\..\..\lib Makefile.PL INSTALLDIRS=perl
  1164.     cd $(EXTDIR)\Sys\$(*B) && $(MAKE)
  1165.  
  1166. $(BYTELOADER_DLL): $(PERLEXE) $(BYTELOADER).xs
  1167.     cd $(EXTDIR)\$(*B) && \
  1168.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1169.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1170.  
  1171. $(ERRNO_PM): $(PERLEXE) $(ERRNO)_pm.PL
  1172.     cd $(EXTDIR)\$(*B) && \
  1173.     ..\..\miniperl -I..\..\lib Makefile.PL INSTALLDIRS=perl
  1174.     cd $(EXTDIR)\$(*B) && $(MAKE)
  1175.  
  1176. doc: $(PERLEXE)
  1177.     $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=./html \
  1178.         --podpath=pod:lib:ext:utils --htmlroot="file://$(INST_HTML:s,:,|,)"\
  1179.         --libpod=perlfunc:perlguts:perlvar:perlrun:perlop --recurse
  1180.  
  1181. utils: $(PERLEXE) $(X2P)
  1182.     cd ..\utils && $(MAKE) PERL=$(MINIPERL)
  1183.     copy ..\README.amiga ..\pod\perlamiga.pod
  1184.     copy ..\README.cygwin ..\pod\perlcygwin.pod
  1185.     copy ..\README.dos ..\pod\perldos.pod
  1186.     copy ..\README.hpux ..\pod\perlhpux.pod
  1187.     copy ..\README.machten ..\pod\perlmachten.pod
  1188.     copy ..\README.os2 ..\pod\perlos2.pod
  1189.     copy ..\README.os2 ..\pod\perlos2.pod
  1190.     copy ..\vms\perlvms.pod ..\pod\perlvms.pod
  1191.     cd ..\pod && $(MAKE) -f ..\win32\pod.mak converters
  1192.     $(PERLEXE) $(PL2BAT) $(UTILS)
  1193.  
  1194. distclean: clean
  1195.     -del /f $(MINIPERL) $(PERLEXE) $(PERLDLL) $(GLOBEXE) \
  1196.         $(PERLIMPLIB) ..\miniperl$(a) $(MINIMOD)
  1197.     -del /f *.def *.map
  1198.     -del /f $(EXTENSION_DLL) $(EXTENSION_PM)
  1199.     -del /f $(EXTENSION_C) $(DYNALOADER).c $(ERRNO).pm
  1200.     -del /f $(EXTDIR)\DynaLoader\dl_win32.xs
  1201.     -del /f $(LIBDIR)\.exists $(LIBDIR)\attrs.pm $(LIBDIR)\DynaLoader.pm
  1202.     -del /f $(LIBDIR)\XSLoader.pm
  1203.     -del /f $(LIBDIR)\Fcntl.pm $(LIBDIR)\IO.pm $(LIBDIR)\Opcode.pm
  1204.     -del /f $(LIBDIR)\ops.pm $(LIBDIR)\Safe.pm $(LIBDIR)\Thread.pm
  1205.     -del /f $(LIBDIR)\SDBM_File.pm $(LIBDIR)\Socket.pm $(LIBDIR)\POSIX.pm
  1206.     -del /f $(LIBDIR)\B.pm $(LIBDIR)\O.pm $(LIBDIR)\re.pm
  1207.     -del /f $(LIBDIR)\Data\Dumper.pm $(LIBDIR)\ByteLoader.pm
  1208.     -del /f $(LIBDIR)\Devel\Peek.pm $(LIBDIR)\Devel\DProf.pm
  1209.     -del /f $(LIBDIR)\File\Glob.pm
  1210.     -rmdir /s /q $(LIBDIR)\IO || rmdir /s $(LIBDIR)\IO
  1211.     -rmdir /s /q $(LIBDIR)\Thread || rmdir /s $(LIBDIR)\Thread
  1212.     -rmdir /s /q $(LIBDIR)\B || rmdir /s $(LIBDIR)\B
  1213.     -rmdir /s /q $(LIBDIR)\Data || rmdir /s $(LIBDIR)\Data
  1214.     -del /f $(PODDIR)\*.html
  1215.     -del /f $(PODDIR)\*.bat
  1216.     -cd ..\utils && del /f h2ph splain perlbug pl2pm c2ph h2xs perldoc \
  1217.         dprofpp *.bat
  1218.     -cd ..\x2p && del /f find2perl s2p *.bat
  1219.     -del /f ..\config.sh ..\splittree.pl perlmain.c dlutils.c config.h.new
  1220.     -del /f $(CONFIGPM)
  1221.     -del /f bin\*.bat
  1222.     -cd $(EXTDIR) && del /s *$(a) *.def *.map *.pdb *.bs Makefile *$(o) \
  1223.         pm_to_blib
  1224.     -rmdir /s /q $(AUTODIR) || rmdir /s $(AUTODIR)
  1225.     -rmdir /s /q $(COREDIR) || rmdir /s $(COREDIR)
  1226.  
  1227. install : all installbare installhtml
  1228.  
  1229. installbare : $(RIGHTMAKE) utils
  1230.     $(PERLEXE) ..\installperl
  1231.     if exist $(WPERLEXE) $(XCOPY) $(WPERLEXE) $(INST_BIN)\*.*
  1232.     $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
  1233.     $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
  1234.  
  1235. installhtml : doc
  1236.     $(RCOPY) html\*.* $(INST_HTML)\*.*
  1237.  
  1238. inst_lib : $(CONFIGPM)
  1239.     copy splittree.pl .. 
  1240.     $(MINIPERL) -I..\lib ..\splittree.pl "../LIB" $(AUTODIR)
  1241.     $(RCOPY) ..\lib $(INST_LIB)\*.*
  1242.  
  1243. minitest : $(MINIPERL) $(GLOBEXE) $(CONFIGPM) utils
  1244.     $(XCOPY) $(MINIPERL) ..\t\perl.exe
  1245. .IF "$(CCTYPE)" == "BORLAND"
  1246.     $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
  1247. .ELSE
  1248.     $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
  1249. .ENDIF
  1250.     attrib -r ..\t\*.*
  1251.     copy test ..\t
  1252.     cd ..\t && \
  1253.     $(MINIPERL) -I..\lib test base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t
  1254.  
  1255. test-prep : all utils
  1256.     $(XCOPY) $(PERLEXE) ..\t\$(NULL)
  1257.     $(XCOPY) $(PERLDLL) ..\t\$(NULL)
  1258. .IF "$(CCTYPE)" == "BORLAND"
  1259.     $(XCOPY) $(GLOBBAT) ..\t\$(NULL)
  1260. .ELSE
  1261.     $(XCOPY) $(GLOBEXE) ..\t\$(NULL)
  1262. .ENDIF
  1263.  
  1264. test : $(RIGHTMAKE) test-prep
  1265.     cd ..\t && $(PERLEXE) -I..\lib harness
  1266.  
  1267. test-notty : test-prep
  1268.     set PERL_SKIP_TTY_TEST=1 && \
  1269.         cd ..\t && $(PERLEXE) -I.\lib harness
  1270.  
  1271. test-wide : test-prep
  1272.     set HARNESS_PERL_SWITCHES=-C && \
  1273.         cd ..\t && $(PERLEXE) -I..\lib harness
  1274.  
  1275. test-wide-notty : test-prep
  1276.     set PERL_SKIP_TTY_TEST=1 && \
  1277.         set HARNESS_PERL_SWITCHES=-C && \
  1278.         cd ..\t && $(PERLEXE) -I..\lib harness
  1279.  
  1280. clean : 
  1281.     -@erase miniperlmain$(o)
  1282.     -@erase $(MINIPERL)
  1283.     -@erase perlglob$(o)
  1284.     -@erase perlmain$(o)
  1285.     -@erase config.w32
  1286.     -@erase /f config.h
  1287.     -@erase $(GLOBEXE)
  1288.     -@erase $(PERLEXE)
  1289.     -@erase $(WPERLEXE)
  1290.     -@erase $(PERLDLL)
  1291.     -@erase $(CORE_OBJ)
  1292.     -rmdir /s /q $(MINIDIR) || rmdir /s $(MINIDIR)
  1293.     -@erase $(WIN32_OBJ)
  1294.     -@erase $(DLL_OBJ)
  1295.     -@erase $(X2P_OBJ)
  1296.     -@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp *.res
  1297.     -@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
  1298.     -@erase ..\x2p\*.exe ..\x2p\*.bat
  1299.     -@erase *.ilk
  1300.     -@erase *.pdb
  1301.