xref: /haiku/src/tools/gensyscalls/Jamfile (revision 1f90f9aa63aadddaf1861b2a1fd2624b0e58ca34)
12e463a12SIngo WeinholdSubDir OBOS_TOP src tools gensyscalls ;
22e463a12SIngo Weinhold
3efd87ab8SIngo Weinhold# build gensyscallinfos
4efd87ab8SIngo Weinhold
5efd87ab8SIngo WeinholdBuildPlatformMain gensyscallinfos : gensyscallinfos.cpp ;
6be2703cbSAxel DörflerLinkSharedOSLibs gensyscallinfos : $(BUILD_LIBSTDC++) ;
7efd87ab8SIngo Weinhold
8efd87ab8SIngo Weinhold
9efd87ab8SIngo Weinhold# generate the syscall infos source file
10efd87ab8SIngo Weinhold
11efd87ab8SIngo WeinholdSetupObjectsDir ;
12efd87ab8SIngo Weinhold
13efd87ab8SIngo Weinholdlocal syscallsHeader = [ FGristFiles syscalls.h ] ;
14efd87ab8SIngo WeinholdSEARCH on $(syscallsHeader) = [ FDirName $(OBOS_TOP) headers private kernel ] ;
15efd87ab8SIngo Weinhold
16efd87ab8SIngo Weinholdlocal syscallsHeaderPP = [ FGristFiles syscalls.h.pp ] ;
17efd87ab8SIngo WeinholdLOCATE on $(syscallsHeaderPP) = $(LOCATE_SOURCE) ;
18efd87ab8SIngo Weinhold
19efd87ab8SIngo Weinholdlocal syscallInfos = [ FGristFiles gensyscalls_infos.c ] ;
20efd87ab8SIngo WeinholdLOCATE on $(syscallInfos) = $(LOCATE_SOURCE) ;
21efd87ab8SIngo Weinhold
22efd87ab8SIngo Weinholdrule GenSyscallInfos {
23efd87ab8SIngo Weinhold	Depends $(1) : gensyscallinfos $(2) ;
24efd87ab8SIngo Weinhold	GenSyscallInfos1 $(1) : gensyscallinfos $(2) ;
25efd87ab8SIngo Weinhold}
26efd87ab8SIngo Weinhold
27efd87ab8SIngo Weinholdactions GenSyscallInfos1 {
28efd87ab8SIngo Weinhold	$(2[1]) $(2[2]) $(1)
29efd87ab8SIngo Weinhold}
30efd87ab8SIngo Weinhold
31efd87ab8SIngo WeinholdGenSyscallInfos $(syscallInfos) : $(syscallsHeaderPP) ;
32efd87ab8SIngo Weinhold
33efd87ab8SIngo Weinhold
34efd87ab8SIngo Weinhold# build gensyscalls
35efd87ab8SIngo Weinhold
36efd87ab8SIngo WeinholdBuildPlatformMain gensyscalls : gensyscalls.cpp $(syscallInfos:S=$(SUFOBJ)) ;
37d5ea40e2SIngo WeinholdLinkSharedOSLibs gensyscalls : $(BUILD_LIBSTDC++) ;
38d21749dbSIngo WeinholdUsePrivateObjectHeaders gensyscalls.cpp : kernel ;
39d21749dbSIngo WeinholdUseArchObjectHeaders gensyscalls.cpp : $(OBOS_ARCH) ;
40efd87ab8SIngo Weinhold
41efd87ab8SIngo Weinhold
42efd87ab8SIngo Weinhold# generate the output files
43efd87ab8SIngo Weinhold
44efd87ab8SIngo Weinhold# place them where there are needed
45efd87ab8SIngo WeinholdMakeLocate <syscalls>syscalls.S.inc : [ FObjectsDir src kernel libroot os ] ;
46efd87ab8SIngo WeinholdMakeLocate <syscalls>syscall_dispatcher.h : [ FObjectsDir src kernel core ] ;
47*1f90f9aaSIngo WeinholdMakeLocate <syscalls>syscall_numbers.h : [ FObjectsDir src kernel core ] ;
48efd87ab8SIngo Weinhold
49efd87ab8SIngo WeinholdDepends <dir>objects/x86.R1/kernel/core : <dir>objects/x86.R1/kernel ;
50efd87ab8SIngo Weinhold
51efd87ab8SIngo Weinholdrule GenSyscallsFile {
52efd87ab8SIngo Weinhold	Depends $(1) : gensyscalls ;
53efd87ab8SIngo Weinhold	GenSyscallsFile1 $(1) : gensyscalls ;
54efd87ab8SIngo Weinhold}
55efd87ab8SIngo Weinhold
56efd87ab8SIngo Weinholdactions GenSyscallsFile1 {
57efd87ab8SIngo Weinhold	$(2[1]) -c $(1)
58efd87ab8SIngo Weinhold}
59efd87ab8SIngo Weinhold
60efd87ab8SIngo Weinholdrule GenSyscallsDispatcher {
61efd87ab8SIngo Weinhold	Depends $(1) : gensyscalls ;
62efd87ab8SIngo Weinhold	GenSyscallsDispatcher1 $(1) : gensyscalls ;
63efd87ab8SIngo Weinhold}
64efd87ab8SIngo Weinhold
65efd87ab8SIngo Weinholdactions GenSyscallsDispatcher1 {
66efd87ab8SIngo Weinhold	$(2[1]) -d $(1)
67efd87ab8SIngo Weinhold}
68efd87ab8SIngo Weinhold
69*1f90f9aaSIngo Weinholdrule GenSyscallsNumbers {
70*1f90f9aaSIngo Weinhold	Depends $(1) : gensyscalls ;
71*1f90f9aaSIngo Weinhold	GenSyscallsNumbers1 $(1) : gensyscalls ;
72*1f90f9aaSIngo Weinhold}
73*1f90f9aaSIngo Weinhold
74*1f90f9aaSIngo Weinholdactions GenSyscallsNumbers1 {
75*1f90f9aaSIngo Weinhold	$(2[1]) -n $(1)
76*1f90f9aaSIngo Weinhold}
77*1f90f9aaSIngo Weinhold
78efd87ab8SIngo WeinholdGenSyscallsFile <syscalls>syscalls.S.inc ;
79efd87ab8SIngo WeinholdGenSyscallsDispatcher <syscalls>syscall_dispatcher.h ;
80*1f90f9aaSIngo WeinholdGenSyscallsNumbers <syscalls>syscall_numbers.h ;
81efd87ab8SIngo Weinhold
82efd87ab8SIngo Weinhold
83efd87ab8SIngo Weinhold# preprocess the syscalls header
84efd87ab8SIngo Weinhold
85efd87ab8SIngo WeinholdSetupIncludes ;
86efd87ab8SIngo WeinholdUsePrivateHeaders kernel ;
87efd87ab8SIngo WeinholdUseArchHeaders $(OBOS_ARCH) ;
88efd87ab8SIngo Weinhold
89efd87ab8SIngo Weinholdrule Preprocess
90efd87ab8SIngo Weinhold{
91efd87ab8SIngo Weinhold	Depends $(<) : $(>) ;
92efd87ab8SIngo Weinhold
93efd87ab8SIngo Weinhold	HDRS on $(<) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ;
94efd87ab8SIngo Weinhold	HDRRULE on $(>) = HdrRule ;
95efd87ab8SIngo Weinhold	HDRSCAN on $(>) = $(HDRPATTERN) ;
96efd87ab8SIngo Weinhold	HDRSEARCH on $(>) =
97efd87ab8SIngo Weinhold		$(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ;
98efd87ab8SIngo Weinhold
99efd87ab8SIngo Weinhold	HDRGRIST on $(>) = $(HDRGRIST) ;
100efd87ab8SIngo Weinhold
101efd87ab8SIngo Weinhold	DEFINES on $(<) += $(DEFINES) ;
102efd87ab8SIngo Weinhold
103efd87ab8SIngo Weinhold	CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) $(OPTIM)
104efd87ab8SIngo Weinhold					   [ FDefines GEN_SYSCALL_INFOS_PROCESSING ] ;
105efd87ab8SIngo Weinhold
106efd87ab8SIngo Weinhold	CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
107efd87ab8SIngo Weinhold	CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
108efd87ab8SIngo Weinhold}
109efd87ab8SIngo Weinhold
110efd87ab8SIngo Weinholdactions Preprocess
111efd87ab8SIngo Weinhold{
112efd87ab8SIngo Weinhold	$(CC) -E "$(2)" $(CCFLAGS) $(CCDEFS) $(CCHDRS) -o "$(1)" ;
113efd87ab8SIngo Weinhold}
114efd87ab8SIngo Weinhold
115efd87ab8SIngo WeinholdPreprocess $(syscallsHeaderPP) : $(syscallsHeader) ;
116efd87ab8SIngo Weinhold
117efd87ab8SIngo Weinhold
118efd87ab8SIngo Weinhold# compile the syscall infos source file
119efd87ab8SIngo Weinhold
120efd87ab8SIngo WeinholdObject $(syscallInfos:S=$(SUFOBJ)) : $(syscallInfos) ;
121