summaryrefslogtreecommitdiffstats
path: root/package/perl/perl.mk
blob: 56abbc1f199cb7de155f4c574f1cc0a93e08df88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#############################################################
#
# perl
#
#############################################################

PERL_VERSION_MAJOR = 16
PERL_VERSION = 5.$(PERL_VERSION_MAJOR).1
PERL_SITE = http://www.cpan.org/src/5.0
PERL_SOURCE = perl-$(PERL_VERSION).tar.bz2
PERL_LICENSE = Artistic
PERL_LICENSE_FILES = Artistic
PERL_INSTALL_STAGING = YES

PERL_DEPENDENCIES = host-qemu
ifeq ($(BR2_PACKAGE_BERKELEYDB),y)
    PERL_DEPENDENCIES += berkeleydb
endif
ifeq ($(BR2_PACKAGE_GDBM),y)
    PERL_DEPENDENCIES += gdbm
endif

PERL_CONF_OPT = -des \
		-Dusecrosscompile \
		-Dtargetrun=$(QEMU_USER) \
		-Dqemulib=$(STAGING_DIR) \
		-Dar="$(TARGET_AR)" \
		-Dcc="$(TARGET_CC)" \
		-Dcpp="$(TARGET_CC)" \
		-Dld="$(TARGET_LD)" \
		-Dnm="$(TARGET_NM)" \
		-Dranlib="$(TARGET_RANLIB)" \
		-Dccflags="$(TARGET_CFLAGS)" \
		-Dldflags="$(TARGET_LDFLAGS) -lgcc_s -lm" \
		-Dlddlflags="-shared" \
		-Dlibc=$(STAGING_DIR)/lib/libc.so \
		-Duseshrplib \
		-Dprefix=/usr \
		-Uoptimize

ifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1)
    PERL_CONF_OPT += -Dusedevel
endif

ifneq ($(BR2_LARGEFILE),y)
    PERL_CONF_OPT += -Uuselargefiles
endif

define PERL_CONFIGURE_CMDS
	rm -f $(@D)/config.sh
	(cd $(@D); ./Configure $(PERL_CONF_OPT))
	echo "# patched values"                                 >>$(@D)/config.sh
	$(SED) '/^myarchname=/d' \
		-e '/^mydomain=/d' \
		-e '/^myhostname=/d' \
		-e '/^myuname=/d' \
		-e '/^osname=/d' \
		-e '/^osvers=/d' \
		-e '/^perladmin=/d' \
		$(@D)/config.sh
	echo "myarchname='$(GNU_TARGET_NAME)'"                  >>$(@D)/config.sh
	echo "mydomain=''"                                      >>$(@D)/config.sh
	echo "myhostname='$(BR2_TARGET_GENERIC_HOSTNAME)'"      >>$(@D)/config.sh
	echo "myuname='Buildroot $(BR2_VERSION_FULL)'"          >>$(@D)/config.sh
	echo "osname='linux'"                                   >>$(@D)/config.sh
	echo "osvers='$(BR2_LINUX_KERNEL_VERSION)'"             >>$(@D)/config.sh
	echo "perladmin='root'"                                 >>$(@D)/config.sh
	(cd $(@D); ./Configure -S)
	cp $(@D)/config.h $(@D)/xconfig.h
	$(SED) 's/UNKNOWN-/Buildroot $(BR2_VERSION_FULL) /' $(@D)/patchlevel.h
endef

define PERL_BUILD_CMDS
	echo "#!/bin/sh"                                > $(@D)/Cross/miniperl
	echo "$(QEMU_USER) $(@D)/miniperl \"\$$@\""     >>$(@D)/Cross/miniperl
	chmod +x $(@D)/Cross/miniperl
	PERL_MM_OPT="PERL=$(@D)/Cross/miniperl" \
		$(MAKE) -C $(@D) all
endef

define PERL_INSTALL_STAGING_CMDS
	$(MAKE) INSTALL_DEPENDENCE= \
		INSTALLFLAGS= \
		DESTDIR="$(STAGING_DIR)" \
		-C $(@D) install.perl
endef

PERL_RUN_PERL = $(QEMU_USER) $(@D)/perl -Ilib
PERL_ARCHNAME = $(shell $(PERL_RUN_PERL) -MConfig -e "print Config->{archname}")
PERL_LIB = $(TARGET_DIR)/usr/lib/perl5/$(PERL_VERSION)
PERL_ARCHLIB = $(PERL_LIB)/$(PERL_ARCHNAME)

define PERL_INSTALL_TARGET_CMDS
	$(MAKE) INSTALL_DEPENDENCE= \
		INSTALLFLAGS=-p \
		DESTDIR="$(TARGET_DIR)" \
		-C $(@D) install.perl
	rm -f $(PERL_ARCHLIB)/CORE/*.h
	find $(PERL_ARCHLIB) -type f -name *.bs -exec rm -f {} \;
endef

define PERL_CLEAN_CMDS
	-$(MAKE) -C $(@D) clean
endef

$(eval $(generic-package))