summaryrefslogtreecommitdiffstats
path: root/rules/nodejs.make
blob: 4c3f2960e9c356e72de31090a1a645a3882576d5 (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
107
108
109
110
111
112
113
114
115
116
117
118
# -*-makefile-*-
#
# Copyright (C) 2015 by Michael Grzeschik <mgr@pengutronix.de>
#
# See CREDITS for details about who has contributed to this project.
#
# For further information about the PTXdist project and license conditions
# see the README file.
#

#
# We provide this package
#
ifndef PTXCONF_ARCH_PPC
PACKAGES-$(PTXCONF_NODEJS) += nodejs
endif

#
# Paths and names
#
NODEJS_VERSION	:= v0.12.7
NODEJS_MD5	:= 5523ec4347d7fe6b0f6dda1d1c7799d5
NODEJS		:= node-$(NODEJS_VERSION)
NODEJS_SUFFIX	:= tar.gz
NODEJS_URL	:= http://nodejs.org/dist/$(NODEJS_VERSION)/$(NODEJS).$(NODEJS_SUFFIX)
NODEJS_SOURCE	:= $(SRCDIR)/$(NODEJS).$(NODEJS_SUFFIX)
NODEJS_DIR	:= $(BUILDDIR)/$(NODEJS)
NODEJS_LICENSE	:= unknown

NODEJS_SOURCES += $(foreach module,$(call remove_quotes, $(PTXCONF_NODEJS_MODULE_LIST)),$(addprefix $(SRCDIR)/,$(addsuffix .npmbox,$(module))))

# ----------------------------------------------------------------------------
# Prepare
# ----------------------------------------------------------------------------

ifeq ($(PTXCONF_ARCH_STRING),i386)
NODEJS_ARCH := ia32
else
NODEJS_ARCH := $(PTXCONF_ARCH_STRING)
endif

NODEJS_CONF_TOOL := autoconf
NODEJS_CONF_OPT := \
	--prefix=/usr \
	--dest-cpu=$(NODEJS_ARCH) \
	--without-snapshot \
	--shared-openssl \
	--shared-zlib \
	--dest-os=linux

# ----------------------------------------------------------------------------
# Install
# ----------------------------------------------------------------------------

# remove version number from package string
define rmversion
$(shell echo $(call remove_quotes, $(1)) | sed 's-\<\([^ @]*\)@[^ @]*\>-\1-g')
endef

node/env = \
	$(CROSS_ENV) \
	npm_config_arch=$(NODEJS_ARCH) \
	npm_prefix=$(NODEJS_PKGDIR)/usr/lib \
	npm_config_cache=$(HOST_NODEJS_PKGDIR)/npm \
	npm_config_tmp=$(PTXDIST_TEMPDIR)/nodejs \
	npm_config_nodedir=$(NODEJS_DIR) \
	$(1)

$(SRCDIR)/%.npmbox:| $(STATEDIR)/host-nodejs.install.post
	@$(call targetinfo)
	@cd $(SRCDIR) && \
		$(call node/env, npmbox $(*) --verbose)

$(STATEDIR)/nodejs.install:
	@$(call targetinfo)
	@$(call install, NODEJS)
	@$(foreach module, $(call remove_quotes, $(PTXCONF_NODEJS_MODULE_LIST)), \
		cd $(NODEJS_PKGDIR)/usr/lib/ && \
		$(call node/env, npmunbox -build-from-source $(SRCDIR)/$(module).npmbox);)
	@$(call touch)


# ----------------------------------------------------------------------------
# Target-Install
# ----------------------------------------------------------------------------

$(STATEDIR)/nodejs.targetinstall:
	@$(call targetinfo)

	@$(call install_init, nodejs)
	@$(call install_fixup, nodejs,PRIORITY,optional)
	@$(call install_fixup, nodejs,SECTION,base)
	@$(call install_fixup, nodejs,AUTHOR,"Michael Grzeschik <mgr@pengutronix.de>")
	@$(call install_fixup, nodejs,DESCRIPTION,missing)

	@$(call install_copy, nodejs, 0, 0, 0755, -, /usr/bin/node)

#	# the place node searches for packages
	@$(call install_link, nodejs, node_modules, /usr/lib/node)

ifdef PTXCONF_NODEJS_NPM
	@$(call install_link, nodejs, ../lib/node_modules/npm/bin/npm-cli.js, /usr/bin/npm)
	@$(call install_tree, nodejs, 0, 0, -, /usr/lib/node_modules/npm/lib/)
	@$(call install_tree, nodejs, 0, 0, -, /usr/lib/node_modules/npm/bin)
	@$(call install_tree, nodejs, 0, 0, -, /usr/lib/node_modules/npm/scripts)
	@$(call install_tree, nodejs, 0, 0, -, /usr/lib/node_modules/npm/node_modules)
	@$(call install_copy, nodejs, 0, 0, 0644, -, /usr/lib/node_modules/npm/package.json)
endif

ifneq ($(call remove_quotes, $(PTXCONF_NODEJS_MODULE_LIST)),)
	@$(foreach module, $(call rmversion, $(PTXCONF_NODEJS_MODULE_LIST)), \
		$(call install_tree, nodejs, 0, 0, -, /usr/lib/node_modules/$(module));)
endif
	@$(call install_finish, nodejs)

	@$(call touch)

# vim: syntax=make