@@ -4,121 +4,137 @@ variables, and defining build commands.
4
4
The package "mylib" will be used here as an example
5
5
6
6
General tips:
7
- mylib_foo is written as $(package)_foo in order to make recipes more similar.
7
+ - mylib_foo is written as $(package)_ foo in order to make recipes more similar.
8
8
9
- Identifiers:
9
+ ## Identifiers
10
10
Each package is required to define at least these variables:
11
- $(package)_version:
11
+
12
+ $(package)_version:
12
13
Version of the upstream library or program. If there is no version, a
13
14
placeholder such as 1.0 can be used.
14
- $(package)_download_path:
15
+
16
+ $(package)_download_path:
15
17
Location of the upstream source, without the file-name. Usually http or
16
18
ftp.
17
- $(package)_file_name:
19
+
20
+ $(package)_file_name:
18
21
The upstream source filename available at the download path.
19
- $(package)_sha256_hash:
22
+
23
+ $(package)_sha256_hash:
20
24
The sha256 hash of the upstream file
21
25
22
26
These variables are optional:
23
- $(package)_build_subdir:
27
+
28
+ $(package)_build_subdir:
24
29
cd to this dir before running configure/build/stage commands.
25
- $(package)_download_file:
30
+
31
+ $(package)_download_file:
26
32
The file-name of the upstream source if it differs from how it should be
27
33
stored locally. This can be used to avoid storing file-names with strange
28
34
characters.
29
- $(package)_dependencies:
35
+
36
+ $(package)_dependencies:
30
37
Names of any other packages that this one depends on.
31
- $(package)_patches:
38
+
39
+ $(package)_patches:
32
40
Filenames of any patches needed to build the package
33
- $(package)_extra_sources:
41
+
42
+ $(package)_extra_sources:
34
43
Any extra files that will be fetched via $(package)_fetch_cmds. These are
35
44
specified so that they can be fetched and verified via 'make download'.
36
45
37
- Build Variables:
46
+
47
+ ## Build Variables:
38
48
After defining the main identifiers, build variables may be added or customized
39
49
before running the build commands. They should be added to a function called
40
50
$(package)_ set_vars. For example:
41
51
42
- define $(package)_set_vars
43
- ...
44
- endef
52
+ define $(package)_set_vars
53
+ ...
54
+ endef
45
55
46
56
Most variables can be prefixed with the host, architecture, or both, to make
47
57
the modifications specific to that case. For example:
48
58
49
- Universal: $(package)_cc=gcc
50
- Linux only: $(package)_linux_cc=gcc
51
- x86_64 only: $(package)_x86_64_cc = gcc
52
- x86_64 linux only: $(package)_x86_64_linux_cc = gcc
59
+ Universal: $(package)_cc=gcc
60
+ Linux only: $(package)_linux_cc=gcc
61
+ x86_64 only: $(package)_x86_64_cc = gcc
62
+ x86_64 linux only: $(package)_x86_64_linux_cc = gcc
53
63
54
64
These variables may be set to override or append their default values.
55
- $(package)_cc
56
- $(package)_cxx
57
- $(package)_objc
58
- $(package)_objcxx
59
- $(package)_ar
60
- $(package)_ranlib
61
- $(package)_libtool
62
- $(package)_nm
63
- $(package)_cflags
64
- $(package)_cxxflags
65
- $(package)_ldflags
66
- $(package)_cppflags
67
- $(package)_config_env
68
- $(package)_build_env
69
- $(package)_stage_env
70
- $(package)_build_opts
71
- $(package)_config_opts
65
+
66
+ $(package)_cc
67
+ $(package)_cxx
68
+ $(package)_objc
69
+ $(package)_objcxx
70
+ $(package)_ar
71
+ $(package)_ranlib
72
+ $(package)_libtool
73
+ $(package)_nm
74
+ $(package)_cflags
75
+ $(package)_cxxflags
76
+ $(package)_ldflags
77
+ $(package)_cppflags
78
+ $(package)_config_env
79
+ $(package)_build_env
80
+ $(package)_stage_env
81
+ $(package)_build_opts
82
+ $(package)_config_opts
72
83
73
84
The * _ env variables are used to add environment variables to the respective
74
85
commands.
75
86
76
87
Many variables respect a debug/release suffix as well, in order to use them for
77
88
only the appropriate build config. For example:
78
- $(package)_cflags_release = -O3
79
- $(package)_cflags_i686_debug = -g
80
- $(package)_config_opts_release = --disable-debug
89
+
90
+ $(package)_cflags_release = -O3
91
+ $(package)_cflags_i686_debug = -g
92
+ $(package)_config_opts_release = --disable-debug
81
93
82
94
These will be used in addition to the options that do not specify
83
95
debug/release. All builds are considered to be release unless DEBUG=1 is set by
84
- the user.
85
-
86
- Other variables may be defined as needed.
96
+ the user. Other variables may be defined as needed.
87
97
88
- Build commands:
98
+ ## Build commands:
89
99
90
100
For each build, a unique build dir and staging dir are created. For example,
91
- work/build/mylib/1.0-1adac830f6e and work/staging/mylib/1.0-1adac830f6e.
101
+ ` work/build/mylib/1.0-1adac830f6e ` and ` work/staging/mylib/1.0-1adac830f6e ` .
92
102
93
103
The following build commands are available for each recipe:
94
104
95
- $(package)_fetch_cmds:
105
+ $(package)_fetch_cmds:
96
106
Runs from: build dir
97
107
Fetch the source file. If undefined, it will be fetched and verified
98
108
against its hash.
99
- $(package)_extract_cmds:
109
+
110
+ $(package)_extract_cmds:
100
111
Runs from: build dir
101
112
Verify the source file against its hash and extract it. If undefined, the
102
113
source is assumed to be a tarball.
103
- $(package)_preprocess_cmds:
114
+
115
+ $(package)_preprocess_cmds:
104
116
Runs from: build dir/$(package)_build_subdir
105
117
Preprocess the source as necessary. If undefined, does nothing.
106
- $(package)_config_cmds:
118
+
119
+ $(package)_config_cmds:
107
120
Runs from: build dir/$(package)_build_subdir
108
121
Configure the source. If undefined, does nothing.
109
- $(package)_build_cmds:
122
+
123
+ $(package)_build_cmds:
110
124
Runs from: build dir/$(package)_build_subdir
111
125
Build the source. If undefined, does nothing.
112
- $(package)_stage_cmds:
126
+
127
+ $(package)_stage_cmds:
113
128
Runs from: build dir/$(package)_build_subdir
114
129
Stage the build results. If undefined, does nothing.
115
130
116
131
The following variables are available for each recipe:
117
- $(1)_staging_dir: package's destination sysroot path
118
- $(1)_staging_prefix_dir: prefix path inside of the package's staging dir
119
- $(1)_extract_dir: path to the package's extracted sources
120
- $(1)_build_dir: path where configure/build/stage commands will be run
121
- $(1)_patch_dir: path where the package's patches (if any) are found
132
+
133
+ $(1)_ staging_dir: package's destination sysroot path
134
+ $(1)_ staging_prefix_dir: prefix path inside of the package's staging dir
135
+ $(1)_ extract_dir: path to the package's extracted sources
136
+ $(1)_ build_dir: path where configure/build/stage commands will be run
137
+ $(1)_ patch_dir: path where the package's patches (if any) are found
122
138
123
139
Notes on build commands:
124
140
@@ -127,4 +143,5 @@ configure step to (usually) correctly configure automatically. Any
127
143
$($(package)_ config_opts) will be appended.
128
144
129
145
Most autotools projects can be properly staged using:
130
- $(MAKE) DESTDIR=$($(package)_staging_dir) install
146
+
147
+ $(MAKE) DESTDIR=$($(package)_staging_dir) install
0 commit comments