xref: /haiku/src/tools/gensyscalls/Jamfile (revision 338b8dc301721b1f472e8297a898d4eaa2f2ee3a)
1*338b8dc3SIngo WeinholdSubDir HAIKU_TOP src tools gensyscalls ;
22e463a12SIngo Weinhold
3efd87ab8SIngo Weinhold# build gensyscallinfos
4efd87ab8SIngo Weinhold
5efd87ab8SIngo WeinholdBuildPlatformMain gensyscallinfos : gensyscallinfos.cpp ;
6*338b8dc3SIngo WeinholdLinkAgainst gensyscallinfos : $(HOST_LIBSTDC++) ;
7efd87ab8SIngo Weinhold
8efd87ab8SIngo Weinhold
9efd87ab8SIngo Weinhold# generate the syscall infos source file
10efd87ab8SIngo Weinhold
11efd87ab8SIngo Weinholdlocal syscallsHeader = [ FGristFiles syscalls.h ] ;
12*338b8dc3SIngo WeinholdSEARCH on $(syscallsHeader) = [ FDirName $(HAIKU_TOP) headers private kernel ] ;
13efd87ab8SIngo Weinhold
14efd87ab8SIngo Weinholdlocal syscallsHeaderPP = [ FGristFiles syscalls.h.pp ] ;
15*338b8dc3SIngo WeinholdMakeLocateArch $(syscallsHeaderPP) ;
16efd87ab8SIngo Weinhold
17efd87ab8SIngo Weinholdlocal syscallInfos = [ FGristFiles gensyscalls_infos.c ] ;
18*338b8dc3SIngo WeinholdMakeLocateArch $(syscallInfos) ;
19efd87ab8SIngo Weinhold
20efd87ab8SIngo Weinholdrule GenSyscallInfos {
21efd87ab8SIngo Weinhold	Depends $(1) : gensyscallinfos $(2) ;
22efd87ab8SIngo Weinhold	GenSyscallInfos1 $(1) : gensyscallinfos $(2) ;
23efd87ab8SIngo Weinhold}
24efd87ab8SIngo Weinhold
25efd87ab8SIngo Weinholdactions GenSyscallInfos1 {
26efd87ab8SIngo Weinhold	$(2[1]) $(2[2]) $(1)
27efd87ab8SIngo Weinhold}
28efd87ab8SIngo Weinhold
29efd87ab8SIngo WeinholdGenSyscallInfos $(syscallInfos) : $(syscallsHeaderPP) ;
30efd87ab8SIngo Weinhold
31efd87ab8SIngo Weinhold
32efd87ab8SIngo Weinhold# build gensyscalls
33efd87ab8SIngo Weinhold
34efd87ab8SIngo WeinholdBuildPlatformMain gensyscalls : gensyscalls.cpp $(syscallInfos:S=$(SUFOBJ)) ;
35*338b8dc3SIngo WeinholdLinkAgainst gensyscalls : $(HOST_LIBSTDC++) ;
36d21749dbSIngo WeinholdUsePrivateObjectHeaders gensyscalls.cpp : kernel ;
37*338b8dc3SIngo WeinholdUseArchObjectHeaders gensyscalls.cpp : $(TARGET_ARCH) ;
38efd87ab8SIngo Weinhold
39efd87ab8SIngo Weinhold
40efd87ab8SIngo Weinhold# generate the output files
41efd87ab8SIngo Weinhold
42efd87ab8SIngo Weinhold# place them where there are needed
43*338b8dc3SIngo Weinholdlocal dir = $(HAIKU_COMMON_DEBUG_OBJECT_DIR) ;
44*338b8dc3SIngo WeinholdMakeLocate <syscalls>syscalls.S.inc : [ FDirName $(dir) system libroot os ] ;
45*338b8dc3SIngo WeinholdMakeLocate <syscalls>syscall_dispatcher.h : [ FDirName $(dir) system kernel ] ;
46*338b8dc3SIngo WeinholdMakeLocate <syscalls>syscall_numbers.h : [ FDirName $(dir) system kernel ] ;
47*338b8dc3SIngo WeinholdMakeLocate <syscalls>syscall_table.h : [ FDirName $(dir) system kernel ] ;
48*338b8dc3SIngo WeinholdMakeLocate <syscalls>strace_syscalls.h : [ FDirName $(dir) bin strace ] ;
49efd87ab8SIngo Weinhold
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
691f90f9aaSIngo Weinholdrule GenSyscallsNumbers {
701f90f9aaSIngo Weinhold	Depends $(1) : gensyscalls ;
711f90f9aaSIngo Weinhold	GenSyscallsNumbers1 $(1) : gensyscalls ;
721f90f9aaSIngo Weinhold}
731f90f9aaSIngo Weinhold
741f90f9aaSIngo Weinholdactions GenSyscallsNumbers1 {
751f90f9aaSIngo Weinhold	$(2[1]) -n $(1)
761f90f9aaSIngo Weinhold}
771f90f9aaSIngo Weinhold
78747fcbd3SIngo Weinholdrule GenSyscallsTable {
79747fcbd3SIngo Weinhold	Depends $(1) : gensyscalls ;
80747fcbd3SIngo Weinhold	GenSyscallsTable1 $(1) : gensyscalls ;
81747fcbd3SIngo Weinhold}
82747fcbd3SIngo Weinhold
83747fcbd3SIngo Weinholdactions GenSyscallsTable1 {
84747fcbd3SIngo Weinhold	$(2[1]) -t $(1)
85747fcbd3SIngo Weinhold}
86747fcbd3SIngo Weinhold
87747fcbd3SIngo Weinholdrule GenSyscallsSTrace {
88747fcbd3SIngo Weinhold	Depends $(1) : gensyscalls ;
89747fcbd3SIngo Weinhold	GenSyscallsSTrace1 $(1) : gensyscalls ;
90747fcbd3SIngo Weinhold}
91747fcbd3SIngo Weinhold
92747fcbd3SIngo Weinholdactions GenSyscallsSTrace1 {
93747fcbd3SIngo Weinhold	$(2[1]) -s $(1)
94747fcbd3SIngo Weinhold}
95747fcbd3SIngo Weinhold
96efd87ab8SIngo WeinholdGenSyscallsFile <syscalls>syscalls.S.inc ;
97efd87ab8SIngo WeinholdGenSyscallsDispatcher <syscalls>syscall_dispatcher.h ;
981f90f9aaSIngo WeinholdGenSyscallsNumbers <syscalls>syscall_numbers.h ;
99747fcbd3SIngo WeinholdGenSyscallsTable <syscalls>syscall_table.h ;
100747fcbd3SIngo WeinholdGenSyscallsSTrace <syscalls>strace_syscalls.h ;
101efd87ab8SIngo Weinhold
102efd87ab8SIngo Weinhold
103efd87ab8SIngo Weinhold# preprocess the syscalls header
104efd87ab8SIngo Weinhold
105efd87ab8SIngo WeinholdUsePrivateHeaders kernel ;
106*338b8dc3SIngo WeinholdUseArchHeaders $(TARGET_ARCH) ;
107efd87ab8SIngo Weinhold
108*338b8dc3SIngo Weinholdrule PreprocessSyscalls
109efd87ab8SIngo Weinhold{
110efd87ab8SIngo Weinhold	Depends $(<) : $(>) ;
111efd87ab8SIngo Weinhold
112*338b8dc3SIngo Weinhold	local headers = [ on $(1) return $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ] ;
113*338b8dc3SIngo Weinhold	local sysHeaders = [ on $(1) return $(SUBDIRSYSHDRS) $(SYSHDRS) ]
114*338b8dc3SIngo Weinhold		$(HAIKU_HDRS) ;
115*338b8dc3SIngo Weinhold
116*338b8dc3SIngo Weinhold	HDRS on $(<) = $(headers) ;
117*338b8dc3SIngo Weinhold	SYSHDRS on $(<) = $(sysHeaders) ;
118*338b8dc3SIngo Weinhold
119efd87ab8SIngo Weinhold	HDRRULE on $(>) = HdrRule ;
120efd87ab8SIngo Weinhold	HDRSCAN on $(>) = $(HDRPATTERN) ;
121*338b8dc3SIngo Weinhold	HDRSEARCH on $(>) = $(headers) $(sysHeaders) $(STDHDRS) ;
122efd87ab8SIngo Weinhold	HDRGRIST on $(>) = $(HDRGRIST) ;
123efd87ab8SIngo Weinhold
124*338b8dc3SIngo Weinhold	DEFINES on $(<) += $(HAIKU_DEFINES) GEN_SYSCALL_INFOS_PROCESSING ;
125efd87ab8SIngo Weinhold
126*338b8dc3SIngo Weinhold	CCFLAGS on $(<) += $(HAIKU_CCFLAGS) $(SUBDIRCCFLAGS) $(OPTIM) ;
127*338b8dc3SIngo Weinhold	CCHDRS on $(<) = [ FIncludes $(headers) ]
128*338b8dc3SIngo Weinhold		$(HDRS_INCLUDES_SEPARATOR) [ FSysIncludes $(sysHeaders) ] ;
129efd87ab8SIngo Weinhold	CCDEFS on $(<) = [ on $(<) FDefines $(DEFINES) ] ;
130efd87ab8SIngo Weinhold}
131efd87ab8SIngo Weinhold
132*338b8dc3SIngo Weinholdactions PreprocessSyscalls
133efd87ab8SIngo Weinhold{
134*338b8dc3SIngo Weinhold	$(HAIKU_C++) -xc++ -E "$(2)" $(CCFLAGS) $(CCDEFS) $(CCHDRS) -o "$(1)" ;
135efd87ab8SIngo Weinhold}
136efd87ab8SIngo Weinhold
137*338b8dc3SIngo WeinholdPreprocessSyscalls $(syscallsHeaderPP) : $(syscallsHeader) ;
138efd87ab8SIngo Weinhold
139efd87ab8SIngo Weinhold
140efd87ab8SIngo Weinhold# compile the syscall infos source file
141efd87ab8SIngo Weinhold
142*338b8dc3SIngo WeinholdSYSHDRS on $(syscallInfos:S=$(SUFOBJ)) = $(HAIKU_HDRS) ;
143efd87ab8SIngo WeinholdObject $(syscallInfos:S=$(SUFOBJ)) : $(syscallInfos) ;
144