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