xref: /OK3568_Linux_fs/buildroot/package/jimtcl/jimtcl.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1################################################################################
2#
3# jimtcl
4#
5################################################################################
6
7JIMTCL_VERSION = 0.80
8JIMTCL_SITE = $(call github,msteveb,jimtcl,$(JIMTCL_VERSION))
9JIMTCL_INSTALL_STAGING = YES
10JIMTCL_LICENSE = BSD-2-Clause
11JIMTCL_LICENSE_FILES = LICENSE
12
13JIMTCL_HEADERS_TO_INSTALL = \
14	jim.h \
15	jim-eventloop.h \
16	jim-signal.h \
17	jim-subcmd.h \
18	jim-win32compat.h \
19	jim-config.h
20
21ifeq ($(BR2_PACKAGE_TCL),)
22define JIMTCL_LINK_TCLSH
23	ln -sf jimsh $(TARGET_DIR)/usr/bin/tclsh
24endef
25endif
26
27ifeq ($(BR2_STATIC_LIBS),y)
28define JIMTCL_INSTALL_LIB
29	$(INSTALL) -m 0644 -D $(@D)/libjim.a $(1)/usr/lib/libjim.a
30endef
31else
32JIMTCL_SHARED = --shared
33define JIMTCL_INSTALL_LIB
34	$(INSTALL) -m 0755 -D $(@D)/libjim.so.$(JIMTCL_VERSION) \
35		$(1)/usr/lib/libjim.so.$(JIMTCL_VERSION)
36	ln -sf libjim.so.$(JIMTCL_VERSION) $(1)/usr/lib/libjim.so
37endef
38endif
39
40# build system doesn't use autotools, but does use an old version of
41# gnuconfig which doesn't know all the architectures supported by
42# Buildroot, so update config.guess / config.sub like we do in
43# pkg-autotools.mk
44JIMTCL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK
45HOST_JIMTCL_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK
46
47# jimtcl really wants to find a existing $CXX, so feed it false
48# when we do not have one.
49define JIMTCL_CONFIGURE_CMDS
50	(cd $(@D); \
51		$(TARGET_CONFIGURE_OPTS) \
52		CCACHE=none \
53		$(if $(BR2_INSTALL_LIBSTDCPP),,CXX=false) \
54		./configure --prefix=/usr \
55		--host=$(GNU_TARGET_NAME) \
56		--build=$(GNU_HOST_NAME) \
57		$(JIMTCL_SHARED) \
58	)
59endef
60
61# -fPIC is mandatory to build shared libraries on certain architectures
62# (e.g. SPARC) and causes no harm or drawbacks on other architectures
63define JIMTCL_BUILD_CMDS
64	SH_CFLAGS="-fPIC" \
65	SHOBJ_CFLAGS="-fPIC" \
66	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
67endef
68
69define JIMTCL_INSTALL_STAGING_CMDS
70	for i in $(JIMTCL_HEADERS_TO_INSTALL); do \
71		cp -a $(@D)/$$i $(STAGING_DIR)/usr/include/ || exit 1 ; \
72	done; \
73	$(call JIMTCL_INSTALL_LIB,$(STAGING_DIR))
74endef
75
76define JIMTCL_INSTALL_TARGET_CMDS
77	$(INSTALL) -D $(@D)/jimsh $(TARGET_DIR)/usr/bin/jimsh
78	$(call JIMTCL_INSTALL_LIB,$(TARGET_DIR))
79	$(JIMTCL_LINK_TCLSH)
80endef
81
82define HOST_JIMTCL_CONFIGURE_CMDS
83	cd $(@D) && \
84		$(HOST_CONFIGURE_OPTS) \
85		CCACHE=none \
86		./configure --prefix=$(HOST_DIR) --shared
87endef
88
89define HOST_JIMTCL_BUILD_CMDS
90	$(HOST_MAKE_ENV) $(MAKE) -C $(@D)
91endef
92
93define HOST_JIMTCL_INSTALL_CMDS
94	for i in $(JIMTCL_HEADERS_TO_INSTALL); do \
95		cp -a $(@D)/$$i $(HOST_DIR)/usr/include/ || exit 1 ; \
96	done;
97	$(INSTALL) -m 0755 -D $(@D)/libjim.so.$(JIMTCL_VERSION) \
98		$(HOST_DIR)/usr/lib/libjim.so.$(JIMTCL_VERSION)
99	ln -sf libjim.so.$(JIMTCL_VERSION) $(HOST_DIR)/usr/lib/libjim.so
100endef
101
102$(eval $(generic-package))
103$(eval $(host-generic-package))
104