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