xref: /aosp_15_r20/external/mksh/Android.bp (revision 7c356e860f31eadd15fd599fcfdb9fd21f16a9d4)
1// Copyright © 2010, 2013
2//    Thorsten Glaser <[email protected]>
3// This file is provided under the same terms as mksh.
4
5package {
6    default_applicable_licenses: ["external_mksh_license"],
7}
8
9license {
10    name: "external_mksh_license",
11    visibility: [":__subpackages__"],
12    license_kinds: [
13        "SPDX-license-identifier-BSD",
14        "SPDX-license-identifier-MIT",
15        "SPDX-license-identifier-Unicode-DFS",
16        "legacy_notice",
17    ],
18    license_text: [
19        "NOTICE",
20    ],
21}
22
23cc_defaults {
24    name: "sh-defaults",
25
26    srcs: [
27        "src/lalloc.c",
28        "src/edit.c",
29        "src/eval.c",
30        "src/exec.c",
31        "src/expr.c",
32        "src/funcs.c",
33        "src/histrap.c",
34        "src/jobs.c",
35        "src/lex.c",
36        "src/main.c",
37        "src/misc.c",
38        "src/shf.c",
39        "src/syn.c",
40        "src/tree.c",
41        "src/ulimit.c",
42        "src/var.c",
43    ],
44
45    local_include_dirs: ["src"],
46
47    cflags: [
48        // Compiler flags...
49        "-Wall",
50        "-Werror",
51        "-Wno-deprecated-declarations",
52        "-fno-asynchronous-unwind-tables",
53        "-fno-strict-aliasing",
54        "-fwrapv",
55
56        // ...various options we choose
57        "-DDEBUG_LEAKS",
58        "-DMKSH_ASSUME_UTF8",
59        "-DMKSH_DONT_EMIT_IDSTRING",
60        "-DKSH_VERSIONNAME_VENDOR_EXT=\" Android\"",
61
62        // ...and the defines from src/Rebuild.sh after running src/Build.sh.
63        "-DMKSH_BUILDSH",
64        "-D_GNU_SOURCE",
65        "-DSETUID_CAN_FAIL_WITH_EAGAIN",
66        "-DHAVE_STRING_POOLING=2",
67        "-DHAVE_ATTRIBUTE_BOUNDED=1",
68        "-DHAVE_ATTRIBUTE_FORMAT=1",
69        "-DHAVE_ATTRIBUTE_NORETURN=1",
70        "-DHAVE_ATTRIBUTE_PURE=1",
71        "-DHAVE_ATTRIBUTE_UNUSED=1",
72        "-DHAVE_ATTRIBUTE_USED=1",
73        "-DHAVE_SYS_TIME_H=1",
74        "-DHAVE_TIME_H=1",
75        "-DHAVE_BOTH_TIME_H=1",
76        "-DHAVE_SYS_BSDTYPES_H=0",
77        "-DHAVE_SYS_FILE_H=1",
78        "-DHAVE_SYS_MKDEV_H=0",
79        "-DHAVE_SYS_MMAN_H=1",
80        "-DHAVE_SYS_PARAM_H=1",
81        "-DHAVE_SYS_RESOURCE_H=1",
82        "-DHAVE_SYS_SELECT_H=1",
83        "-DHAVE_SYS_SYSMACROS_H=1",
84        "-DHAVE_BSTRING_H=0",
85        "-DHAVE_GRP_H=1",
86        "-DHAVE_IO_H=0",
87        "-DHAVE_LIBGEN_H=1",
88        "-DHAVE_LIBUTIL_H=0",
89        "-DHAVE_PATHS_H=1",
90        "-DHAVE_STDINT_H=1",
91        "-DHAVE_STRINGS_H=1",
92        "-DHAVE_TERMIOS_H=1",
93        "-DHAVE_ULIMIT_H=0",
94        "-DHAVE_VALUES_H=0",
95        "-DHAVE_CAN_INTTYPES=1",
96        "-DHAVE_CAN_UCBINTS=1",
97        "-DHAVE_CAN_INT8TYPE=1",
98        "-DHAVE_CAN_UCBINT8=1",
99        "-DHAVE_SIG_T=1",
100        "-DHAVE_SYS_ERRLIST=0",
101        "-DHAVE_SYS_SIGNAME=1",
102        "-DHAVE_SYS_SIGLIST=1",
103        "-DHAVE_FLOCK=1",
104        "-DHAVE_LOCK_FCNTL=1",
105        "-DHAVE_RLIMIT=1",
106        "-DHAVE_RLIM_T=1",
107        "-DHAVE_GETRUSAGE=1",
108        "-DHAVE_GETSID=1",
109        "-DHAVE_GETTIMEOFDAY=1",
110        "-DHAVE_KILLPG=1",
111        "-DHAVE_MEMMOVE=1",
112        "-DHAVE_MKNOD=0",
113        "-DHAVE_MMAP=1",
114        "-DHAVE_FTRUNCATE=1",
115        "-DHAVE_NICE=1",
116        "-DHAVE_REVOKE=0",
117        "-DHAVE_SETLOCALE_CTYPE=1",
118        "-DHAVE_LANGINFO_CODESET=1",
119        "-DHAVE_SELECT=1",
120        "-DHAVE_SETRESUGID=1",
121        "-DHAVE_SETGROUPS=1",
122        "-DHAVE_STRERROR=1",
123        "-DHAVE_STRSIGNAL=1",
124        "-DHAVE_STRLCPY=1",
125        "-DHAVE_FLOCK_DECL=1",
126        "-DHAVE_REVOKE_DECL=1",
127        "-DHAVE_SYS_ERRLIST_DECL=0",
128        "-DHAVE_SYS_SIGLIST_DECL=1",
129        "-DHAVE_ST_MTIM=1",
130        "-DHAVE_ST_MTIMENSEC=0",
131        "-DHAVE_PERSISTENT_HISTORY=0",
132        "-DMKSH_BUILD_R=593",
133
134        // Additional flags
135        "-DMKSH_DEFAULT_PROFILEDIR=\"/system/etc\"",
136        "-DMKSHRC_PATH=\"/system/etc/mkshrc\"",
137        "-DMKSH_DEFAULT_EXECSHELL=\"/system/bin/sh\"",
138        "-DMKSH_DEFAULT_TMPDIR=\"/data/local\"",
139    ],
140
141    stl: "none",
142    system_shared_libs: ["libc"],
143}
144
145cc_binary {
146    name: "sh",
147    defaults: ["sh-defaults"],
148    vendor_ramdisk_available: true,
149}
150
151cc_binary {
152    name: "sh.recovery",
153    defaults: ["sh-defaults"],
154    recovery: true,
155    stem: "sh",
156}
157
158cc_binary {
159    name: "sh_vendor",
160    defaults: ["sh-defaults"],
161    stem: "sh",
162    vendor: true,
163    cflags: [
164        // Additional flags for vendor variant
165        "-UMKSH_DEFAULT_PROFILEDIR",
166        "-UMKSHRC_PATH",
167        "-UMKSH_DEFAULT_EXECSHELL",
168        "-DMKSH_DEFAULT_PROFILEDIR=\"/vendor/etc\"",
169        "-DMKSHRC_PATH=\"/vendor/etc/mkshrc\"",
170        "-DMKSH_DEFAULT_EXECSHELL=\"/vendor/bin/sh\"",
171        "-DMKSH_DEFPATH_OVERRIDE=\"/vendor/bin:/vendor/xbin\"",
172    ],
173}
174
175// /system/etc/mkshrc
176prebuilt_etc {
177    name: "mkshrc",
178    src: "mkshrc",
179}
180
181// /vendor/etc/mkshrc
182prebuilt_etc {
183    name: "mkshrc_vendor",
184    src: "mkshrc_vendor",
185    filename: "mkshrc",
186    soc_specific: true,
187}
188