xref: /haiku/src/tools/gensyscalls/Jamfile (revision 747fcbd3e0ed8d2275e202b6db289c6d59d09da7)
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 ] ;
471f90f9aaSIngo WeinholdMakeLocate <syscalls>syscall_numbers.h : [ FObjectsDir src kernel core ] ;
48*747fcbd3SIngo WeinholdMakeLocate <syscalls>syscall_table.h : [ FObjectsDir src kernel core ] ;
49*747fcbd3SIngo WeinholdMakeLocate <syscalls>strace_syscalls.h : [ FObjectsDir src apps bin strace ] ;
50efd87ab8SIngo Weinhold
51efd87ab8SIngo WeinholdDepends <dir>objects/x86.R1/kernel/core : <dir>objects/x86.R1/kernel ;
52efd87ab8SIngo Weinhold
53efd87ab8SIngo Weinholdrule GenSyscallsFile {
54efd87ab8SIngo Weinhold	Depends $(1) : gensyscalls ;
55efd87ab8SIngo Weinhold	GenSyscallsFile1 $(1) : gensyscalls ;
56efd87ab8SIngo Weinhold}
57efd87ab8SIngo Weinhold
58efd87ab8SIngo Weinholdactions GenSyscallsFile1 {
59efd87ab8SIngo Weinhold	$(2[1]) -c $(1)
60efd87ab8SIngo Weinhold}
61efd87ab8SIngo Weinhold
62efd87ab8SIngo Weinholdrule GenSyscallsDispatcher {
63efd87ab8SIngo Weinhold	Depends $(1) : gensyscalls ;
64efd87ab8SIngo Weinhold	GenSyscallsDispatcher1 $(1) : gensyscalls ;
65efd87ab8SIngo Weinhold}
66efd87ab8SIngo Weinhold
67efd87ab8SIngo Weinholdactions GenSyscallsDispatcher1 {
68efd87ab8SIngo Weinhold	$(2[1]) -d $(1)
69efd87ab8SIngo Weinhold}
70efd87ab8SIngo Weinhold
711f90f9aaSIngo Weinholdrule GenSyscallsNumbers {
721f90f9aaSIngo Weinhold	Depends $(1) : gensyscalls ;
731f90f9aaSIngo Weinhold	GenSyscallsNumbers1 $(1) : gensyscalls ;
741f90f9aaSIngo Weinhold}
751f90f9aaSIngo Weinhold
761f90f9aaSIngo Weinholdactions GenSyscallsNumbers1 {
771f90f9aaSIngo Weinhold	$(2[1]) -n $(1)
781f90f9aaSIngo Weinhold}
791f90f9aaSIngo Weinhold
80*747fcbd3SIngo Weinholdrule GenSyscallsTable {
81*747fcbd3SIngo Weinhold	Depends $(1) : gensyscalls ;
82*747fcbd3SIngo Weinhold	GenSyscallsTable1 $(1) : gensyscalls ;
83*747fcbd3SIngo Weinhold}
84*747fcbd3SIngo Weinhold
85*747fcbd3SIngo Weinholdactions GenSyscallsTable1 {
86*747fcbd3SIngo Weinhold	$(2[1]) -t $(1)
87*747fcbd3SIngo Weinhold}
88*747fcbd3SIngo Weinhold
89*747fcbd3SIngo Weinholdrule GenSyscallsSTrace {
90*747fcbd3SIngo Weinhold	Depends $(1) : gensyscalls ;
91*747fcbd3SIngo Weinhold	GenSyscallsSTrace1 $(1) : gensyscalls ;
92*747fcbd3SIngo Weinhold}
93*747fcbd3SIngo Weinhold
94*747fcbd3SIngo Weinholdactions GenSyscallsSTrace1 {
95*747fcbd3SIngo Weinhold	$(2[1]) -s $(1)
96*747fcbd3SIngo Weinhold}
97*747fcbd3SIngo Weinhold
98efd87ab8SIngo WeinholdGenSyscallsFile <syscalls>syscalls.S.inc ;
99efd87ab8SIngo WeinholdGenSyscallsDispatcher <syscalls>syscall_dispatcher.h ;
1001f90f9aaSIngo WeinholdGenSyscallsNumbers <syscalls>syscall_numbers.h ;
101*747fcbd3SIngo WeinholdGenSyscallsTable <syscalls>syscall_table.h ;
102*747fcbd3SIngo WeinholdGenSyscallsSTrace <syscalls>strace_syscalls.h ;
103efd87ab8SIngo Weinhold
104efd87ab8SIngo Weinhold
105efd87ab8SIngo Weinhold# preprocess the syscalls header
106efd87ab8SIngo Weinhold
107efd87ab8SIngo WeinholdSetupIncludes ;
108efd87ab8SIngo WeinholdUsePrivateHeaders kernel ;
109efd87ab8SIngo WeinholdUseArchHeaders $(OBOS_ARCH) ;
110efd87ab8SIngo Weinhold
111efd87ab8SIngo Weinholdrule Preprocess
112efd87ab8SIngo Weinhold{
113efd87ab8SIngo Weinhold	Depends $(<) : $(>) ;
114efd87ab8SIngo Weinhold
115efd87ab8SIngo Weinhold	HDRS on $(<) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ;
116efd87ab8SIngo Weinhold	HDRRULE on $(>) = HdrRule ;
117efd87ab8SIngo Weinhold	HDRSCAN on $(>) = $(HDRPATTERN) ;
118efd87ab8SIngo Weinhold	HDRSEARCH on $(>) =
119efd87ab8SIngo Weinhold		$(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ;
120efd87ab8SIngo Weinhold
121efd87ab8SIngo Weinhold	HDRGRIST on $(>) = $(HDRGRIST) ;
122efd87ab8SIngo Weinhold
123efd87ab8SIngo Weinhold	DEFINES on $(<) += $(DEFINES) ;
124efd87ab8SIngo Weinhold
125efd87ab8SIngo Weinhold	CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) $(OPTIM)
126efd87ab8SIngo Weinhold					   [ FDefines GEN_SYSCALL_INFOS_PROCESSING ] ;
127efd87ab8SIngo Weinhold
128efd87ab8SIngo Weinhold	CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
129efd87ab8SIngo Weinhold	CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
130efd87ab8SIngo Weinhold}
131efd87ab8SIngo Weinhold
132efd87ab8SIngo Weinholdactions Preprocess
133efd87ab8SIngo Weinhold{
134efd87ab8SIngo Weinhold	$(CC) -E "$(2)" $(CCFLAGS) $(CCDEFS) $(CCHDRS) -o "$(1)" ;
135efd87ab8SIngo Weinhold}
136efd87ab8SIngo Weinhold
137efd87ab8SIngo WeinholdPreprocess $(syscallsHeaderPP) : $(syscallsHeader) ;
138efd87ab8SIngo Weinhold
139efd87ab8SIngo Weinhold
140efd87ab8SIngo Weinhold# compile the syscall infos source file
141efd87ab8SIngo Weinhold
142efd87ab8SIngo WeinholdObject $(syscallInfos:S=$(SUFOBJ)) : $(syscallInfos) ;
143