xref: /haiku/src/tools/gensyscalls/Jamfile (revision be2703cb0902a68503eb449cc61026bf5e00e7df)
12e463a12SIngo WeinholdSubDir OBOS_TOP src tools gensyscalls ;
22e463a12SIngo Weinhold
3efd87ab8SIngo Weinhold# build gensyscallinfos
4efd87ab8SIngo Weinhold
5efd87ab8SIngo WeinholdBuildPlatformMain gensyscallinfos : gensyscallinfos.cpp ;
6*be2703cbSAxel 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
36*be2703cbSAxel DörflerUsePublicHeaders os support ;
37efd87ab8SIngo WeinholdBuildPlatformMain gensyscalls : gensyscalls.cpp $(syscallInfos:S=$(SUFOBJ)) ;
382e463a12SIngo WeinholdLinkSharedOSLibs gensyscalls : stdc++.r4 ;
39d21749dbSIngo WeinholdUsePrivateObjectHeaders gensyscalls.cpp : kernel ;
40d21749dbSIngo WeinholdUseArchObjectHeaders gensyscalls.cpp : $(OBOS_ARCH) ;
41efd87ab8SIngo Weinhold
42efd87ab8SIngo Weinhold
43efd87ab8SIngo Weinhold# generate the output files
44efd87ab8SIngo Weinhold
45efd87ab8SIngo Weinhold# place them where there are needed
46efd87ab8SIngo WeinholdMakeLocate <syscalls>syscalls.S.inc : [ FObjectsDir src kernel libroot os ] ;
47efd87ab8SIngo WeinholdMakeLocate <syscalls>syscall_dispatcher.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
69efd87ab8SIngo WeinholdGenSyscallsFile <syscalls>syscalls.S.inc ;
70efd87ab8SIngo WeinholdGenSyscallsDispatcher <syscalls>syscall_dispatcher.h ;
71efd87ab8SIngo Weinhold
72efd87ab8SIngo Weinhold
73efd87ab8SIngo Weinhold# preprocess the syscalls header
74efd87ab8SIngo Weinhold
75efd87ab8SIngo WeinholdSetupIncludes ;
76efd87ab8SIngo WeinholdUsePrivateHeaders kernel ;
77efd87ab8SIngo WeinholdUseArchHeaders $(OBOS_ARCH) ;
78efd87ab8SIngo Weinhold
79efd87ab8SIngo Weinholdrule Preprocess
80efd87ab8SIngo Weinhold{
81efd87ab8SIngo Weinhold	Depends $(<) : $(>) ;
82efd87ab8SIngo Weinhold
83efd87ab8SIngo Weinhold	HDRS on $(<) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ;
84efd87ab8SIngo Weinhold	HDRRULE on $(>) = HdrRule ;
85efd87ab8SIngo Weinhold	HDRSCAN on $(>) = $(HDRPATTERN) ;
86efd87ab8SIngo Weinhold	HDRSEARCH on $(>) =
87efd87ab8SIngo Weinhold		$(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ;
88efd87ab8SIngo Weinhold
89efd87ab8SIngo Weinhold	HDRGRIST on $(>) = $(HDRGRIST) ;
90efd87ab8SIngo Weinhold
91efd87ab8SIngo Weinhold	DEFINES on $(<) += $(DEFINES) ;
92efd87ab8SIngo Weinhold
93efd87ab8SIngo Weinhold	CCFLAGS on $(<) += $(CCFLAGS) $(SUBDIRCCFLAGS) $(OPTIM)
94efd87ab8SIngo Weinhold					   [ FDefines GEN_SYSCALL_INFOS_PROCESSING ] ;
95efd87ab8SIngo Weinhold
96efd87ab8SIngo Weinhold	CCHDRS on $(<) = [ on $(<) FIncludes $(HDRS) ] ;
97efd87ab8SIngo Weinhold	CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
98efd87ab8SIngo Weinhold}
99efd87ab8SIngo Weinhold
100efd87ab8SIngo Weinholdactions Preprocess
101efd87ab8SIngo Weinhold{
102efd87ab8SIngo Weinhold	$(CC) -E "$(2)" $(CCFLAGS) $(CCDEFS) $(CCHDRS) -o "$(1)" ;
103efd87ab8SIngo Weinhold}
104efd87ab8SIngo Weinhold
105efd87ab8SIngo WeinholdPreprocess $(syscallsHeaderPP) : $(syscallsHeader) ;
106efd87ab8SIngo Weinhold
107efd87ab8SIngo Weinhold
108efd87ab8SIngo Weinhold# compile the syscall infos source file
109efd87ab8SIngo Weinhold
110efd87ab8SIngo WeinholdObject $(syscallInfos:S=$(SUFOBJ)) : $(syscallInfos) ;
111