perl
view release on metacpan or search on metacpan
win32/GNUmakefile view on Meta::CPAN
USE_LONG_DOUBLE = undef
USE_QUADMATH = undef
I_QUADMATH = undef
endif
ARCHITECTURE = $(PROCESSOR_ARCHITECTURE)
ifeq ($(ARCHITECTURE),AMD64)
ARCHITECTURE = x64
endif
ifeq ($(ARCHITECTURE),IA64)
ARCHITECTURE = ia64
endif
ifeq ($(USE_MULTI),define)
ARCHNAME = MSWin32-$(ARCHITECTURE)-multi
else
ifeq ($(USE_PERLIO),define)
ARCHNAME = MSWin32-$(ARCHITECTURE)-perlio
else
ARCHNAME = MSWin32-$(ARCHITECTURE)
endif
endif
ifeq ($(USE_PERLIO),define)
BUILDOPT += -DUSE_PERLIO
endif
ifeq ($(USE_ITHREADS),define)
ARCHNAME := $(ARCHNAME)-thread
endif
ifneq ($(WIN64),define)
ifeq ($(USE_64_BIT_INT),define)
ARCHNAME := $(ARCHNAME)-64int
endif
endif
ifeq ($(USE_LONG_DOUBLE),define)
ARCHNAME := $(ARCHNAME)-ld
endif
ifeq ($(USE_QUADMATH),define)
ARCHNAME := $(ARCHNAME)-quadmath
endif
ifeq ($(CCTYPE),GCC)
GCCVER := $(shell $(GCCBIN) -dumpversion)
GCCVER1 := $(shell for /f "delims=. tokens=1,2,3" %%i in ('$(GCCBIN) -dumpversion') do echo %%i)
GCCVER2 := $(shell for /f "delims=. tokens=1,2,3" %%i in ('$(GCCBIN) -dumpversion') do echo %%j)
GCCVER3 := $(shell for /f "delims=. tokens=1,2,3" %%i in ('$(GCCBIN) -dumpversion') do echo %%k)
endif
# Set the install location of the compiler headers/libraries.
# These are saved into $Config{incpath} and $Config{libpth}.
ifneq ($(GCCCROSS),)
CCINCDIR := $(CCHOME)\$(GCCCROSS)\include
CCLIBDIR := $(CCHOME)\$(GCCCROSS)\lib
ARCHPREFIX := $(GCCCROSS)-
else ifeq ($(CCTYPE),GCC)
CCINCDIR := $(CCHOME)\include
CCLIBDIR := $(CCHOME)\lib;$(CCHOME)\$(GCCTARGET)\lib;$(CCHOME)\lib\gcc\$(GCCTARGET)\$(GCCVER)
ARCHPREFIX :=
else
CCINCDIR := $(CCHOME)\include
ifeq ($(CCTYPE),MSVC140)
ifeq ($(WIN64),define)
CCLIBDIR := $(CCHOME)\lib\amd64
else
CCLIBDIR := $(CCHOME)\lib
endif
else
ifeq ($(WIN64),define)
CCLIBDIR := $(CCHOME)\lib\x64
else
CCLIBDIR := $(CCHOME)\lib\x86
endif
endif
ARCHPREFIX :=
endif
# Set DLL location for GCC compilers.
ifeq ($(CCTYPE),GCC)
ifneq ($(GCCCROSS),)
CCDLLDIR := $(CCHOME)\$(GCCCROSS)\lib
else
CCDLLDIR := $(CCHOME)\bin
endif
endif
ARCHDIR = ..\lib\$(ARCHNAME)
COREDIR = ..\lib\CORE
AUTODIR = ..\lib\auto
LIBDIR = ..\lib
EXTDIR = ..\ext
DISTDIR = ..\dist
CPANDIR = ..\cpan
PODDIR = ..\pod
HTMLDIR = .\html
# Strip trailing backslash from INST_TOP
override INST_TOP := $(INST_TOP:\=)
INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin
INST_BIN = $(INST_SCRIPT)$(INST_ARCH)
INST_LIB = $(INST_TOP)$(INST_VER)\lib
INST_ARCHLIB = $(INST_LIB)$(INST_ARCH)
INST_COREDIR = $(INST_ARCHLIB)\CORE
INST_HTML = $(INST_TOP)$(INST_VER)\html
#
# Programs to compile, build .lib files and link
#
MINIBUILDOPT :=
ifeq ($(CCTYPE),GCC)
CC = $(ARCHPREFIX)gcc
LINK32 = $(ARCHPREFIX)g++
LIB32 = $(ARCHPREFIX)ar rc
IMPLIB = $(ARCHPREFIX)dlltool
win32/GNUmakefile view on Meta::CPAN
# LINK_FLAGS.
ifneq ($(CCTYPE),GCC)
ifeq ($(WIN64),define)
LINK_FLAGS += -subsystem:console,"5.02"
else
LINK_FLAGS += -subsystem:console,"5.01"
endif
endif
BLINK_FLAGS = $(PRIV_LINK_FLAGS) $(LINK_FLAGS)
#################### do not edit below this line #######################
############# NO USER-SERVICEABLE PARTS BEYOND THIS POINT ##############
#prevent -j from reaching EUMM/make_ext.pl/"sub makes", Win32 EUMM not parallel
#compatible yet
unexport MAKEFLAGS
a ?= .lib
.SUFFIXES : .c .i $(o) .dll $(a) .exe .rc .res
%$(o): %.c
$(CC) -c -I$(<D) -I$(FULLDIR) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $(PDBOUT) $<
%.i: %.c
$(CC) -c -I$(<D) -I$(FULLDIR) $(CFLAGS_O) -E $< >$@
%.c: %.y
$(NOOP)
%.dll: %$(o)
$(LINK32) -o $@ $(BLINK_FLAGS) $< $(LIBFILES)
$(IMPLIB) --input-def $(*F).def --output-lib $(*F).a $@
%.res: %.rc
ifeq ($(CCTYPE),GCC)
$(RSC) --use-temp-file --include-dir=. --include-dir=.. -O COFF -D INCLUDE_MANIFEST -i $< -o $@
else
$(RSC) -i.. -DINCLUDE_MANIFEST $<
endif
#
# various targets
#do not put $(MINIPERL) as a dep/prereq in a rule, instead put $(HAVEMINIPERL)
#$(MINIPERL) is not a buildable target, use "gmake mp" if you want to just build
#miniperl alone
MINIPERL = ..\miniperl.exe
HAVEMINIPERL = ..\lib\buildcustomize.pl
# contains config.h for the full perl build
FULLDIR = full
MINIDIR = mini
PERLEXE = ..\perl.exe
WPERLEXE = ..\wperl.exe
PERLEXESTATIC = ..\perl-static.exe
STATICDIR = .\static.tmp
GLOBEXE = ..\perlglob.exe
CONFIGPM = ..\lib\Config.pm
GENUUDMAP = ..\generate_uudmap.exe
ifeq ($(BUILD_STATIC),define)
PERLSTATIC = static
else
ifeq ($(ALL_STATIC),define)
PERLSTATIC = static
else
PERLSTATIC =
endif
endif
# Unicode data files generated by mktables
UNIDATAFILES = ..\lib\unicore\Decomposition.pl ..\lib\unicore\TestProp.pl \
..\lib\unicore\CombiningClass.pl ..\lib\unicore\Name.pl \
..\lib\unicore\UCD.pl ..\lib\unicore\Name.pm \
..\lib\unicore\mktables.lst
# Directories of Unicode data files generated by mktables
UNIDATADIR1 = ..\lib\unicore\To
UNIDATADIR2 = ..\lib\unicore\lib
PERLEXE_MANIFEST= .\perlexe.manifest
PERLEXE_ICO = .\perlexe.ico
PERLEXE_RES = .\perlexe.res
PERLDLL_RES =
# Nominate a target which causes extensions to be re-built
# This used to be $(PERLEXE), but at worst it is the .dll that they depend
# on and really only the interface - i.e. the .def file used to export symbols
# from the .dll
PERLDEP = $(PERLIMPLIB)
PL2BAT = bin\pl2bat.pl
UTILS = \
..\utils\h2ph \
..\utils\splain \
..\utils\perlbug \
..\utils\pl2pm \
..\utils\h2xs \
..\utils\perldoc \
..\utils\perlivp \
..\utils\libnetcfg \
..\utils\enc2xs \
..\utils\encguess \
..\utils\piconv \
..\utils\corelist \
..\utils\cpan \
..\utils\xsubpp \
..\utils\pod2html \
..\utils\prove \
..\utils\ptar \
..\utils\ptardiff \
..\utils\ptargrep \
..\utils\zipdetails \
..\utils\shasum \
..\utils\instmodsh \
..\utils\json_pp \
bin\exetype.pl \
bin\runperl.pl \
bin\pl2bat.pl \
bin\perlglob.pl \
bin\search.pl
ifeq ($(CCTYPE),GCC)
CFGSH_TMPL = config.gc
CFGH_TMPL = config_H.gc
PERLIMPLIB = $(COREDIR)\libperl542$(a)
PERLIMPLIBBASE = libperl542$(a)
PERLSTATICLIB = ..\libperl542s$(a)
INT64 = long long
else
CFGSH_TMPL = config.vc
CFGH_TMPL = config_H.vc
INT64 = __int64
endif
# makedef.pl must be updated if this changes, and this should normally
# only change when there is an incompatible revision of the public API.
PERLIMPLIB ?= $(COREDIR)\perl542$(a)
PERLIMPLIBBASE ?= perl542$(a)
PERLEXPLIB ?= $(COREDIR)\perl542.exp
PERLSTATICLIB ?= ..\perl542s$(a)
PERLDLL = ..\perl542.dll
PERLDLLBASE = perl542.dll
# don't let "gmake -n all" try to run "miniperl.exe make_ext.pl"
PLMAKE = gmake
XCOPY = xcopy /f /r /i /d /y
RCOPY = xcopy /f /r /i /e /d /y
NOOP = @rem
#first ones are arrange in compile time order for faster parallel building
#see #123867 for details
MICROCORE_SRC = \
..\toke.c \
..\regcomp.c \
..\regcomp_trie.c \
..\regcomp_debug.c \
..\regcomp_invlist.c \
..\regcomp_study.c \
..\regexec.c \
..\op.c \
..\sv.c \
..\pp.c \
..\pp_ctl.c \
..\pp_sys.c \
..\pp_pack.c \
..\pp_hot.c \
..\gv.c \
..\perl.c \
..\utf8.c \
..\dump.c \
..\hv.c \
..\av.c \
..\builtin.c \
..\caretx.c \
..\class.c \
..\deb.c \
..\doio.c \
..\doop.c \
..\dquote.c \
..\globals.c \
..\mro_core.c \
..\locale.c \
..\keywords.c \
..\mathoms.c \
..\mg.c \
..\numeric.c \
..\pad.c \
..\peep.c \
..\perly.c \
..\pp_sort.c \
..\reentr.c \
..\run.c \
..\scope.c \
..\taint.c \
..\time64.c \
..\universal.c \
..\util.c
EXTRACORE_SRC += perllib.c
ifeq ($(PERL_MALLOC),define)
EXTRACORE_SRC += ..\malloc.c
endif
EXTRACORE_SRC += ..\perlio.c
WIN32_SRC = \
.\win32.c \
.\win32sck.c \
.\win32thread.c \
.\fcrypt.c
CORE_NOCFG_H = \
..\av.h \
..\cop.h \
..\cv.h \
..\dosish.h \
..\embed.h \
..\form.h \
..\gv.h \
..\handy.h \
..\hv.h \
..\hv_func.h \
..\iperlsys.h \
..\mg.h \
..\nostdio.h \
..\op.h \
..\opcode.h \
..\perl.h \
..\perlapi.h \
..\perlsdio.h \
..\perly.h \
..\pp.h \
..\proto.h \
..\regcomp.h \
..\regcomp_internal.h \
..\regexp.h \
..\scope.h \
..\sv.h \
..\thread.h \
..\unixish.h \
..\utf8.h \
..\util.h \
..\warnings.h \
..\XSUB.h \
..\EXTERN.h \
..\perlvars.h \
..\intrpvar.h \
.\include\dirent.h \
.\include\netdb.h \
.\include\sys\errno2.h \
.\include\sys\socket.h \
.\win32.h
CONFIG_H = $(FULLDIR)\config.h
MINI_CONFIG_H = $(MINIDIR)\config.h
CORE_H = $(CORE_NOCFG_H) $(CONFIG_H) ..\git_version.h
UUDMAP_H = ..\uudmap.h
BITCOUNT_H = ..\bitcount.h
MG_DATA_H = ..\mg_data.h
GENERATED_HEADERS = $(UUDMAP_H) $(BITCOUNT_H) $(MG_DATA_H)
HAVE_COREDIR = .coreheaders
MICROCORE_OBJ = $(MICROCORE_SRC:.c=$(o))
CORE_OBJ = $(MICROCORE_OBJ) $(EXTRACORE_SRC:.c=$(o))
WIN32_OBJ = $(WIN32_SRC:.c=$(o))
MINICORE_OBJ = $(subst ..\,mini\,$(MICROCORE_OBJ)) \
$(MINIDIR)\miniperlmain$(o) \
$(MINIDIR)\perlio$(o)
MINIWIN32_OBJ = $(subst .\,mini\,$(WIN32_OBJ))
MINI_OBJ = $(MINICORE_OBJ) $(MINIWIN32_OBJ)
DLL_OBJ = $(DYNALOADER)
PERLDLL_OBJ = $(CORE_OBJ)
PERLEXE_OBJ = perlmain$(o)
PERLEXEST_OBJ = perlmainst$(o)
PERLDLL_OBJ += $(WIN32_OBJ) $(DLL_OBJ)
ifneq ($(USE_SETARGV),)
SETARGV_OBJ = setargv$(o)
endif
ifeq ($(ALL_STATIC),define)
# some exclusions, unfortunately, until fixed:
# - MakeMaker isn't capable enough for SDBM_File (small bug)
STATIC_EXT = * !SDBM_File
NORMALIZE_STATIC = Normalize_static
else
# specify static extensions here, for example:
# (be sure to include Win32CORE to load Win32 on demand)
#STATIC_EXT = Win32CORE Cwd Compress/Raw/Zlib
STATIC_EXT = Win32CORE
NORMALIZE_DYN = Normalize_dyn
endif
DYNALOADER = ..\DynaLoader$(o)
# vars must be separated by "\t+~\t+", since we're using the tempfile
# version of config_sh.pl (we were overflowing someone's buffer by
# trying to fit them all on the command line)
# -- BKS 10-17-1999
CFG_VARS = \
"INST_TOP=$(INST_TOP)" \
"INST_VER=$(INST_VER)" \
"INST_ARCH=$(INST_ARCH)" \
"archname=$(ARCHNAME)" \
"cc=$(CC)" \
"ld=$(LINK32)" \
"ccflags=$(subst ",\",$(EXTRACFLAGS) $(DEFINES) $(BUILDOPT))" \
"usecplusplus=$(USE_CPLUSPLUS)" \
"cf_email=$(EMAIL)" \
"d_mymalloc=$(PERL_MALLOC)" \
"i_quadmath=$(I_QUADMATH)" \
win32/GNUmakefile view on Meta::CPAN
"static_ext=$(STATIC_EXT)" \
"usethreads=$(USE_ITHREADS)" \
"useithreads=$(USE_ITHREADS)" \
"usemultiplicity=$(USE_MULTI)" \
"useperlio=$(USE_PERLIO)" \
"use64bitint=$(USE_64_BIT_INT)" \
"uselongdouble=$(USE_LONG_DOUBLE)" \
"usequadmath=$(USE_QUADMATH)" \
"usesitecustomize=$(USE_SITECUST)" \
"default_inc_excludes_dot=$(DEFAULT_INC_EXCLUDES_DOT)" \
"LINK_FLAGS=$(subst ",\",$(LINK_FLAGS))"\
"optimize=$(subst ",\",$(OPTIMIZE))" \
"ARCHPREFIX=$(ARCHPREFIX)" \
"WIN64=$(WIN64)" \
"SKIP_CCHOME_CHECK=$(SKIP_CCHOME_CHECK)"
#
# Top targets
#
.PHONY: all info
all : info rebasePE Extensions_nonxs $(PERLSTATIC)
info :
ifeq ($(CCTYPE),GCC)
@echo # CCTYPE=$(CCTYPE)&& \
echo # GCCBIN=$(GCCBIN)&& \
echo # GCCVER=$(GCCVER1).$(GCCVER2).$(GCCVER3)&& \
echo # GCCTARGET=$(GCCTARGET)&& \
echo # GCCCROSS=$(GCCCROSS)&& \
echo # WIN64=$(WIN64)&& \
echo # ARCHITECTURE=$(ARCHITECTURE)&& \
echo # ARCHNAME=$(ARCHNAME)&& \
echo # MAKE=$(PLMAKE)
else
@echo # CCTYPE=$(CCTYPE)&& \
echo # WIN64=$(WIN64)&& \
echo # ARCHITECTURE=$(ARCHITECTURE)&& \
echo # ARCHNAME=$(ARCHNAME)&& \
echo # MAKE=$(PLMAKE)
endif
ifeq ($(CCTYPE),)
@echo Unable to detect gcc and/or architecture!
@exit 1
endif
..\regcomp$(o) : ..\regcomp.h ..\regcomp_internal.h ..\regnodes.h ..\regcharclass.h
..\regcomp_debug$(o) : ..\regcomp.h ..\regcomp_internal.h ..\regnodes.h ..\regcharclass.h
..\regcomp_invlist$(o) : ..\regcomp.h ..\regcomp_internal.h ..\regnodes.h ..\regcharclass.h
..\regcomp_study$(o) : ..\regcomp.h ..\regcomp_internal.h ..\regnodes.h ..\regcharclass.h
..\regcomp_trie$(o) : ..\regcomp.h ..\regcomp_internal.h ..\regnodes.h ..\regcharclass.h
..\regexec$(o) : ..\regnodes.h ..\regcharclass.h
reonly : ..\regnodes.h $(CONFIG_H) ..\git_version.h $(GLOBEXE) $(HAVEMINIPERL)\
$(CONFIGPM) $(UNIDATAFILES) $(PERLEXE) \
Extensions_reonly
static: $(PERLEXESTATIC)
#----------------------------------------------------------------
$(GLOBEXE) : perlglob.c
ifeq ($(CCTYPE),GCC)
$(LINK32) $(EXTRACFLAGS) $(OPTIMIZE) $(BLINK_FLAGS) -mconsole -o $@ perlglob.c $(LIBFILES)
else
$(CC) $(EXTRACFLAGS) $(OPTIMIZE) $(PDBOUT) -Fe$@ perlglob.c -link $(BLINK_FLAGS) \
setargv$(o) $(LIBFILES)
endif
..\git_version.h : $(HAVEMINIPERL) ..\make_patchnum.pl
$(MINIPERL) -I..\lib ..\make_patchnum.pl
# make sure that we recompile perl.c if the git version changes
..\perl$(o) : ..\git_version.h
..\config.sh : $(CFGSH_TMPL) config_sh.PL FindExt.pm $(HAVEMINIPERL)
$(MINIPERL) -I..\lib config_sh.PL -o ..\config.sh $(CFG_VARS) $(CFGSH_TMPL)
# This target is for when changes to the main config.sh happen.
# Edit config.gc, then make perl using GCC in a minimal configuration (i.e.
# with MULTI, ITHREADS, IMP_SYS, LARGE_FILES and PERLIO off), then make
# this target to regenerate config_H.gc.
regen_config_h:
$(MINIPERL) -I..\lib config_sh.PL --prebuilt $(CFG_VARS) $(CFGSH_TMPL) > ..\config.sh
$(MINIPERL) -I..\lib ..\configpm --chdir=..
-del /f $(CFGH_TMPL)
-$(MINIPERL) -I..\lib config_h.PL "ARCHPREFIX=$(ARCHPREFIX)"
rename config.h $(CFGH_TMPL)
$(CONFIGPM): ..\config.sh config_h.PL ..\git_version.h
$(MINIPERL) -I..\lib ..\configpm --chdir=..
if not exist "$(FULLDIR)" mkdir "$(FULLDIR)"
$(MINIPERL) -I..\lib config_h.PL "CONFIG_H=$(CONFIG_H)" "ARCHPREFIX=$(ARCHPREFIX)"
$(CONFIG_H) : $(CONFIGPM)
# See the comment in Makefile.SH explaining this seemingly cranky ordering
..\lib\buildcustomize.pl : $(MINI_OBJ) ..\write_buildcustomize.pl
ifeq ($(CCTYPE),GCC)
$(LINK32) -mconsole -o $(MINIPERL) $(BLINK_FLAGS) $(MINI_OBJ) $(LIBFILES)
else
$(LINK32) -out:$(MINIPERL) $(BLINK_FLAGS) \
$(DELAYLOAD) $(MINIDELAYLOAD) $(LIBFILES) $(MINI_OBJ)
endif
$(MINIPERL) -I..\lib -f ..\write_buildcustomize.pl ..
#convinence target, get a working miniperl
mp : $(CONFIGPM)
$(MINIDIR)\.exists : $(CFGH_TMPL)
if not exist "$(MINIDIR)" mkdir "$(MINIDIR)"
#
# Copy the template config.h and set configurables at the end of it
# as per the options chosen and compiler used.
# Note: This config.h is only used to build miniperl.exe anyway, but
# it's as well to have its options correct to be sure that it builds
# and so that it's "-V" options are correct for use by makedef.pl. The
# real config.h used to build perl.exe is generated from the top-level
# config_h.SH by config_h.PL (run by miniperl.exe).
#
# MINIDIR generates config.h so miniperl.exe is not rebuilt when the 2nd
# config.h is generated in CONFIGPM target, see also the comments for $(MINI_OBJ).
copy $(CFGH_TMPL) $(MINI_CONFIG_H)
@(echo.&& \
echo #ifndef _config_h_footer_&& \
echo #define _config_h_footer_&& \
echo #undef PTRSIZE&& \
echo #undef SSize_t&& \
echo #undef HAS_ATOLL&& \
echo #undef HAS_STRTOLL&& \
echo #undef HAS_STRTOULL&& \
echo #undef Size_t_size&& \
echo #undef IVTYPE&& \
echo #undef UVTYPE&& \
echo #undef IVSIZE&& \
echo #undef UVSIZE&& \
echo #undef NV_PRESERVES_UV&& \
echo #undef NV_PRESERVES_UV_BITS&& \
echo #undef IVdf&& \
echo #undef UVuf&& \
echo #undef UVof&& \
echo #undef UVxf&& \
echo #undef UVXf&& \
echo #undef USE_64_BIT_INT&& \
echo #undef Gconvert&& \
echo #undef HAS_FREXPL&& \
echo #undef HAS_ISNANL&& \
echo #undef HAS_MODFL&& \
echo #undef HAS_MODFL_PROTO&& \
win32/GNUmakefile view on Meta::CPAN
ifeq ($(USE_IMP_SYS),define)
$(CC) -c -I$(FULLDIR) -I. $(CFLAGS_O) $(CXX_FLAG) $(OBJOUT_FLAG)$@ $(PDBOUT) perllib.c
else
$(CC) -c -I$(FULLDIR) -I. $(CFLAGS_O) $(OBJOUT_FLAG)$@ $(PDBOUT) perllib.c
endif
# We can't have miniperl.exe depend on git_version.h, as miniperl creates it
$(MINI_OBJ) : $(MINIDIR)\.exists $(CORE_NOCFG_H)
$(WIN32_OBJ) : $(CORE_H)
$(CORE_OBJ) : $(CORE_H)
$(DLL_OBJ) : $(CORE_H)
perllibst.h : $(HAVEMINIPERL) $(CONFIGPM) create_perllibst_h.pl
$(MINIPERL) -I..\lib create_perllibst_h.pl
perldll.def : $(HAVEMINIPERL) $(CONFIGPM) ..\embed.fnc ..\makedef.pl
$(MINIPERL) -I..\lib -w ..\makedef.pl PLATFORM=win32 CONFIG_H=$(CONFIG_H) $(OPTIMIZE) $(DEFINES) \
$(BUILDOPT) CCTYPE=$(CCTYPE) TARG_DIR=..\ > perldll.def
$(PERLEXPLIB) : $(PERLIMPLIB)
$(PERLIMPLIB) : perldll.def
ifeq ($(CCTYPE),GCC)
$(IMPLIB) -k -d perldll.def -D $(PERLDLLBASE) -l $(PERLIMPLIB) -e $(PERLEXPLIB)
else
lib -def:perldll.def -machine:$(ARCHITECTURE) /OUT:$(PERLIMPLIB)
endif
$(PERLDLL): $(PERLEXPLIB) $(PERLDLL_OBJ) $(PERLDLL_RES) Extensions_static
ifeq ($(CCTYPE),GCC)
$(LINK32) -shared -o $@ $(BLINK_FLAGS) \
$(PERLDLL_OBJ) $(shell type Extensions_static) $(LIBFILES) $(PERLEXPLIB)
else
$(LINK32) -dll -out:$@ $(BLINK_FLAGS) \
@Extensions_static \
$(DELAYLOAD) $(LIBFILES) \
$(PERLDLL_RES) $(PERLDLL_OBJ) $(PERLEXPLIB)
endif
$(PERLSTATICLIB): $(PERLDLL_OBJ) Extensions_static
ifeq ($(CCTYPE),GCC)
$(LIB32) $(LIB_FLAGS) $@ $(PERLDLL_OBJ)
if exist $(STATICDIR) rmdir /s /q $(STATICDIR)
for %%i in ($(shell type Extensions_static)) do \
@mkdir $(STATICDIR) && cd $(STATICDIR) && \
$(ARCHPREFIX)ar x ..\%%i && \
$(ARCHPREFIX)ar q ..\$@ *$(o) && \
cd .. && rmdir /s /q $(STATICDIR)
else
$(LIB32) $(LIB_FLAGS) -out:$@ @Extensions_static \
$(PERLDLL_OBJ)
endif
$(XCOPY) $(PERLSTATICLIB) $(COREDIR)
$(PERLEXE_RES): perlexe.rc $(PERLEXE_MANIFEST) $(PERLEXE_ICO)
$(MINIDIR)\globals$(o) : $(GENERATED_HEADERS)
$(UUDMAP_H) $(MG_DATA_H) : $(BITCOUNT_H)
$(BITCOUNT_H) : $(GENUUDMAP)
$(GENUUDMAP) $(GENERATED_HEADERS)
$(GENUUDMAP) : ..\mg_raw.h
ifeq ($(CCTYPE),GCC)
$(LINK32) $(CFLAGS_O) -o..\generate_uudmap.exe ..\generate_uudmap.c \
$(BLINK_FLAGS) $(LIBFILES)
else
$(CC) $(CFLAGS_O) $(PDBOUT) -Fe..\generate_uudmap.exe ..\generate_uudmap.c -link $(LIBFILES) $(BLINK_FLAGS)
endif
.PHONY: MakePPPort
MakePPPort : $(HAVEMINIPERL) $(CONFIGPM)
$(MINIPERL) -I..\lib ..\mkppport
# also known as $(HAVE_COREDIR)
.coreheaders : $(CORE_H)
$(XCOPY) *.h $(COREDIR)\\*.*
$(RCOPY) include $(COREDIR)\\*.*
$(XCOPY) ..\\*.h $(COREDIR)\\*.*
$(XCOPY) ..\\charclass_invlists.inc $(COREDIR)\\*.*
rem. > $@
perlmain$(o) : runperl.c $(CONFIGPM)
$(CC) -I$(FULLDIR) $(subst -DPERLDLL,-UPERLDLL,$(CFLAGS_O)) $(OBJOUT_FLAG)$@ $(PDBOUT) -c runperl.c
perlmainst$(o) : runperl.c $(CONFIGPM)
$(CC) -I$(FULLDIR) $(CFLAGS_O) $(OBJOUT_FLAG)$@ $(PDBOUT) -c runperl.c
$(PERLEXE): $(CONFIGPM) $(PERLEXE_OBJ) $(PERLEXE_RES) $(PERLIMPLIB)
ifeq ($(CCTYPE),GCC)
$(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \
$(PERLEXE_OBJ) $(PERLEXE_RES) $(PERLIMPLIB) $(LIBFILES)
else
$(LINK32) -out:$@ $(BLINK_FLAGS) \
$(PERLEXE_OBJ) $(PERLEXE_RES) $(PERLIMPLIB) $(LIBFILES) $(SETARGV_OBJ)
endif
copy $(PERLEXE) $(WPERLEXE)
$(MINIPERL) -I..\lib bin\exetype.pl $(WPERLEXE) WINDOWS
$(PERLEXESTATIC): $(PERLSTATICLIB) $(CONFIGPM) $(PERLEXEST_OBJ) $(PERLEXE_RES)
ifeq ($(CCTYPE),GCC)
$(LINK32) -mconsole -o $@ $(BLINK_FLAGS) \
$(PERLEXEST_OBJ) $(PERLEXE_RES) $(PERLSTATICLIB) $(LIBFILES)
else
$(LINK32) -out:$@ $(BLINK_FLAGS) \
$(PERLEXEST_OBJ) $(PERLEXE_RES) $(PERLSTATICLIB) $(LIBFILES) $(SETARGV_OBJ)
endif
#-------------------------------------------------------------------------------
# There's no direct way to mark a dependency on
# DynaLoader.pm, so this will have to do
#most of deps of this target are in DYNALOADER and therefore omitted here
Extensions : $(PERLDEP) $(DYNALOADER) Extension_lib $(GLOBEXE) MakePPPort
$(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(PLMAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic !Unicode/Normalize
Normalize_static : $(CONFIGPM) $(GLOBEXE) $(HAVE_COREDIR) $(UNIDATAFILES)
$(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(PLMAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --static +Unicode/Normalize
Normalize_dyn : $(PERLDEP) $(DYNALOADER) $(GLOBEXE) $(UNIDATAFILES)
$(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(PLMAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic +Unicode/Normalize
Extensions_reonly : $(PERLDEP) $(DYNALOADER)
$(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(PLMAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --dynamic +re
Exts_static_general : ..\make_ext.pl $(CONFIGPM) Extension_lib $(GLOBEXE) $(HAVE_COREDIR) MakePPPort
$(MINIPERL) -I..\lib ..\make_ext.pl "MAKE=$(PLMAKE)" --dir=$(CPANDIR) --dir=$(DISTDIR) --dir=$(EXTDIR) --static !Unicode/Normalize
win32/GNUmakefile view on Meta::CPAN
$(XCOPY) $(PERLDLL) ..\t\$(NULL)
$(XCOPY) $(GLOBEXE) ..\t\$(NULL)
# If building with gcc versions 4.x.x or greater, then
# the GCC helper DLL will also need copied to the test directory.
# The name of the dll can change, depending upon which vendor has supplied
# your compiler, and upon the values of "x".
# libstdc++-6.dll is copied if it exists as it, too, may then be needed.
# Without this copying, the op/taint.t test script will fail.
ifeq ($(CCTYPE),GCC)
test-prep-gcc :
if exist $(CCDLLDIR)\libgcc_s_seh-1.dll $(XCOPY) $(CCDLLDIR)\libgcc_s_seh-1.dll ..\t\$(NULL)
if exist $(CCDLLDIR)\libgcc_s_sjlj-1.dll $(XCOPY) $(CCDLLDIR)\libgcc_s_sjlj-1.dll ..\t\$(NULL)
if exist $(CCDLLDIR)\libgcc_s_dw2-1.dll $(XCOPY) $(CCDLLDIR)\libgcc_s_dw2-1.dll ..\t\$(NULL)
if exist $(CCDLLDIR)\libstdc++-6.dll $(XCOPY) $(CCDLLDIR)\libstdc++-6.dll ..\t\$(NULL)
if exist $(CCDLLDIR)\libwinpthread-1.dll $(XCOPY) $(CCDLLDIR)\libwinpthread-1.dll ..\t\$(NULL)
if exist $(CCDLLDIR)\libquadmath-0.dll $(XCOPY) $(CCDLLDIR)\libquadmath-0.dll ..\t\$(NULL)
if exist $(CCDLLDIR)\libmcfgthread-1.dll $(XCOPY) $(CCDLLDIR)\libmcfgthread-1.dll ..\t\$(NULL)
if exist $(CCDLLDIR)\libmcfgthread-2.dll $(XCOPY) $(CCDLLDIR)\libmcfgthread-2.dll ..\t\$(NULL)
endif
test : test-prep
set PERL_STATIC_EXT=$(STATIC_EXT) && \
cd ..\t && perl.exe harness $(TEST_ARGS) $(TEST_SWITCHES) $(TEST_FILES)
test_porting : test-prep
set PERL_STATIC_EXT=$(STATIC_EXT) && \
cd ..\t && perl.exe harness $(TEST_ARGS) $(TEST_SWITCHES) porting\*.t ..\lib\diagnostics.t
test-reonly : reonly utils
$(XCOPY) $(PERLEXE) ..\t\$(NULL)
$(XCOPY) $(PERLDLL) ..\t\$(NULL)
$(XCOPY) $(GLOBEXE) ..\t\$(NULL)
cd ..\t && perl.exe harness $(OPT) -re \bpat\\/ $(EXTRA)
regen :
cd .. && regen.pl
test-notty : test-prep
set PERL_STATIC_EXT=$(STATIC_EXT) && \
set PERL_SKIP_TTY_TEST=1 && \
cd ..\t && perl.exe harness $(TEST_ARGS) $(TEST_SWITCHES) $(TEST_FILES)
_test :
$(XCOPY) $(PERLEXE) ..\t\$(NULL)
$(XCOPY) $(PERLDLL) ..\t\$(NULL)
$(XCOPY) $(GLOBEXE) ..\t\$(NULL)
set PERL_STATIC_EXT=$(STATIC_EXT) && \
cd ..\t && perl.exe harness $(TEST_ARGS) $(TEST_SWITCHES) $(TEST_FILES)
_clean :
-@erase miniperlmain$(o)
-@erase $(MINIPERL)
-@erase perlglob$(o)
-@erase perlmain$(o)
-@erase perlmainst$(o)
-@erase /f $(CONFIG_H)
-if exist $(FULLDIR) rmdir /s /q $(FULLDIR)
-@erase /f ..\git_version.h
-@erase $(GLOBEXE)
-@erase $(PERLEXE)
-@erase $(WPERLEXE)
-@erase $(PERLEXESTATIC)
-@erase $(PERLSTATICLIB)
-@erase $(PERLDLL)
-@erase $(CORE_OBJ)
-@erase $(GENUUDMAP) $(GENUUDMAP_OBJ) $(GENERATED_HEADERS)
-@erase .coreheaders
-if exist $(MINIDIR) rmdir /s /q $(MINIDIR)
-if exist $(UNIDATADIR1) rmdir /s /q $(UNIDATADIR1)
-if exist $(UNIDATADIR2) rmdir /s /q $(UNIDATADIR2)
-@erase $(UNIDATAFILES)
-@erase $(WIN32_OBJ)
-@erase $(DLL_OBJ)
-@erase ..\*$(o) ..\*$(a) ..\*.exp *$(o) *$(a) *.exp *.res
-@erase ..\t\*.exe ..\t\*.dll ..\t\*.bat
-@erase *.ilk
-@erase *.pdb ..\*.pdb
-@erase Extensions_static
clean : Extensions_clean _clean
realclean : Extensions_realclean _clean
# Handy way to run perlbug -ok without having to install and run the
# installed perlbug. We don't re-run the tests here - we trust the user.
# Please *don't* use this unless all tests pass.
# If you want to report test failures, use "gmake nok" instead.
ok: utils $(PERLEXE) $(PERLDLL) Extensions_nonxs Extensions
$(PERLEXE) ..\utils\perlbug -ok -s "(UNINSTALLED)"
okfile: utils $(PERLEXE) $(PERLDLL) Extensions_nonxs Extensions
$(PERLEXE) ..\utils\perlbug -ok -s "(UNINSTALLED)" -F perl.ok
nok: utils $(PERLEXE) $(PERLDLL) Extensions_nonxs Extensions
$(PERLEXE) ..\utils\perlbug -nok -s "(UNINSTALLED)"
nokfile: utils $(PERLEXE) $(PERLDLL) Extensions_nonxs Extensions
$(PERLEXE) ..\utils\perlbug -nok -s "(UNINSTALLED)" -F perl.nok
# prevent implicit rule
%.c : %.y
( run in 0.278 second using v1.01-cache-2.11-cpan-eab888a1d7d )