1SubDir HAIKU_TOP src bin bash ;
2
3SetSubDirSupportedPlatformsBeOSCompatible ;
4
5# split the canonical target string
6local cpuName = [ Match "([^-]*)-.*" : $(HAIKU_GCC_MACHINE) ] ;
7local vendorName = [ Match "[^-]*-([^-]*)" : $(HAIKU_GCC_MACHINE) ] ;
8local osName = [ Match "[^-]*-[^-]*-([^-]*)" : $(HAIKU_GCC_MACHINE) ] ;
9
10SubDirCcFlags -DHAVE_CONFIG_H -DPROGRAM='\"bash\"' -DSHELL -DLOCALEDIR='\"/boot/common/share/locale\"' -DPACKAGE='\"bash\"' ;
11SubDirCcFlags -DCONF_MACHTYPE='\"$(HAIKU_GCC_MACHINE)\"' ;
12SubDirCcFlags -DCONF_HOSTTYPE='\"$(cpuName)\"' ;
13SubDirCcFlags -DCONF_VENDOR='\"$(vendorName)\"' ;
14#SubDirCcFlags -DCONF_OSTYPE='\"$(osName)\"' ;
15SubDirCcFlags -DCONF_OSTYPE='\"beos\"' ;
16
17# filter warnings we don't want here
18TARGET_WARNING_CCFLAGS = [ FFilter $(TARGET_WARNING_CCFLAGS)
19	: -Wall -Wmissing-prototypes -Wsign-compare ] ;
20
21SubDirSysHdrs [ FDirName $(SUBDIR) include ] ;
22SubDirSysHdrs [ FDirName $(SUBDIR) lib ] ;
23SubDirSysHdrs $(SUBDIR) ;
24
25BuildPlatformMain mksyntax :
26	mksyntax.c ;
27
28BuildPlatformMain mksignames :
29	mksignames.c signames.c ;
30
31SEARCH on [ FGristFiles mksignames.c signames.c ] = [ FDirName $(SUBDIR) support ] ;
32
33rule MkSyntaxExt
34{
35	MakeLocateArch $(<) ;
36	Depends $(<) : mksyntax ;
37	MkSyntaxExt1 $(<) : mksyntax ;
38	LocalClean clean : $(<) ;
39}
40
41actions MkSyntaxExt1
42{
43	$(2) -o $(1) ;
44}
45
46MkSyntaxExt [ FGristFiles syntax.c ] ;
47
48rule MkSignamesExt
49{
50	MakeLocateArch $(<) ;
51	Depends $(<) : mksignames ;
52	MkSignamesExt1 $(<) : mksignames ;
53	LocalClean clean : $(<) ;
54}
55
56actions MkSignamesExt1
57{
58	$(2) $(1) ;
59}
60
61local signamesHeader = <bash>signames.h ;
62if $(TARGET_PLATFORM) = haiku {
63	MakeLocateArch $(signamesHeader) ;
64	File $(signamesHeader) : [ FGristFiles signames_haiku.h ] ;
65} else {
66	MkSignamesExt $(signamesHeader) ;
67}
68
69# Haiku supports job control, BeOS doesn't.
70local jobControlSources ;
71if $(TARGET_PLATFORM_HAIKU_COMPATIBLE) {
72	jobControlSources = jobs.c ;
73} else {
74	jobControlSources = nojobs.c ;
75}
76
77BinCommand bash :
78	assoc.c
79	parse.y shell.c eval.c general.c make_cmd.c print_cmd.c
80	dispose_cmd.c execute_cmd.c variables.c version.c
81	expr.c copy_cmd.c flags.c subst.c hashcmd.c hashlib.c mailcheck.c
82	trap.c alias.c braces.c
83	input.c bashhist.c array.c arrayfunc.c pathexp.c
84	unwind_prot.c bashline.c bracecomp.c error.c
85	list.c stringlib.c locale.c findcmd.c redir.c
86	pcomplete.c pcomplib.c syntax.c xmalloc.c test.c sig.c
87
88	$(jobControlSources)
89
90	: libreadline.a <bash>libglob.a libbuiltins.a libtilde.a libsh.a
91	  libtermcap.a $(TARGET_SELECT_UNAME_ETC_LIB)
92	: bash.rdef ;
93
94# trap.c includes signames.h
95Includes [ FGristFiles trap.c ] : <bash>signames.h ;
96
97# some sources include the generated builtext.h
98Includes [ FGristFiles execute_cmd.c nojobs.c jobs.c parse.c subst.c trap.c
99		parse.y ]
100	: <bash>builtext.h ;
101
102# y.tab.h includes parse.h
103Includes [ FGristFiles y.tab.h ] : [ FGristFiles parse.h ] ;
104
105SubInclude HAIKU_TOP src bin bash lib ;
106SubInclude HAIKU_TOP src bin bash builtins ;
107