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