barebox.mk 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. ################################################################################
  2. #
  3. # barebox
  4. #
  5. ################################################################################
  6. BAREBOX_VERSION = $(call qstrip,$(BR2_TARGET_BAREBOX_VERSION))
  7. ifeq ($(BAREBOX_VERSION),custom)
  8. # Handle custom Barebox tarballs as specified by the configuration
  9. BAREBOX_TARBALL = $(call qstrip,$(BR2_TARGET_BAREBOX_CUSTOM_TARBALL_LOCATION))
  10. BAREBOX_SITE = $(patsubst %/,%,$(dir $(BAREBOX_TARBALL)))
  11. BAREBOX_SOURCE = $(notdir $(BAREBOX_TARBALL))
  12. else ifeq ($(BR2_TARGET_BAREBOX_CUSTOM_GIT),y)
  13. BAREBOX_SITE = $(call qstrip,$(BR2_TARGET_BAREBOX_CUSTOM_GIT_REPO_URL))
  14. BAREBOX_SITE_METHOD = git
  15. else
  16. # Handle stable official Barebox versions
  17. BAREBOX_SOURCE = barebox-$(BAREBOX_VERSION).tar.bz2
  18. BAREBOX_SITE = http://www.barebox.org/download/
  19. endif
  20. BAREBOX_DEPENDENCIES = host-lzop
  21. BAREBOX_LICENSE = GPLv2 with exceptions
  22. BAREBOX_LICENSE_FILES = COPYING
  23. ifneq ($(call qstrip,$(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR)),)
  24. define BAREBOX_APPLY_CUSTOM_PATCHES
  25. support/scripts/apply-patches.sh $(@D) $(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR) \
  26. barebox-$(BAREBOX_VERSION)-\*.patch
  27. endef
  28. BAREBOX_POST_PATCH_HOOKS += BAREBOX_APPLY_CUSTOM_PATCHES
  29. endif
  30. BAREBOX_INSTALL_IMAGES = YES
  31. ifneq ($(BR2_TARGET_BAREBOX_BAREBOXENV),y)
  32. BAREBOX_INSTALL_TARGET = NO
  33. endif
  34. ifeq ($(KERNEL_ARCH),i386)
  35. BAREBOX_ARCH=x86
  36. else ifeq ($(KERNEL_ARCH),powerpc)
  37. BAREBOX_ARCH=ppc
  38. else
  39. BAREBOX_ARCH=$(KERNEL_ARCH)
  40. endif
  41. BAREBOX_MAKE_FLAGS = ARCH=$(BAREBOX_ARCH) CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)"
  42. ifeq ($(BR2_TARGET_BAREBOX_USE_DEFCONFIG),y)
  43. BAREBOX_SOURCE_CONFIG = $(@D)/arch/$(BAREBOX_ARCH)/configs/$(call qstrip,$(BR2_TARGET_BAREBOX_BOARD_DEFCONFIG))_defconfig
  44. else ifeq ($(BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG),y)
  45. BAREBOX_SOURCE_CONFIG = $(BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE)
  46. endif
  47. define BAREBOX_CONFIGURE_CMDS
  48. cp $(BAREBOX_SOURCE_CONFIG) $(@D)/arch/$(BAREBOX_ARCH)/configs/buildroot_defconfig
  49. $(TARGET_MAKE_ENV) $(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(@D) buildroot_defconfig
  50. endef
  51. ifeq ($(BR2_TARGET_BAREBOX_BAREBOXENV),y)
  52. define BAREBOX_BUILD_BAREBOXENV_CMDS
  53. $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -o $(@D)/bareboxenv \
  54. $(@D)/scripts/bareboxenv.c
  55. endef
  56. endif
  57. ifeq ($(BR2_TARGET_BAREBOX_CUSTOM_ENV),y)
  58. BAREBOX_ENV_NAME = $(notdir $(call qstrip, $(BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH)))
  59. define BAREBOX_BUILD_CUSTOM_ENV
  60. $(@D)/scripts/bareboxenv -s \
  61. $(call qstrip, $(BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH)) \
  62. $(@D)/$(BAREBOX_ENV_NAME)
  63. endef
  64. define BAREBOX_INSTALL_CUSTOM_ENV
  65. cp $(@D)/$(BAREBOX_ENV_NAME) $(BINARIES_DIR)
  66. endef
  67. endif
  68. define BAREBOX_BUILD_CMDS
  69. $(BAREBOX_BUILD_BAREBOXENV_CMDS)
  70. $(TARGET_MAKE_ENV) $(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(@D)
  71. $(BAREBOX_BUILD_CUSTOM_ENV)
  72. endef
  73. define BAREBOX_INSTALL_IMAGES_CMDS
  74. if test -h $(@D)/barebox-flash-image ; then \
  75. cp -L $(@D)/barebox-flash-image $(BINARIES_DIR)/barebox.bin ; \
  76. else \
  77. cp $(@D)/barebox.bin $(BINARIES_DIR);\
  78. fi
  79. $(BAREBOX_INSTALL_CUSTOM_ENV)
  80. endef
  81. ifeq ($(BR2_TARGET_BAREBOX_BAREBOXENV),y)
  82. define BAREBOX_INSTALL_TARGET_CMDS
  83. cp $(@D)/bareboxenv $(TARGET_DIR)/usr/bin
  84. endef
  85. endif
  86. $(eval $(generic-package))
  87. ifeq ($(BR2_TARGET_BAREBOX),y)
  88. # we NEED a board defconfig file unless we're at make source
  89. ifeq ($(filter source,$(MAKECMDGOALS)),)
  90. ifeq ($(BAREBOX_SOURCE_CONFIG),)
  91. $(error No Barebox config file. Check your BR2_TARGET_BAREBOX_BOARD_DEFCONFIG or BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE settings)
  92. endif
  93. endif
  94. barebox-menuconfig barebox-xconfig barebox-gconfig barebox-nconfig: barebox-configure
  95. $(TARGET_MAKE_ENV) $(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(BAREBOX_DIR) \
  96. $(subst barebox-,,$@)
  97. rm -f $(BAREBOX_DIR)/.stamp_{built,target_installed,images_installed}
  98. barebox-savedefconfig: barebox-configure
  99. $(TARGET_MAKE_ENV) $(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(BAREBOX_DIR) \
  100. $(subst barebox-,,$@)
  101. ifeq ($(BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG),y)
  102. barebox-update-config: barebox-configure $(BAREBOX_DIR)/.config
  103. cp -f $(BAREBOX_DIR)/.config $(BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE)
  104. barebox-update-defconfig: barebox-savedefconfig
  105. cp -f $(BAREBOX_DIR)/defconfig $(BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE)
  106. else
  107. barebox-update-config: ;
  108. barebox-update-defconfig: ;
  109. endif
  110. endif