2
1

barebox.mk 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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) \
  26. $(BR2_TARGET_BAREBOX_CUSTOM_PATCH_DIR) \
  27. barebox-$(BAREBOX_VERSION)-\*.patch
  28. endef
  29. BAREBOX_POST_PATCH_HOOKS += BAREBOX_APPLY_CUSTOM_PATCHES
  30. endif
  31. BAREBOX_INSTALL_IMAGES = YES
  32. ifneq ($(BR2_TARGET_BAREBOX_BAREBOXENV),y)
  33. BAREBOX_INSTALL_TARGET = NO
  34. endif
  35. ifeq ($(KERNEL_ARCH),i386)
  36. BAREBOX_ARCH = x86
  37. else ifeq ($(KERNEL_ARCH),powerpc)
  38. BAREBOX_ARCH = ppc
  39. else
  40. BAREBOX_ARCH = $(KERNEL_ARCH)
  41. endif
  42. BAREBOX_MAKE_FLAGS = ARCH=$(BAREBOX_ARCH) CROSS_COMPILE="$(CCACHE) \
  43. $(TARGET_CROSS)"
  44. ifeq ($(BR2_TARGET_BAREBOX_USE_DEFCONFIG),y)
  45. BAREBOX_SOURCE_CONFIG = $(@D)/arch/$(BAREBOX_ARCH)/configs/$(call qstrip,\
  46. $(BR2_TARGET_BAREBOX_BOARD_DEFCONFIG))_defconfig
  47. else ifeq ($(BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG),y)
  48. BAREBOX_SOURCE_CONFIG = $(BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE)
  49. endif
  50. define BAREBOX_CONFIGURE_CMDS
  51. cp $(BAREBOX_SOURCE_CONFIG) \
  52. $(@D)/arch/$(BAREBOX_ARCH)/configs/buildroot_defconfig
  53. $(TARGET_MAKE_ENV) $(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(@D) \
  54. buildroot_defconfig
  55. endef
  56. ifeq ($(BR2_TARGET_BAREBOX_BAREBOXENV),y)
  57. define BAREBOX_BUILD_BAREBOXENV_CMDS
  58. $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) -o $(@D)/bareboxenv \
  59. $(@D)/scripts/bareboxenv.c
  60. endef
  61. endif
  62. ifeq ($(BR2_TARGET_BAREBOX_CUSTOM_ENV),y)
  63. BAREBOX_ENV_NAME = $(notdir $(call qstrip,\
  64. $(BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH)))
  65. define BAREBOX_BUILD_CUSTOM_ENV
  66. $(@D)/scripts/bareboxenv -s \
  67. $(call qstrip, $(BR2_TARGET_BAREBOX_CUSTOM_ENV_PATH)) \
  68. $(@D)/$(BAREBOX_ENV_NAME)
  69. endef
  70. define BAREBOX_INSTALL_CUSTOM_ENV
  71. cp $(@D)/$(BAREBOX_ENV_NAME) $(BINARIES_DIR)
  72. endef
  73. endif
  74. define BAREBOX_BUILD_CMDS
  75. $(BAREBOX_BUILD_BAREBOXENV_CMDS)
  76. $(TARGET_MAKE_ENV) $(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(@D)
  77. $(BAREBOX_BUILD_CUSTOM_ENV)
  78. endef
  79. define BAREBOX_INSTALL_IMAGES_CMDS
  80. if test -h $(@D)/barebox-flash-image ; then \
  81. cp -L $(@D)/barebox-flash-image $(BINARIES_DIR)/barebox.bin ; \
  82. else \
  83. cp $(@D)/barebox.bin $(BINARIES_DIR);\
  84. fi
  85. $(BAREBOX_INSTALL_CUSTOM_ENV)
  86. endef
  87. ifeq ($(BR2_TARGET_BAREBOX_BAREBOXENV),y)
  88. define BAREBOX_INSTALL_TARGET_CMDS
  89. cp $(@D)/bareboxenv $(TARGET_DIR)/usr/bin
  90. endef
  91. endif
  92. $(eval $(generic-package))
  93. ifeq ($(BR2_TARGET_BAREBOX),y)
  94. # we NEED a board defconfig file unless we're at make source
  95. ifeq ($(filter source,$(MAKECMDGOALS)),)
  96. ifeq ($(BAREBOX_SOURCE_CONFIG),)
  97. $(error No Barebox config file. Check your BR2_TARGET_BAREBOX_BOARD_DEFCONFIG or BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE settings)
  98. endif
  99. endif
  100. barebox-menuconfig barebox-xconfig barebox-gconfig barebox-nconfig: barebox-configure
  101. $(TARGET_MAKE_ENV) $(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(BAREBOX_DIR) \
  102. $(subst barebox-,,$@)
  103. rm -f $(BAREBOX_DIR)/.stamp_{built,target_installed,images_installed}
  104. barebox-savedefconfig: barebox-configure
  105. $(TARGET_MAKE_ENV) $(MAKE) $(BAREBOX_MAKE_FLAGS) -C $(BAREBOX_DIR) \
  106. $(subst barebox-,,$@)
  107. ifeq ($(BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG),y)
  108. barebox-update-config: barebox-configure $(BAREBOX_DIR)/.config
  109. cp -f $(BAREBOX_DIR)/.config $(BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE)
  110. barebox-update-defconfig: barebox-savedefconfig
  111. cp -f $(BAREBOX_DIR)/defconfig $(BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE)
  112. else
  113. barebox-update-config: ;
  114. barebox-update-defconfig: ;
  115. endif
  116. endif