summaryrefslogtreecommitdiff
path: root/cleopatre/buildroot/package/spidgoahead/spidgoahead.mk
blob: 7c28ba4c3d378d80862c8f6cc6f36a2c4294818c (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
#############################################################
#
# spidgoahead
# Fully featured HTTP server customized for SPC300 board
#
#############################################################

SPIDGOAHEAD_VERSION:=0.0.1
SPIDGOAHEAD_SITE:=$(BASE_DIR)/../application/spidgoahead
SPIDGOAHEAD_NAME:=spidgoahead-$(SPIDGOAHEAD_VERSION)
SPIDGOAHEAD_DIR:=$(BUILD_DIR)/spidgoahead-$(SPIDGOAHEAD_VERSION)

SPIDGOAHEAD_LIBSPID_SITE:=$(BASE_DIR)/../application/libspid

TARGET_ETC_CERTS_DIR = $(TARGET_DIR)/etc/certs

TARGET_LIST_BASE := \
	$(TARGET_DIR)/usr/bin/httpd \
	$(TARGET_DIR)/etc/http/um_httpd.conf

TARGET_LIST_WITH_SSH := \
	$(TARGET_DIR)/etc/server.pem \
	$(TARGET_DIR)/etc/certs/cacert.pem \
	$(TARGET_DIR)/etc/certs/cakey.pem

#  Update target if SSL switch is on
ifeq ($(BR2_SPIDGOAHEAD_SSL_SUPPORT),y)
TARGET_LIST := $(TARGET_LIST_BASE) $(TARGET_LIST_WITH_SSH)
else
TARGET_LIST := $(TARGET_LIST_BASE)
endif

spidgoahead-source:

$(TARGET_ETC_CERTS_DIR):
	mkdir -p $(TARGET_DIR)/etc/certs

$(SPIDGOAHEAD_DIR)/.unpacked:
	ln -s $(SPIDGOAHEAD_SITE) $(SPIDGOAHEAD_DIR)
	touch $(SPIDGOAHEAD_DIR)/.unpacked

$(SPIDGOAHEAD_DIR)/.configured: $(SPIDGOAHEAD_DIR)/.unpacked
	touch $(SPIDGOAHEAD_DIR)/.configured

$(SPIDGOAHEAD_DIR)/.compiled: $(SPIDGOAHEAD_DIR)/.configured \
	$(SPIDGOAHEAD_LIBSPID_SITE)/libspid.so \
	FORCE_SPIDGOAHEAD_MAKE
	@$(TARGET_CONFIGURE_OPTS) \
		$(MAKE) -C $(SPIDGOAHEAD_DIR) \
		SSL_SUPPORT=$(BR2_SPIDGOAHEAD_SSL_SUPPORT) \
		STAGING_DIR="$(STAGING_DIR)"

# httpd file is expected through .compiled rule.
# 'web.tar' is always rebuild with httpd. See spidgoahead makefile.
$(TARGET_DIR)/usr/bin/httpd: $(SPIDGOAHEAD_DIR)/.compiled
	mkdir -p $(TARGET_DIR)/usr/bin
	cp $(SPIDGOAHEAD_DIR)/httpd $@
	mkdir -p $(TARGET_DIR)/usr/share/httpd/web/cgi-bin
	tar -xvf $(SPIDGOAHEAD_DIR)/web.tar -C $(TARGET_DIR)/usr/share/httpd/

# '$(SPIDGOAHEAD_DIR)/server.pem' is expected through .compiled rule.
$(TARGET_DIR)/etc/server.pem:  $(SPIDGOAHEAD_DIR)/.compiled \
	| $(TARGET_ETC_CERTS_DIR)
	cp $(SPIDGOAHEAD_DIR)/server.pem $@

# '$(SPIDGOAHEAD_DIR)/um_httpd.conf' is expected through .compiled rule.
$(TARGET_DIR)/etc/http/um_httpd.conf: $(SPIDGOAHEAD_DIR)/.compiled
	mkdir -p $(TARGET_DIR)/etc/http
	cp $(SPIDGOAHEAD_DIR)/um_httpd.conf $@

# This rule should be in spidgoahead makefile.
# because package's makefile prepare TARGET only.
$(SPIDGOAHEAD_DIR)/server-cert.pem $(SPIDGOAHEAD_DIR)/server.pem: $(SPIDGOAHEAD_DIR)/server-key.pem
	openssl req -x509 -newkey rsa:2048 -days 1024 -keyout \
		$(SPIDGOAHEAD_DIR)/server-key.pem \
		-out $(SPIDGOAHEAD_DIR)/server-cert.pem
	openssl rsa \
		-in $(SPIDGOAHEAD_DIR)/server-key.pem \
		-out $(SPIDGOAHEAD_DIR)/server-key-nopassword.pem
	cat $(SPIDGOAHEAD_DIR)/server-key-nopassword.pem $(SPIDGOAHEAD_DIR)/server-cert.pem \
		> $(SPIDGOAHEAD_DIR)/server.pem

$(TARGET_DIR)/etc/certs/cacert.pem: $(SPIDGOAHEAD_DIR)/server-cert.pem \
	| $(TARGET_ETC_CERTS_DIR)
	cp $< $@

$(TARGET_DIR)/etc/certs/cakey.pem: $(SPIDGOAHEAD_DIR)/server-key.pem \
	| $(TARGET_ETC_CERTS_DIR)
	cp $< $@

spidgoahead: uclibc $(TARGET_LIST)

spidgoahead-clean:
	rm -f $(TARGET_LIST_BASE)
	rm -f $(TARGET_LIST_WITH_SSH)
	-$(MAKE) -C $(SPIDGOAHEAD_DIR) clean

https-clean: spidgoahead-clean

spidgoahead-dirclean:
	rm -f $(SPIDGOAHEAD_DIR)

# We declare FORCE_SPIDGOAHEAD_MAKE rule as PHONY to force compilation
.PHONY: FORCE_SPIDGOAHEAD_MAKE

#############################################################
#
# Toplevel Makefile options
#
#############################################################
ifeq ($(strip $(BR2_PACKAGE_SPIDGOAHEAD)),y)
TARGETS+=spidgoahead
endif