Radix cross Linux

The main Radix cross Linux repository contains the build scripts of packages, which have the most complete and common functionality for desktop machines

452 Commits   2 Branches   1 Tag
Index: Makefile
===================================================================
--- Makefile	(nonexistent)
+++ Makefile	(revision 5)
@@ -0,0 +1,485 @@
+default: all
+
+include Makefile.config
+
+CONFIGPM = lib/Config.pm lib/Config_git.pl
+CONFIGPOD = lib/Config.pod
+STATIC = static
+# Note: MakeMaker will look for xsubpp only in specific locations
+# This is one of them; but dist/ExtUtils-ParseXS isn't.
+XSUBPP = lib/ExtUtils/xsubpp
+# For autodoc.pl below
+MANIFEST_CH = $(shell sed -e 's/\s.*//' MANIFEST | grep '\.[ch]$$')
+# cpan/Pod-Perldoc/Makefile does not accept PERL_CORE=1 in MM command line,
+# it needs the value to be in $ENV
+export PERL_CORE=1
+
+POD1 = $(wildcard pod/*.pod)
+MAN1 = $(patsubst pod/%.pod,man/man1/%$(man1ext),$(POD1))
+
+# Different perl version come with slightly different source lists.
+# Only pick files actually present in the source tree.
+# perl.c, perlmain.c, op.c, miniperl.c should not be in this list
+src = av.c scope.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro_core.c
+src += perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c
+src += utf8.c sv.c taint.c toke.c util.c deb.c run.c universal.c
+src += pad.c globals.c keywords.c perlio.c perlapi.c numeric.c
+src += mathoms.c locale.c pp_pack.c pp_sort.c caretx.c dquote.c $(time64.c)
+src += pp_type.c xsutils.c # cperl
+src += $(wildcard builtin.c)
+src += $(mallocsrc)
+
+obj = $(patsubst %.c,%$o,$(wildcard $(src)))
+
+static_modules = $(patsubst %,%/pm_to_blib,$(fullpath_static_ext))
+dynamic_modules = $(patsubst %,%/pm_to_blib,$(fullpath_dynamic_ext))
+nonxs_modules = $(patsubst %,%/pm_to_blib,$(fullpath_nonxs_ext))
+disabled_dynamic = $(patsubst %,%/pm_to_blib,$(disabled_dynamic_ext))
+disabled_nonxs = $(patsubst %,%/pm_to_blib,$(disabled_nonxs_ext))
+# perl module names for static mods
+static_pmn = $(shell for e in $(fullpath_static_ext) ; do grep '^NAME =' $$e/Makefile | cut -d' ' -f3 ; done)
+
+dynaloader_o = $(patsubst %,%$o,$(dynaloader))
+
+modules = $(fullpath_nonxs_ext) $(fullpath_dynamic_ext) $(fullpath_static_ext)
+disabled = $(disabled_nonxs_ext) $(disabled_dynamic_ext)
+
+# ---[ perl-cross patches ]-----------------------------------------------------
+# Note: the files are patched in-place, and so do not make valid make-rules
+# Because of this, they are only applied loosely, allowing the user to intervene
+# if need be.
+PATCHES_LIST = $(shell find cnf/diffs/$(patchset) -name '*.patch' -exec readlink {} \; )
+CROSSPATCHES = $(addprefix cnf/diffs/,$(PATCHES_LIST))
+CROSSPATCHED = $(patsubst %.patch,%.applied,$(CROSSPATCHES))
+
+.PHONY: crosspatch
+
+crosspatch: $(CROSSPATCHED)
+
+# A minor fix for buildroot, force crosspatching when running "make perl modules"
+# instead of "make all" (can't use a PHONY target here due to rebuilds).
+miniperlmain$O: $(CROSSPATCHED)
+
+# Original versions are not saved anymore; patch generally takes care of this,
+# and if that fails, reaching for the source tarball is the safest option.
+$(CROSSPATCHED): %.applied: %.patch
+	patch -p1 -i $< && touch $@
+
+# ---[ common ]-----------------------------------------------------------------
+
+# Do NOT delete any intermediate files
+# (mostly Makefile.PLs, but others can be annoying too)
+.SECONDARY:
+
+# Force full patching before any building starts. Als, force early building
+# of miniperl -- not really necessary, but makes the build process more logical.
+# No reason to try CC if HOSTCC fails.
+#
+# Dynaloader is also built separately as race failures have been observed.
+all:
+	$(MAKE) crosspatch
+	$(MAKE) miniperl$X
+	$(MAKE) dynaloader
+	$(MAKE) perl$x nonxs_ext utilities extensions pods
+
+config.h: config.sh config_h.SH
+	CONFIG_H=$@ CONFIG_SH=$< ./config_h.SH
+
+xconfig.h: xconfig.sh config_h.SH
+	CONFIG_H=$@ CONFIG_SH=$< ./config_h.SH
+
+# Prevent the following rule from overwriting Makefile by running Makefile.SH
+Makefile:
+	touch $@
+
+%: %.SH config.sh
+	./$*.SH
+
+# ---[ host/miniperl ]----------------------------------------------------------
+
+miniperl$X: miniperlmain$O $(obj:$o=$O) opmini$O perlmini$O
+	$(HOSTCC) $(HOSTLDFLAGS) -o $@ $(filter %$O,$^) $(HOSTLIBS)
+
+miniperlmain$O: miniperlmain.c patchlevel.h
+
+generate_uudmap$X: generate_uudmap.c
+	$(HOSTCC) $(HOSTCFLAGS) -o $@ $^
+
+ifneq ($O,$o)
+%$O: %.c xconfig.h
+	$(HOSTCC) $(HOSTCFLAGS) -c -o $@ $<
+endif
+
+globals$O: uudmap.h bitcount.h
+
+uudmap.h bitcount.h mg_data.h: generate_uudmap$X
+	./generate_uudmap uudmap.h bitcount.h mg_data.h
+
+opmini.c: op.c
+	cp -f $^ $@
+
+opmini$O: opmini.c
+	$(HOSTCC) $(HOSTCFLAGS) -DPERL_EXTERNAL_GLOB -c -o $@ $<
+
+perlmini.c: perl.c
+	cp -f $^ $@
+
+perlmini$O: perlmini.c
+	$(HOSTCC) $(HOSTCFLAGS) -DPERL_IS_MINIPERL -c -o $@ $<
+	
+# Do not re-generate perly.c and perly.h even if they appear out-of-date.
+# Use "make regen_perly" to force update.
+# The following rule cancels implicit .y -> .c make would use otherwise
+%.c: %.y
+
+regen_perly:
+	perl regen_perly.pl
+
+# ---[ site/perl ]--------------------------------------------------------------
+
+ifeq ($(useshrplib),true)
+ifeq ($(soname),)
+perl$x: LDFLAGS += -Wl,-rpath,$(archlib)/CORE
+endif
+endif # or should it be "else"?
+perl$x: LDFLAGS += -Wl,-E
+
+perl$x: perlmain$o $(LIBPERL) $(static_modules) static.list ext.libs
+	$(eval extlibs=$(shell cat ext.libs))
+	$(eval statars=$(shell cat static.list))
+	$(CC) $(LDFLAGS) -o $@ $(filter %$o,$^) $(LIBPERL) $(statars) $(LIBS) $(extlibs)
+
+%$o: %.c config.h
+	$(CC) $(CFLAGS) -c -o $@ $<
+
+globals.o: uudmap.h
+
+perlmain.c: ext/ExtUtils-Miniperl/pm_to_blib $(patsubst %,%/Makefile,$(fullpath_static_ext)) | miniperl$X
+	./miniperl_top -MExtUtils::Miniperl -e 'writemain(\"$@", @ARGV)' $(dynaloader) $(static_pmn)
+
+ext.libs: Makefile.config $(patsubst %,%/Makefile,$(fullpath_static_ext)) | $(static_modules) miniperl$X
+	./miniperl_top extlibs $(static_pmn) > $@
+
+static.list: Makefile.config $(patsubst %,%/Makefile,$(fullpath_static_ext)) | $(static_modules) miniperl$X
+	./miniperl_top statars $(static_pmn) > $@
+
+# ---[ site/library ]-----------------------------------------------------------
+
+libperl: $(LIBPERL)
+
+$(LIBPERL): op$o perl$o $(obj) $(dynaloader_o)
+
+# It would be better to test for static-library suffix here, but the suffix
+# is not used explicitly anywhere else, including in -Dlibperl=
+# So let's make it so that useshrplib controls the kind of the library
+# regardless of the library name.
+# This is in-line with gcc and ld behavior btw.
+ifneq ($(soname),)
+$(LIBPERL): LDDLFLAGS += -Wl,-soname -Wl,$(soname)
+
+  ifneq ($(soname),$(LIBPERL))
+$(LIBPERL): $(soname)
+$(soname):
+	ln -sf $(LIBPERL) $@
+
+  endif
+endif
+
+ifeq ($(useshrplib),true)
+$(LIBPERL):
+	$(CC) $(LDDLFLAGS) -o $@ $(filter %$o,$^) $(LIBS)
+else
+$(LIBPERL):
+	$(AR) cru $@ $(filter %$o,$^)
+	$(RANLIB) $@
+endif
+
+perl.o: git_version.h
+
+config-pm: $(CONFIGPM)
+configpod: $(CONFIGPOD)
+
+# Both git_version.h and lib/Config_git.pl are built
+# by make_patchnum.pl.
+git_version.h lib/Config_git.pl: make_patchnum.pl | miniperl$X
+	./miniperl_top make_patchnum.pl
+
+lib/Config.pm lib/Config_heavy.pl lib/Config.pod: config.sh cflags \
+		lib/Config_git.pl Porting/Glossary | miniperl$X
+	./miniperl_top configpm
+
+# NOT used by this Makefile, replaced by miniperl_top
+# Avoid building.
+lib/buildcustomize.pl: write_buildcustomize.pl | miniperl$X
+	./miniperl$X -Ilib $< > $@
+
+# ---[ Modules ]----------------------------------------------------------------
+
+# The rules below replace make_ext script used in the original
+# perl build chain. Some host-specific functionality is lost.
+# Check miniperl_top to see how it works.
+$(nonxs_modules) $(disabled_nonxs): %/pm_to_blib: | %/Makefile
+	$(MAKE) -C $(dir $@) PERL_CORE=1 LIBPERL=$(LIBPERL)
+
+DynaLoader$o: | ext/DynaLoader/pm_to_blib
+	@if [ ! -f ext/DynaLoader/DynaLoader$o ]; then rm $<; echo "Stale pm_to_blib, please re-run make"; false; fi
+	cp ext/DynaLoader/DynaLoader$o $@
+
+ext/DynaLoader/pm_to_blib: %/pm_to_blib: | %/Makefile
+	$(MAKE) -C $(dir $@) PERL_CORE=1 LIBPERL=$(LIBPERL) LINKTYPE=static
+
+ext/DynaLoader/Makefile: config.h | dist/lib/pm_to_blib
+
+$(static_modules): %/pm_to_blib: | %/Makefile $(nonxs_tgt)
+	$(MAKE) -C $(dir $@) PERL_CORE=1 LIBPERL=$(LIBPERL) LINKTYPE=static static
+
+$(dynamic_modules) $(disabled_dynamic): %/pm_to_blib: | %/Makefile
+	$(MAKE) -C $(dir $@) PERL_CORE=1 LIBPERL=$(LIBPERL) LINKTYPE=dynamic
+
+lib/re.pm: ext/re/re.pm
+	cp -f ext/re/re.pm lib/re.pm
+
+lib/lib.pm: dist/lib/pm_to_blib
+
+.PHONY: preplibrary
+
+preplibrary: $(CONFIGPM) | miniperl$X lib/re.pm lib/lib.pm
+
+dist/lib/Makefile: dist/lib/Makefile.PL cflags config.h $(CONFIGPM) | miniperl$X
+	$(eval top=$(shell echo $(dir $@) | sed -re 's![^/]+!..!g'))
+	cd $(dir $@) && $(top)miniperl_top -I$(top)lib Makefile.PL \
+	 PERL_CORE=1 LIBPERL_A=$(LIBPERL) PERL="$(top)miniperl_top"
+
+%/Makefile: %/Makefile.PL preplibrary cflags config.h | $(XSUBPP) miniperl$X
+	$(eval top=$(shell echo $(dir $@) | sed -re 's![^/]+!..!g'))
+	cd $(dir $@) && $(top)miniperl_top -I$(top)lib Makefile.PL \
+	 INSTALLDIRS=perl INSTALLMAN1DIR=none INSTALLMAN3DIR=none \
+	 PERL_CORE=1 LIBPERL_A=$(LIBPERL) PERL="$(top)miniperl_top"
+
+# Allow building modules by typing "make cpan/Module-Name"
+.PHONY: $(modules) $(disabled)
+$(modules) $(disabled): %: %/pm_to_blib
+
+.PHONY: nonxs_ext dynamic_ext static_ext extensions modules
+
+nonxs_ext: $(nonxs_modules)
+dynamic_ext: $(dynamic_modules)
+static_ext: $(static_modules)
+extensions: cflags nonxs_ext dynamic_ext static_ext
+modules: extensions
+
+# Some things needed to make modules
+%/Makefile.PL: | miniperl$X
+	./miniperl_top make_ext_Makefile.pl $@
+
+cflags: cflags.SH
+	sh $<
+
+.PHONY: makeppport
+
+makeppport: $(CONFIGPM) | miniperl$X
+	./miniper_top mkppport
+
+makefiles: $(patsubst %,%/Makefile,$(modules))
+
+dynaloader: $(dynaloader_o)
+
+$(ppport)/pm_to_blib: dynaloader
+
+$(ppport)/PPPort.pm: $(ppport)/pm_to_blib
+
+$(ppport)/ppport.h: $(ppport)/PPPort.pm | miniperl$X
+	cd $(ppport) && ../../miniperl -I../../lib ppport_h.PL
+
+cpan/Unicode-Normalize/Makefile: lib/unicore/CombiningClass.pl
+dist/Unicode-Normalize/Makefile: lib/unicore/CombiningClass.pl
+
+# mktables does not touch the files unless they need to be rebuilt,
+# which confuses make.
+
+pod/perluniprops.pod: lib/unicore/CombiningClass.pl
+
+lib/unicore/CombiningClass.pl: $(CONFIGPM)
+	./miniperl_top lib/unicore/mktables -w -C lib/unicore -P pod -maketest -makelist -p
+
+# The following rules ensure that modules listed in mkppport.lst get
+# their ppport.h installed. There's a bunch of comments in that file,
+# which must be skipped.
+# 5.36.0: the list now includes Devel-PPPort itself which we have
+# a dedicated rule for, so that one must be excluded as well.
+mkppport_lst = $(shell cat mkppport.lst | grep '^[a-z]' | grep -v Devel-PPPort)
+
+$(patsubst %,%/pm_to_blib,$(mkppport_lst)): %/pm_to_blib: %/ppport.h
+# This one does not fit the above pattern
+cpan/YAML-LibYAML/pm_to_blib: cpan/YAML-LibYAML/LibYAML/ppport.h
+# Having %/ppport.h here isn't a very good idea since the initial ppport.h matches
+# the pattern too
+$(patsubst %,%/ppport.h,$(mkppport_lst)): $(ppport)/ppport.h
+	cp -f $< $@
+
+lib/ExtUtils/xsubpp: dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp
+	cp -f $< $@
+
+# No ExtUtils dependencies here because that's where they come from
+cpan/ExtUtils-ParseXS/Makefile cpan/ExtUtils-Constant/Makefile: \
+		%/Makefile: %/Makefile.PL preplibrary cflags | miniperl$X miniperl_top
+	$(eval top=$(shell echo $(dir $@) | sed -re 's![^/]+!..!g'))
+	cd $(dir $@) && $(top)miniperl_top Makefile.PL PERL_CORE=1 PERL=$(top)miniperl_top
+
+cpan/List-Util/pm_to_blib: | dynaloader
+
+ext/Pod-Functions/pm_to_blib: | cpan/Pod-Simple/pm_to_blib
+
+cpan/Pod-Simple/pm_to_blib: | cpan/Pod-Escapes/pm_to_blib
+
+$(dynamic_modules): | $(dynaloader_o) dist/ExtUtils-CBuilder/pm_to_blib
+
+dist/ExtUtils-CBuilder/pm_to_blib: | cpan/Perl-OSType/pm_to_blib cpan/Text-ParseWords/pm_to_blib
+
+# ---[ modules cleanup & rebuilding ] ------------------------------------------
+
+.PHONY: modules-reset modules-makefiles modules-clean
+
+modules-reset:
+	$(if $(nonxs_modules),    rm -f $(nonxs_modules))
+	$(if $(static_modules),   rm -f $(static_modules))
+	$(if $(dynamic_modules),  rm -f $(dynamic_modules))
+	$(if $(disabled_nonxs),   rm -f $(disabled_nonxs))
+	$(if $(disabled_dynamic), rm -f $(disabled_dynamic))
+
+modules-makefiles: makefiles
+
+modules-clean: clean-modules
+
+# ---[ Misc ]-------------------------------------------------------------------
+
+.PHONY: utilities
+
+utilities: miniperl$X $(CONFIGPM)
+	$(MAKE) -C utils all
+
+# ---[ modules lists ]----------------------------------------------------------
+modules.done: modules.list
+	echo -n > modules.done
+	-cat $< | (while read i; do $(MAKE) -C $$i && echo $$i >> modules.done; done)
+
+modules.pm.list: modules.done
+	-cat $< | (while read i; do find $$i -name '*.pm'; done) > $@
+
+modules.list: $(CONFIGPM) $(MODLISTS) cflags
+	./modconfig_all
+
+# ---[ pods ]-------------------------------------------------------------------
+pod/perltoc.pod: modules extra.pods \
+	pod/perlapi.pod \
+	pod/perlintern.pod \
+	pod/perlmodlib.pod \
+	pod/perluniprops.pod \
+	pod/$(perldeltapod)
+
+pods: pod/perltoc.pod
+
+pod/perltoc.pod: pod/buildtoc | miniperl$X
+	./miniperl_top -f pod/buildtoc -q
+
+pod/perlapi.pod: pod/perlintern.pod
+
+pod/perlintern.pod: autodoc.pl embed.fnc | miniperl$X 
+	./miniperl_top autodoc.pl
+
+pod/perlmodlib.pod: pod/perlmodlib.PL MANIFEST | miniperl$X
+	./miniperl_top pod/perlmodlib.PL -q
+
+pod/$(perldeltapod): pod/perldelta.pod
+	ln -sf $(notdir $<) $@
+
+ifdef perlcdeltapod
+pod/$(perlcdeltapod): pod/perlcdelta.pod
+	ln -sf $(notdir $<) $@
+
+pod/perltoc.pod: pod/$(perlcdeltapod)
+endif
+
+extra.pods: | miniperl$X
+	-@test ! -f extra.pods || rm -f `cat extra.pods`
+	-@rm -f extra.pods
+	-@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
+	    nx=`echo $$x | sed -e "s/README\.//"`; \
+	    ln -sf ../$$x "pod/perl"$$nx".pod" ; \
+	    echo "pod/perl"$$nx".pod" >> extra.pods ; \
+	done
+
+# ---[ test ]-------------------------------------------------------------------
+
+.PHONY: test
+test:
+	cd t/ && ln -sf ../perl . && LD_LIBRARY_PATH=$(PWD) ./perl harness
+
+# ---[ install ]----------------------------------------------------------------
+.PHONY: install install.perl install.sym install.pod
+
+META.yml: Porting/makemeta Porting/Maintainers.pl Porting/Maintainers.pm miniperl$X
+	./miniperl_top $<
+
+install:
+	$(MAKE) install.perl
+	$(MAKE) install.man
+
+install.perl: installperl | miniperl$X
+	./miniperl_top installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS)
+	-@test ! -s extras.lst || $(MAKE) extras.install
+ifneq ($(perlname),perl)
+	-rm -f $(DESTDIR)$(installbin)/$(perlname)$(version)
+	ln -sf $(perlname) $(DESTDIR)$(installbin)/perl
+else
+	-rm -f $(DESTDIR)$(installbin)/$(perlname)$(version)
+endif
+
+install.sym: # deprecated
+
+install.man: installman pod/perltoc.pod | miniperl$X
+	./miniperl_top installman --destdir=$(DESTDIR) $(INSTALLFLAGS)
+
+# ---[ testpack ]---------------------------------------------------------------
+.PHONY: testpack
+testpack: TESTPACK.tar.gz
+
+TESTPACK.list: | miniperl$X TESTPACK.px
+	./miniperl$X TESTPACK.px TESTPACK.list TESTPACK
+TESTPACK.tar.gz: TESTPACK.list
+	tar -zcvf $@ -T $<
+
+# ---[ clean ]------------------------------------------------------------------
+# clean-modules must go BEFORE clean-generated-files because it depends on config.h!
+.PHONY: clean clean-obj clean-generated-files clean-subdirs clean-modules clean-testpack
+clean: clean-obj clean-modules clean-generated-files clean-subdirs clean-testpack
+
+clean-obj:
+	-test -n "$o" && rm -f *$o
+	-test -n "$O" && rm -f *$O
+
+clean-subdirs:
+	$(MAKE) -C utils clean
+
+# assuming modules w/o Makefiles were never built and need no cleaning
+clean-modules: config.h
+	@for i in $(modules disabled); do \
+		test -f $$i/Makefile && \
+		touch $$i/Makefile && \
+		$(MAKE) -C $$i clean \
+		|| true; \
+	done
+
+clean-generated-files:
+	-rm -f uudmap.h opmini.c generate_uudmap$X bitcount.h $(CONFIGPM)
+	-rm -f git_version.h lib/re.pm lib/Config_git.pl
+	-rm -f perlmini.c perlmain.c
+	-rm -f config.h xconfig.h
+	-rm -f pod/perlmodlib.pod
+	-rm -f ext.libs static.list
+	-rm -f $(patsubst %,%/ppport.h,$(mkppport_lst))
+	-rm -f $(ppport)/ppport.h $(ppport)/PPPort.pm
+
+clean-testpack:
+	-rm -fr TESTPACK
+	-rm -f TESTPACK.list
Index: .
===================================================================
--- .	(nonexistent)
+++ .	(revision 5)

Property changes on: .
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~