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