From: Vadim Konovalov Date: Mon, 8 Sep 2008 07:04:09 +0000 (+0400) Subject: - crosscompilation - step 1 of N+1 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=5a20539ce2dad615e8310269cba248e457256f8e;p=p5sagit%2Fp5-mst-13.2.git - crosscompilation - step 1 of N+1 Message-ID: <48C49629.4000208@vkonovalov.ru> p4raw-id: //depot/perl@34317 --- diff --git a/Cross/build-arm-n770-sh b/Cross/build-arm-n770-sh index 75922e5..b3e6a67 100755 --- a/Cross/build-arm-n770-sh +++ b/Cross/build-arm-n770-sh @@ -35,7 +35,7 @@ cd .. if [[ "x$1" != xnoconf* ]] ; then # do miniperl on HOST -./Configure -des -D prefix=./dummy -Dusedevel +CROSS_NAME= ./Configure -des -D prefix=./dummy -Dusedevel make miniperl make uudmap.h # fake uudmap, which should be on HOST @@ -58,7 +58,7 @@ PERL_CONFIG_SH=Cross/config-${CROSS_NAME}.sh rm cflags-cross-$CROSS_NAME cp Cross/cflags-cross-$CROSS_NAME . rm Makefile-cross-$CROSS_NAME -sh Cross/Makefile-cross-SH +CROSS_NAME=$CROSS_NAME sh Makefile.SH cp Cross/Makefile-cross-$CROSS_NAME . mkdir xlib @@ -67,8 +67,21 @@ mkdir ${XCOREDIR} #??OBJ_EXT=.${CROSS_NAME}o # TODO these -- AR=${CCPREF}ar LD=${CCPREF}ld -make -f Makefile-cross-$CROSS_NAME xconfig.h -make -f Makefile-cross-$CROSS_NAME libperl.${CROSS_NAME}a OBJ_EXT=.${CROSS_NAME}o EXE_EXT=.$CROSS_NAME LIB_EXT=.${CROSS_NAME}a AR=${CCPREF}ar LD=${CCPREF}ld -make -f Makefile-cross-$CROSS_NAME DynaLoader.${CROSS_NAME}o OBJ_EXT=.${CROSS_NAME}o EXE_EXT=.$CROSS_NAME LIB_EXT=.${CROSS_NAME}a AR=${CCPREF}ar LD=${CCPREF}ld -make -f Makefile-cross-$CROSS_NAME perl.${CROSS_NAME} +cmd="make -f Makefile-cross-$CROSS_NAME xconfig.h" +echo "running $cmd" +$cmd + +echo "running $cmd" +cmd="make -f Makefile-cross-$CROSS_NAME libperl.${CROSS_NAME}a OBJ_EXT=.${CROSS_NAME}o EXE_EXT=.$CROSS_NAME LIB_EXT=.${CROSS_NAME}a AR=${CCPREF}ar LD=${CCPREF}ld" +$cmd + +exit + +cmd="make -f Makefile-cross-$CROSS_NAME DynaLoader.${CROSS_NAME}o OBJ_EXT=.${CROSS_NAME}o EXE_EXT=.$CROSS_NAME LIB_EXT=.${CROSS_NAME}a AR=${CCPREF}ar LD=${CCPREF}ld" +echo "running $cmd" +$cmd + +cmd="make -f Makefile-cross-$CROSS_NAME perl.${CROSS_NAME}" +echo "running $cmd" +$cmd diff --git a/Cross/cflags-cross-arm b/Cross/cflags-cross-arm index 9241d01..d33b113 100755 --- a/Cross/cflags-cross-arm +++ b/Cross/cflags-cross-arm @@ -149,7 +149,7 @@ if test -f .patch; then fi : Can we perhaps use $ansi2knr here - echo "$CROSSCC -c -DPERL_CORE $ccflags $stdflags $optimize $warn $extra" + echo "$CROSSCC -c -DUSE_CROSS_COMPILE -DPERL_CORE $ccflags $stdflags $optimize $warn $extra" eval "$also "'"$CROSSCC -DUSE_CROSS_COMPILE -DPERL_CORE -c $ccflags $stdflags $optimize $warn $extra"' . $TOP/Cross/config-arm.sh diff --git a/Cross/config.sh-arm-linux b/Cross/config.sh-arm-linux index 455ee0e..c883036 100644 --- a/Cross/config.sh-arm-linux +++ b/Cross/config.sh-arm-linux @@ -483,6 +483,7 @@ d_tcsetpgrp='define' d_telldir='define' d_telldirproto='define' d_time='define' +d_timegm='define' d_times='define' d_tm_tm_gmtoff='define' d_tm_tm_zone='define' diff --git a/Cross/config.sh-arm-linux-n770 b/Cross/config.sh-arm-linux-n770 index b936f30..a07fcbb 100644 --- a/Cross/config.sh-arm-linux-n770 +++ b/Cross/config.sh-arm-linux-n770 @@ -483,6 +483,7 @@ d_tcsetpgrp='define' d_telldir='define' d_telldirproto='define' d_time='define' +d_timegm='define' d_times='define' d_tm_tm_gmtoff='define' d_tm_tm_zone='define' @@ -611,6 +612,7 @@ i64type='long long' i8size='1' i8type='char' i_arpainet='define' +i_assert='define' i_bsdioctl='' i_crypt='define' i_db='undef' @@ -623,6 +625,8 @@ i_float='define' i_fp='undef' i_fp_class='undef' i_gdbm='undef' +i_gdbm_ndbm='undef' +i_gdbmndbm='undef' i_grp='define' i_ieeefp='undef' i_inttypes='define' @@ -632,6 +636,7 @@ i_limits='define' i_locale='define' i_machcthr='undef' i_malloc='define' +i_mallocmalloc='undef' i_math='define' i_memory='undef' i_mntent='define' @@ -665,6 +670,7 @@ i_sysmman='define' i_sysmode='undef' i_sysmount='define' i_sysndir='undef' +i_syspoll='define' i_sysparam='define' i_sysresrc='define' i_syssecrt='undef' @@ -806,6 +812,7 @@ nvEUformat='"E"' nvFUformat='"F"' nvGUformat='"G"' nv_preserves_uv_bits='32' +nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0' nveformat='"e"' nvfformat='"f"' nvgformat='"g"' @@ -984,6 +991,7 @@ use64bitall='undef' use64bitint='undef' usecrosscompile='undef' usedl='define' +usedtrace='undef' usefaststdio='define' useithreads='undef' uselargefiles='define' diff --git a/Makefile.SH b/Makefile.SH index d570775..386950c 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -10,6 +10,17 @@ case $PERL_CONFIG_SH in ;; esac +case $CROSS_NAME in +'') + Makefile=Makefile + ;; +*) + # if cross-compilation, the Makefile named accordingly + Makefile=Makefile-cross-$CROSS_NAME + . Cross/config-${CROSS_NAME}.sh + ;; +esac + # H.Merijn Brand [17 Feb 2004] # This comment is just to ensure that Configure will find variables that # are removed/replaced in patches on blead, but are still needed in the @@ -194,9 +205,9 @@ define|true) ;; esac -echo "Extracting Makefile (with variable substitutions)" -$spitshell >Makefile <$Makefile <>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' +$spitshell >>$Makefile <<'!NO!SUBS!' CCCMD = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $@` CCCMDSRC = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $<` CONFIGPM = lib/Config.pm lib/Config_heavy.pl -private = preplibrary $(CONFIGPM) lib/Config.pod lib/ExtUtils/Miniperl.pm + +CONFIGPOD = lib/Config.pod + +CONFIGH = config.h +!NO!SUBS! + ;; +*) + # if cross-compilation +$spitshell >>$Makefile <>$Makefile <<'!NO!SUBS!' + +private = preplibrary $(CONFIGPM) $(CONFIGPOD) lib/ExtUtils/Miniperl.pm # Files to be built with variable substitution before miniperl # is available. @@ -368,7 +414,7 @@ unidatafiles = lib/unicore/Canonical.pl lib/unicore/Exact.pl \ # Directories of Unicode data files generated by mktables unidatadirs = lib/unicore/To lib/unicore/lib -h1 = EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h +h1 = EXTERN.h INTERN.h XSUB.h av.h $(CONFIGH) cop.h cv.h dosish.h h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h opcode.h h3 = pad.h patchlevel.h perl.h perlapi.h perly.h pp.h proto.h regcomp.h h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h @@ -488,7 +534,7 @@ utilities: miniperl$(EXE_EXT) $(CONFIGPM) $(plextract) lib/lib.pm FORCE FORCE: @sh -c true !NO!SUBS! -$spitshell >>Makefile <>$Makefile <uudmap.h +uudmap.h: generate_uudmap\$(HOST_EXE_EXT) + \$(RUN) ./generate_uudmap\$(HOST_EXE_EXT) >uudmap.h -generate_uudmap\$(EXE_EXT): generate_uudmap\$(OBJ_EXT) - \$(CC) -o generate_uudmap \$(LDFLAGS) generate_uudmap\$(OBJ_EXT) \$(libs) +generate_uudmap\$(HOST_EXE_EXT): generate_uudmap\$(OBJ_EXT) + \$(CC) -o generate_uudmap\$(EXE_EXT) \$(LDFLAGS) generate_uudmap\$(OBJ_EXT) \$(libs) !GROK!THIS! -$spitshell >>Makefile <<'!NO!SUBS!' +$spitshell >>$Makefile <<'!NO!SUBS!' miniperlmain$(OBJ_EXT): miniperlmain.c patchlevel.h $(CCCMD) $(PLDLFLAGS) $*.c @@ -538,7 +584,7 @@ esac case "$osname" in aix) - $spitshell >>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' LIBPERL_NONSHR = libperl_nonshr$(LIB_EXT) MINIPERL_NONSHR = miniperl_nonshr$(EXE_EXT) @@ -569,7 +615,7 @@ LIBPERLEXPORT = perl.exp ;; *) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' MINIPERLEXP = miniperl$(EXE_EXT) PERLEXPORT = perl.exp @@ -577,14 +623,14 @@ PERLEXPORT = perl.exp !NO!SUBS! ;; esac - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' perl.exp: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) ./$(MINIPERLEXP) makedef.pl PLATFORM=aix CC_FLAGS="$(OPTIMIZE)" | sort -u | sort -f > perl.exp !NO!SUBS! ;; os2) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' MINIPERLEXP = miniperl perl5.def: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) miniperl.map @@ -593,7 +639,7 @@ perl5.def: $(MINIPERLEXP) makedef.pl config.sh $(SYM) $(SYMH) miniperl.map !NO!SUBS! ;; cygwin) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' cygwin.c: cygwin/cygwin.c $(LNS) cygwin/cygwin.c @@ -609,14 +655,14 @@ esac if test -s $Makefile_s ; then . $Makefile_s - $spitshell >>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' $(DTRACE_H): perldtrace.d $(DTRACE) -h -s perldtrace.d -o $(DTRACE_H) @@ -627,25 +673,25 @@ mydtrace.h: $(DTRACE_H) esac case "$dtrace_o" in ?*) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' $(DTRACE_O): perldtrace.d $(DTRACE) -G -s perldtrace.d -o $(DTRACE_O) $(ndt_obj) !NO!SUBS! ;; esac - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' $(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) !NO!SUBS! case "$useshrplib" in true) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' rm -f $@ $(LD) -o $@ $(SHRPLDFLAGS) $(obj) $(DYNALOADER) $(libs) !NO!SUBS! case "$osname" in aix) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' rm -f libperl$(OBJ_EXT) mv $@ libperl$(OBJ_EXT) $(AR) qv $(LIBPERL) libperl$(OBJ_EXT) @@ -654,14 +700,14 @@ $(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) esac ;; *) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' rm -f $(LIBPERL) $(AR) rcu $(LIBPERL) $(obj) $(DYNALOADER) @$(ranlib) $(LIBPERL) !NO!SUBS! ;; esac - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' # How to build executables. @@ -677,20 +723,20 @@ $(LIBPERL): $& $(obj) $(DYNALOADER) $(LIBPERLEXPORT) case "${osname}${osvers}" in aix*|beos*) - $spitshell >>Makefile <<'!NO!SUBS!' -miniperl: $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) - $(CC) -o miniperl $(CLDFLAGS) \ + $spitshell >>$Makefile <<'!NO!SUBS!' +miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) + $(CC) -o miniperl$(EXE_EXT) $(CLDFLAGS) \ `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) - $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest + $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; next4*) - $spitshell >>Makefile <<'!NO!SUBS!' -miniperl: $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) - $(CC) -o miniperl `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ + $spitshell >>$Makefile <<'!NO!SUBS!' +miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) + $(CC) -o miniperl$(EXE_EXT) `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) - $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest + $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; darwin*) @@ -699,35 +745,35 @@ miniperl: $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) *) case "$ldflags" in *"-flat_namespace"*) ;; *) # to allow opmini.o to override stuff in libperl.dylib - $spitshell >>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) -@rm -f miniperl.xok - $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o miniperl \ + $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o miniperl$(EXE_EXT) \ `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) - $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest + $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; *) - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT) -@rm -f miniperl.xok - $(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl \ + $(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl$(EXE_EXT) \ `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \ miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(libs) - $(LDLIBPTH) $(RUN) ./miniperl -w -Ilib -MExporter -e '' || $(MAKE) minitest + $(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '' || $(MAKE) minitest !NO!SUBS! ;; esac - $spitshell >>Makefile <<'!NO!SUBS!' + $spitshell >>$Makefile <<'!NO!SUBS!' perl$(EXE_EXT): $& perlmain$(OBJ_EXT) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) -@rm -f miniperl.xok @@ -850,7 +896,7 @@ fi # Let's try running the commands with shell. case "${osname}" in catamount) -$spitshell >>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' +$spitshell >>$Makefile <<'!NO!SUBS!' .PHONY: makeppport makeppport: miniperl$(EXE_EXT) $(CONFIGPM) $(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib mkppport @@ -869,7 +915,7 @@ makeppport: miniperl$(EXE_EXT) $(CONFIGPM) ;; esac -$spitshell >>Makefile <<'!NO!SUBS!' +$spitshell >>$Makefile <<'!NO!SUBS!' # We have to call our ./makedir because Ultrix 4.3 make can't handle the line # test -d lib/auto || mkdir lib/auto @@ -885,10 +931,10 @@ preplibrary: miniperl$(EXE_EXT) $(CONFIGPM) lib/lib.pm $(PREPLIBRARY_LIBPERL) "lib")' $(MAKE) lib/re.pm -lib/Config.pod: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary +$(CONFIGPOD): config.sh miniperl$(EXE_EXT) configpm Porting/Glossary $(LDLIBPTH) $(RUN) ./miniperl -Ilib configpm -$(CONFIGPM): lib/Config.pod +$(CONFIGPM): $(CONFIGPOD) lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl$(EXE_EXT) minimod.pl $(CONFIGPM) $(LDLIBPTH) $(RUN) ./miniperl minimod.pl > lib/ExtUtils/Miniperl.pm @@ -1080,11 +1126,11 @@ n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary FORCE @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL) !NO!SUBS! -$spitshell >>Makefile <>$Makefile <>Makefile <<'!NO!SUBS!' +$spitshell >>$Makefile <<'!NO!SUBS!' .PHONY: printconfig printconfig: