forked from haiku/haiku
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jamfile
137 lines (117 loc) · 3.87 KB
/
Jamfile
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
SubDir HAIKU_TOP ;
# Prepare the optional build features before parsing the Jamfile tree.
local architectureObject ;
for architectureObject in [ MultiArchSubDirSetup ] {
on $(architectureObject) {
include [ FDirName $(HAIKU_BUILD_RULES_DIR) BuildFeatures ] ;
# Let the target platform depend on the external header directories such
# that those will be unpacked before anything is built for the target
# platform.
Depends $(TARGET_PLATFORM) : [
BuildFeatureAttribute gcc_syslibs_devel : c++-headers
] [
BuildFeatureAttribute gcc_syslibs_devel : gcc-headers
] ;
}
}
# Include required packages:
# primary architecture
AddHaikuImagePackages [ FFilterByBuildFeatures
bash bc coreutils curl freetype icu libsolv zlib zstd
regular_image @{
bzip2 ctags diffutils expat ffmpeg findutils gawk glu grep gutenprint
gzip ilmbase jasper jpeg
less libedit libicns libpcap libpng16 libwebp
mesa mesa_devel mesa_swpipe@!gcc2 mesa_swrast@gcc2
netcat openexr
sed sharutils
tar tcpdump unzip wget which zip
}@
] ;
AddHaikuImageSourcePackages [ FFilterByBuildFeatures
bash bc coreutils
regular_image @{
ctags expat ffmpeg findutils gawk grep gutenprint
gzip
less libicns
sed sharutils
tar wget which
}@
] ;
if $(HAIKU_PACKAGING_ARCHS[1]) != x86_gcc2 {
AddHaikuImagePackages [ FFilterByBuildFeatures gcc_syslibs ] ;
}
if $(HAIKU_PACKAGING_ARCHS[2]) {
# secondary architectures
local architectureObject ;
for architectureObject
in [ MultiArchSubDirSetup $(HAIKU_PACKAGING_ARCHS[2-]) ] {
on $(architectureObject) {
AddHaikuImagePackages [ FFilterByBuildFeatures
curl freetype icu libsolv zlib
regular_image @{
ffmpeg glu jasper jpeg libicns libpng16 libwebp mesa
}@
] ;
if $(TARGET_PACKAGING_ARCH) != x86_gcc2 {
AddHaikuImagePackages [ FFilterByBuildFeatures gcc_syslibs
mesa_swpipe ] ;
}
}
}
}
# If enabled, make sure that OpenSSL is added to the image.
if [ FIsBuildFeatureEnabled openssl ] {
AddHaikuImagePackages openssl ;
}
# add additionally requested packages
AddHaikuImagePackages $(HAIKU_IMAGE_ADDITIONAL_PACKAGES) ;
# Optionally we allow not to include the "src" subdirectory.
if $(HAIKU_DONT_INCLUDE_SRC) {
# Don't include "src", but at least include the stuff needed for the
# build.
SubInclude HAIKU_TOP src build ;
SubInclude HAIKU_TOP src tools ;
} else {
SubInclude HAIKU_TOP src ;
}
if $(HAIKU_INCLUDE_3RDPARTY) {
SubInclude HAIKU_TOP 3rdparty ;
}
# Perform deferred SubIncludes.
ExecuteDeferredSubIncludes ;
# reset subdir
SubDir HAIKU_TOP ;
# Execute post-build-target user config rules.
UserBuildConfigRulePostBuildTargets ;
# specify the Haiku repository contents
include [ FDirName $(HAIKU_BUILD_RULES_DIR) repositories Haiku ] ;
# specify the actual Haiku image contents
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImage ] ;
# specify the additional image contents one for each boot type
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images NetBootArchive ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images FloppyBootImage ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootImage ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuCD ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images AnybootImage ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images MMCImage ] ;
# Check whether all requested optional packages do actually exist.
local package ;
local packageError ;
for package in $(HAIKU_ADDED_OPTIONAL_PACKAGES) {
if ! [ on $(package) return $(HAIKU_OPTIONAL_PACKAGE_EXISTS) ] {
Echo "ERROR: Requested optional package \"$(package)\" does not"
"exist." ;
packageError = 1 ;
}
}
if $(packageError) {
Exit ;
}
# Pseudo-target to build all targets that are localized.
NotFile LocalizedTargets ;
Depends LocalizedTargets : $(HAIKU_LOCALIZED_TARGETS) ;
NotFile catalogs ;
Depends catalogs : $(HAIKU_LOCALE_CATALOGS) ;
NotFile catkeys ;
Depends catkeys : $(HAIKU_LOCALE_OUTPUT_CATKEYS) ;