logo

live-bootstrap

Mirror of <https://github.com/fosslinux/live-bootstrap>

main.mk (3657B)


  1. # SPDX-FileCopyrightText: 2021 fosslinux <fosslinux@aussies.space>
  2. # SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
  3. # SPDX-License-Identifier: GPL-3.0-or-later
  4. # Note: This makefile is not currently parallel-safe.
  5. VERSION=5.10.1
  6. PRIVLIB_EXP=$(PREFIX)/lib/perl5/$(VERSION)
  7. CC = gcc
  8. AR = ar
  9. CFLAGS = -DPRIVLIB_EXP=\"$(PRIVLIB_EXP)\" \
  10. -DPERL_CORE=1 \
  11. -I. \
  12. -DVERSION=\"$(VERSION)\" \
  13. -DNO_PPPORT_H
  14. MINICFLAGS = -DPERL_EXTERNAL_GLOB
  15. .PHONY: all
  16. LIBPERL_SRC = av scope op doop doio dump gv hv mg reentr mro perl perly pp \
  17. pp_hot pp_ctl pp_sys regcomp regexec utf8 sv taint toke util \
  18. deb run universal xsutils pad globals perlio perlapi numeric \
  19. mathoms locale pp_pack pp_sort
  20. LIBPERL_OBJ = $(addsuffix .o, $(LIBPERL_SRC))
  21. EXTENSIONS = File/Glob Digest/SHA Data/Dumper Cwd
  22. EXTENSIONS_A := $(foreach f,$(EXTENSIONS), lib/auto/$f/$(notdir $f).a)
  23. EXTENSIONS_PM = ext/File/Glob/Glob.pm ext/Digest/SHA/lib/Digest/SHA.pm \
  24. ext/Data/Dumper/Dumper.pm
  25. all: perl
  26. # miniperl
  27. opmini.c: op.c
  28. cp op.c opmini.c
  29. perlmini.c: perl.c
  30. cp perl.c perlmini.c
  31. generate_uudmap: generate_uudmap.o
  32. $(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
  33. uudmap.h: generate_uudmap
  34. ./generate_uudmap > $@
  35. git_version.h: lib/Config_git.pl
  36. lib/Config_git.pl:
  37. perl make_patchnum.pl
  38. globals.o: uudmap.h
  39. perl.o: git_version.h
  40. perlmini.o: git_version.h
  41. libperl.a: $(LIBPERL_OBJ)
  42. $(AR) cr $@ $^
  43. miniperl: miniperlmain.o opmini.o perlmini.o libperl.a
  44. $(CC) $(CFLAGS) $(MINICFLAGS) $^ $(LDFLAGS) -o $@
  45. # An extremely dodgy hack
  46. sed -i 's/va\.a\.a/v5.8.1/' miniperl
  47. chmod +x miniperl
  48. # full perl
  49. lib/re.pm:
  50. cp ext/re/re.pm lib/re.pm
  51. lib/Config.pm: config.sh miniperl configpm lib/re.pm
  52. ./miniperl -Ilib configpm
  53. writemain: writemain.SH
  54. spitshell=cat eunicefix=true ./$<
  55. perlmain.c: writemain $(EXTENSIONS_A)
  56. ./writemain $(EXTENSIONS_A) > $@
  57. perl: perlmain.o libperl.a $(EXTENSIONS_A) lib/File/Glob.pm lib/Digest/SHA.pm \
  58. lib/DynaLoader.pm lib/XSLoader.pm lib/Data/Dumper.pm
  59. $(CC) $(CFLAGS) perlmain.o libperl.a $(EXTENSIONS_A) -o $@
  60. # An extremely dodgy hack (v2)
  61. sed -i 's/va\.a\.a/v5.8.1/' perl
  62. chmod +x perl
  63. # extensions
  64. autosplit.pl: lib/re.pm lib/Config.pm miniperl
  65. echo 'use AutoSplit; autosplit_lib_modules(@ARGV)' > $@
  66. ext/DynaLoader/DynaLoader.pm: miniperl lib/Config.pm
  67. ./miniperl -Ilib ext/DynaLoader/DynaLoader_pm.PL DynaLoader.pm
  68. mv DynaLoader.pm $@
  69. ext/DynaLoader/XSLoader.pm: miniperl lib/Config.pm
  70. ./miniperl -Ilib ext/DynaLoader/XSLoader_pm.PL XSLoader.pm
  71. mv XSLoader.pm $@
  72. lib/DynaLoader.pm: ext/DynaLoader/DynaLoader.pm
  73. install $< $@
  74. lib/XSLoader.pm: ext/DynaLoader/XSLoader.pm
  75. install $< $@
  76. lib/File/Glob.pm: ext/File/Glob/Glob.pm
  77. install $< $@
  78. lib/Digest/SHA.pm: ext/Digest/SHA/lib/Digest/SHA.pm
  79. install $< $@
  80. lib/Data:
  81. mkdir $@
  82. lib/Data/Dumper.pm: ext/Data/Dumper/Dumper.pm lib/Data
  83. install $< $@
  84. define build_rule
  85. lib/auto/$1/$(notdir $1).a: ext/$1/$(notdir $1).o $(patsubst %.c,%.o,$(wildcard ext/$1/*.c)) $(EXTENSIONS_PM)
  86. mkdir -p lib/auto/$1
  87. $(AR) cr lib/auto/$1/$(notdir $1).a ext/$1/$(notdir $1).o $(patsubst %.c,%.o,$(wildcard ext/$1/*.c))
  88. ext/$1/$(notdir $1).c: miniperl lib/Config.pm
  89. cd ext/$1; \
  90. $(CURDIR)/miniperl -I$(CURDIR)/lib Makefile.PL; \
  91. $(CURDIR)/miniperl -I$(CURDIR)/lib $(CURDIR)/lib/ExtUtils/xsubpp -noprototypes -typemap $(CURDIR)/lib/ExtUtils/typemap `echo $(notdir $1) | sed 's/.*-//'`.xs > $(notdir $1).c
  92. endef
  93. $(foreach f,$(EXTENSIONS),$(eval $(call build_rule,$f)))
  94. install: all
  95. install -D perl "$(DESTDIR)$(PREFIX)/bin/perl"
  96. mkdir -p "$(DESTDIR)$(PRIVLIB_EXP)"
  97. cp -r lib/* "$(DESTDIR)$(PRIVLIB_EXP)"