summaryrefslogtreecommitdiff
path: root/include/package-version-override.mk
blob: f69d9b1776b46f1a1402136712f6a4fc35aa6ebe (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
# remember the provided package version
PKG_VERSION_ORGINAL:=$(PKG_VERSION)

# in case that another version is provided, overwrite the original
ifeq ($(CONFIG_$(PKG_NAME)_USE_CUSTOM_VERSION),y)
PKG_VERSION:=$(call qstrip,$(CONFIG_$(PKG_NAME)_CUSTOM_VERSION))
PKG_SOURCE:=$(subst $(PKG_VERSION_ORGINAL),$(PKG_VERSION),$(PKG_SOURCE))
PKG_MD5SUM:=
endif

# package specific configuration
# if includeded the package version can be overwritten within the .config file (instead of changing the package specific Makefile)
define Package/$(PKG_NAME)/override_version
	menu "overwrite package version"
		depends on PACKAGE_$(PKG_NAME)
	config $(PKG_NAME)_USE_CUSTOM_VERSION
		depends on PACKAGE_$(PKG_NAME)
		bool "Use custom package version"
		default n
	config $(PKG_NAME)_CUSTOM_VERSION
		depends on $(PKG_NAME)_USE_CUSTOM_VERSION
		string "$(PKG_BASE_NAME) version as string (default version: $(PKG_VERSION_ORGINAL))"
		default "$(PKG_VERSION_ORGINAL)"
	endmenu
endef

# in case that an customer source path is provided, set the acc. default variable
ifeq ($(CONFIG_$(PKG_NAME)_USE_CUSTOM_SOURCE_DIR),y)
PKG_DEFAULT_CUSTOM_SOURCE_DIR:= $(call qstrip,$(CONFIG_$(PKG_NAME)_CUSTOM_SOURCE_DIR))
endif

# package specific configuration
# if includeded the package source path can be overwritten within the .config file (instead of changing the package specific Makefile)
# instead of using a source ball (eg tar.gz) the specified path will point to the location of the sources
define Package/$(PKG_NAME)/override_source_path
	menu "custom source directory"
		depends on PACKAGE_$(PKG_NAME)
	config $(PKG_NAME)_USE_CUSTOM_SOURCE_DIR
		depends on PACKAGE_$(PKG_NAME)
		bool "Use custom source directory"
		default n
	config $(PKG_NAME)_CUSTOM_SOURCE_DIR
		depends on $(PKG_NAME)_USE_CUSTOM_SOURCE_DIR
		string "Custom source directory"
		default "$(PKG_DEFAULT_CUSTOM_SOURCE_DIR)"
	endmenu
endef

# default:
# include both configurations as long this file is included before package.mk
# in case that you're defining your own onfiguration within the package Makefile just include the stuff by yourself
define Package/$(PKG_NAME)/config
   $(call Package/$(PKG_NAME)/override_version)
   $(call Package/$(PKG_NAME)/override_source_path)
endef

# hook for custom source path
# in case that the specified path is valid a link to the PKG_SOURCE_DIR is created
# otherwise the make is stopped
define prepare_custom_source_directory
	if [ -d $(CONFIG_$(PKG_NAME)_CUSTOM_SOURCE_DIR) ]; then \
		rm -Rf $(PKG_BUILD_DIR); \
		echo "Preparing Custom Source Directory link: $(CONFIG_$(PKG_NAME)_CUSTOM_SOURCE_DIR)"; \
		ln -snf $(CONFIG_$(PKG_NAME)_CUSTOM_SOURCE_DIR) $(PKG_BUILD_DIR); \
		[ -x "$(PKG_BUILD_DIR)/autoreconf" ] && (cd $(PKG_BUILD_DIR); autoreconf -i;) \
	else \
		echo "Custom Source Directory $(CONFIG_$(PKG_NAME)_CUSTOM_SOURCE_DIR) is invalid"; \
		false; \
	fi
endef