[win32] @INC construction on win32 cleaned up
[p5sagit/p5-mst-13.2.git] / win32 / makefile.mk
index f74c1be..bb4fb40 100644 (file)
 # Set these to wherever you want "nmake install" to put your
 # newly built perl.
 INST_DRV       *= c:
-INST_TOP       *= $(INST_DRV)\perl5004.5x
+INST_TOP       *= $(INST_DRV)\perl
+
+# Comment this out if you DON'T want your perl installation to be versioned.
+# This means that the new installation will overwrite any files from the
+# old installation at the same INST_TOP location.  Leaving it enabled is
+# the safest route, as perl adds the extra version directory to all the
+# locations it installs files to.  If you disable it, an alternative
+# versioned installation can be obtained by setting INST_TOP above to a
+# path that includes an arbitrary version string.
+INST_VER       *= \5.00466
 
 #
 # uncomment to enable threads-capabilities
@@ -28,7 +37,8 @@ CCTYPE                *= BORLAND
 
 #
 # uncomment next line if you want to use the perl object
-OBJECT         *= -DPERL_OBJECT
+# Currently, this cannot be enabled if you ask for threads above
+#OBJECT                *= -DPERL_OBJECT
 
 #
 # uncomment next line if you want debug version of perl (big,slow)
@@ -50,13 +60,12 @@ OBJECT              *= -DPERL_OBJECT
 # set this if you wish to use perl's malloc
 # WARNING: Turning this on/off WILL break binary compatibility with extensions
 # you may have compiled with/without it.  Be prepared to recompile all extensions
-# if you change the default.
+# if you change the default.  Currently, this cannot be enabled if you ask for
+# PERL_OBJECT above.
 #PERL_MALLOC   *= define
 
 #
 # set the install locations of the compiler include/libraries
-# (you'll need to quote the value if it contains spaces: i.e.
-#     CCHOME    *= "f:\Program Files\vc"
 #
 #CCHOME                *= f:\msdev\vc
 CCHOME         *= C:\bc5
@@ -119,7 +128,7 @@ AUTODIR             = ..\lib\auto
 
 CC             = bcc32
 LINK32         = tlink32
-LIB32          = tlib
+LIB32          = tlib /P128
 IMPLIB         = implib -c
 
 #
@@ -149,12 +158,13 @@ CFLAGS            = -w -d -tWM -tWD $(INCLUDES) $(DEFINES) $(LOCDEFS) \
 LINK_FLAGS     = $(LINK_DBG) -L$(CCLIBDIR)
 OBJOUT_FLAG    = -o
 EXEOUT_FLAG    = -e
+LIBOUT_FLAG    = 
 
 .ELIF "$(CCTYPE)" == "GCC"
 
 CC             = gcc -pipe
 LINK32         = gcc -pipe
-LIB32          = ar
+LIB32          = ar rc
 IMPLIB         = dlltool
 
 o = .o
@@ -185,6 +195,7 @@ CFLAGS              = $(INCLUDES) $(DEFINES) $(LOCDEFS) $(OPTIMIZE)
 LINK_FLAGS     = $(LINK_DBG) -L$(CCLIBDIR)
 OBJOUT_FLAG    = -o
 EXEOUT_FLAG    = -o
+LIBOUT_FLAG    = 
 
 .ELSE
 
@@ -195,15 +206,8 @@ LIB32              = $(LINK32) -lib
 #
 # Options
 #
-.IF "$(OBJECT)" == "-DPERL_OBJECT"
-RUNTIME                = -MT
-# XXX building with -MD fails many tests, but cannot investigate
-# because building with debug crashes compiler :-( GSAR )-:
-#RUNTIME       = -MD
-.ELSE
-RUNTIME                = -MD
-.ENDIF
 
+RUNTIME                = -MD
 INCLUDES       = -I.\include -I. -I..
 #PCHFLAGS      = -Fpc:\temp\vcmoduls.pch -YX 
 DEFINES                = -DWIN32 -D_CONSOLE $(BUILDOPT) $(CRYPT_FLAG)
@@ -244,6 +248,7 @@ CFLAGS              = -nologo -Gf -W3 $(INCLUDES) $(DEFINES) $(LOCDEFS) \
 LINK_FLAGS     = -nologo $(LINK_DBG) -machine:$(PROCESSOR_ARCHITECTURE)
 OBJOUT_FLAG    = -Fo
 EXEOUT_FLAG    = -Fe
+LIBOUT_FLAG    = /out:
 
 .ENDIF
 
@@ -286,8 +291,9 @@ $(o).dll:
 .ENDIF
 
 #
-INST_BIN       = $(INST_TOP)\bin
-INST_LIB       = $(INST_TOP)\lib
+INST_BIN       = $(INST_TOP)$(INST_VER)\bin\$(ARCHNAME)
+INST_SCRIPT    = $(INST_TOP)$(INST_VER)\bin
+INST_LIB       = $(INST_TOP)$(INST_VER)\lib
 INST_POD       = $(INST_LIB)\pod
 INST_HTML      = $(INST_POD)\html
 LIBDIR         = ..\lib
@@ -300,9 +306,11 @@ EXTUTILSDIR        = $(LIBDIR)\extutils
 .IF "$(OBJECT)" == "-DPERL_OBJECT"
 PERLIMPLIB     = ..\perlcore.lib
 PERLDLL                = ..\perlcore.dll
+CAPILIB                = $(COREDIR)\PerlCAPI.lib
 .ELSE
 PERLIMPLIB     = ..\perl.lib
 PERLDLL                = ..\perl.dll
+CAPILIB                =
 .ENDIF
 
 MINIPERL       = ..\miniperl.exe
@@ -460,7 +468,7 @@ WIN32_OBJ   = $(WIN32_SRC:db:+$(o))
 MINICORE_OBJ   = $(MINIDIR)\{$(CORE_OBJ:f) miniperlmain$(o)}
 MINIWIN32_OBJ  = $(MINIDIR)\{$(WIN32_OBJ:f)}
 MINI_OBJ       = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
-PERL95_OBJ     = $(PERL95_SRC:db:+$(o)) DynaLoadmt$(o)
+PERL95_OBJ     = $(PERL95_SRC:db:+$(o))
 DLL_OBJ                = $(DLL_SRC:db:+$(o))
 X2P_OBJ                = $(X2P_SRC:db:+$(o))
 
@@ -475,6 +483,7 @@ PERLEXE_OBJ = perlmain$(o)
 PERLDLL_OBJ    += $(WIN32_OBJ) $(DLL_OBJ)
 .ELSE
 PERLEXE_OBJ    += $(WIN32_OBJ) $(DLL_OBJ)
+PERL95_OBJ     += DynaLoadmt$(o)
 .ENDIF
 
 DYNAMIC_EXT    = Socket IO Fcntl Opcode SDBM_File POSIX attrs Thread B
@@ -520,8 +529,12 @@ EXTENSION_DLL      =               \
                $(IO_DLL)       \
                $(POSIX_DLL)    \
                $(ATTRS_DLL)
-#              $(THREAD_DLL)   \
-#              $(B_DLL)
+
+.IF "$(OBJECT)" == ""
+EXTENSION_DLL  +=              \
+               $(THREAD_DLL)   \
+               $(B_DLL)
+.ENDIF
 
 POD2HTML       = $(PODDIR)\pod2html
 POD2MAN                = $(PODDIR)\pod2man
@@ -531,6 +544,7 @@ POD2TEXT    = $(PODDIR)\pod2text
 CFG_VARS       =                                       \
                "INST_DRV=$(INST_DRV)"                  \
                "INST_TOP=$(INST_TOP)"                  \
+               "INST_VER=$(INST_VER)"                  \
                "archname=$(ARCHNAME)"                  \
                "cc=$(CC)"                              \
                "ccflags=$(OPTIMIZE) $(DEFINES) $(OBJECT)"      \
@@ -553,7 +567,7 @@ CFG_VARS    =                                       \
 # Top targets
 #
 
-all : $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) $(PERL95EXE) $(X2P) \
+all : $(GLOBEXE) $(MINIMOD) $(CONFIGPM) $(PERLEXE) $(PERL95EXE) $(CAPILIB) $(X2P) \
        $(EXTENSION_DLL)
 
 $(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
@@ -593,7 +607,7 @@ regen_config_h:
        cd .. && perl configpm
        -del /f $(CFGH_TMPL)
        -mkdir ..\lib\CORE
-       -perl -I..\lib config_h.PL
+       -perl -I..\lib config_h.PL "INST_VER=$(INST_VER)"
        rename config.h $(CFGH_TMPL)
 
 $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
@@ -602,7 +616,8 @@ $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl
        $(XCOPY) ..\*.h $(COREDIR)\*.*
        $(XCOPY) *.h $(COREDIR)\*.*
        $(RCOPY) include $(COREDIR)\*.*
-       $(MINIPERL) -I..\lib config_h.PL || $(MAKE) $(MAKEMACROS) $(CONFIGPM)
+       $(MINIPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)" \
+           || $(MAKE) $(MAKEMACROS) $(CONFIGPM)
 
 $(MINIPERL) : $(MINIDIR) $(MINI_OBJ)
 .IF "$(CCTYPE)" == "BORLAND"
@@ -700,13 +715,13 @@ perlmain.c : runperl.c
        copy runperl.c perlmain.c
 
 perlmain$(o) : perlmain.c
-       $(CC) $(CFLAGS_O) -UPERLDLL $(EXEOUT_FLAG)$@ -c perlmain.c
+       $(CC) $(CFLAGS_O) -UPERLDLL $(OBJOUT_FLAG)$@ -c perlmain.c
 
 $(PERLEXE): $(PERLDLL) $(CONFIGPM) $(PERLEXE_OBJ)
 .IF "$(CCTYPE)" == "BORLAND"
        $(LINK32) -Tpe -ap $(LINK_FLAGS) \
-           @$(mktmp c0x32$(o) $(PERLEXE_OBJ)\n \
-           $@,\n \
+           @$(mktmp c0x32$(o) $(PERLEXE_OBJ:s,\,\\)\n \
+           $(@:s,\,\\),\n \
            $(PERLIMPLIB) $(LIBFILES)\n)
 .ELIF "$(CCTYPE)" == "GCC"
        $(LINK32) -o $@ $(LINK_FLAGS)  \
@@ -753,6 +768,30 @@ $(DYNALOADER).c: $(MINIPERL) $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
        cd $(EXTDIR)\$(*B) && $(XSUBPP) dl_win32.xs > $(*B).c
        $(XCOPY) $(EXTDIR)\$(*B)\dlutils.c .
 
+.IF "$(OBJECT)" == "-DPERL_OBJECT"
+
+PerlCAPI.cpp : $(MINIPERL)
+       $(MINIPERL) GenCAPI.pl $(COREDIR)
+
+PerlCAPI$(o) : PerlCAPI.cpp
+.IF "$(CCTYPE)" == "BORLAND"
+       $(CC) $(CFLAGS_O) -c $(OBJOUT_FLAG)PerlCAPI$(o) PerlCAPI.cpp
+.ELIF "$(CCTYPE)" == "GCC"
+       $(CC) $(CFLAGS_O) -c $(OBJOUT_FLAG)PerlCAPI$(o) PerlCAPI.cpp
+.ELSE
+       $(CC) $(CFLAGS_O) -MT -UPERLDLL -DWIN95FIX -c \
+           $(OBJOUT_FLAG)PerlCAPI$(o) PerlCAPI.cpp
+.ENDIF
+
+$(CAPILIB) : PerlCAPI.cpp PerlCAPI$(o)
+.IF "$(CCTYPE)" == "BORLAND"
+       $(LIB32) $(LIBOUT_FLAG)$(CAPILIB) +PerlCAPI$(o)
+.ELSE
+       $(LIB32) $(LIBOUT_FLAG)$(CAPILIB) PerlCAPI$(o)
+.ENDIF
+
+.ENDIF
+
 $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
        copy dl_win32.xs $(EXTDIR)\DynaLoader\dl_win32.xs
 
@@ -857,8 +896,8 @@ installbare :
 
 installutils : utils
        $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.*
-       $(XCOPY) bin\*.bat $(INST_BIN)\*.*
-       $(XCOPY) ..\pod\*.bat $(INST_BIN)\*.*
+       $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.*
+       $(XCOPY) ..\pod\*.bat $(INST_SCRIPT)\*.*
 
 installhtml : doc
        $(RCOPY) html\*.* $(INST_HTML)\*.*