2
1

jimtcl.mk 2.7 KB

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