1 PKGDIR ?= .. 2 L4DIR ?= $(PKGDIR)/../../.. 3 4 TARGET = libfsserver.so libfsserver.a 5 PC_FILENAME = libfsserver 6 7 # Locations for interface input and generated output. 8 9 IDL_DIR = $(PKGDIR)/../libsystypes/idl 10 IDL_MK_DIR = $(L4DIR)/idl4re/mk 11 IDL_BUILD_DIR = . 12 IDL_EXPORT_DIR = $(OBJ_BASE)/include/contrib/$(CONTRIB_INCDIR)/fsserver 13 14 include $(IDL_MK_DIR)/idl.mk 15 16 # Compound interfaces. 17 18 directory_object_NAME = DirectoryObject 19 directory_object_INTERFACES = directory notification 20 21 filesystem_object_NAME = FilesystemObject 22 filesystem_object_INTERFACES = filesystem filesystem_factory 23 24 mapped_file_object_NAME = MappedFileObject 25 mapped_file_object_INTERFACES = dataspace file flush mapped_file notification 26 27 opener_context_object_NAME = OpenerContextObject 28 opener_context_object_INTERFACES = dataspace opener_context 29 30 pipe_object_NAME = PipeObject 31 pipe_object_INTERFACES = dataspace flush notification pipe 32 33 COMP_INTERFACES_CC = directory_object filesystem_object mapped_file_object opener_context_object pipe_object 34 35 # Individual interfaces. 36 37 CLIENT_INTERFACES_CC = notifier 38 39 SERVER_INTERFACES_CC = opener pipe_opener $(call common_interfaces,$(COMP_INTERFACES_CC)) 40 41 # Generated and plain source files. 42 43 CLIENT_INTERFACES_SRC_CC = $(call interfaces_to_client_cc,$(CLIENT_INTERFACES_CC)) 44 45 SERVER_INTERFACES_SRC_CC = $(call interfaces_to_server_cc,$(SERVER_INTERFACES_CC) $(COMP_INTERFACES_CC)) 46 47 PLAIN_SRC_CC = \ 48 directories/directory_accessor.cc \ 49 directories/directory_provider.cc \ 50 directories/directory_resource.cc \ 51 directories/ext2_directory_accessor.cc \ 52 directories/host_directory_accessor.cc \ 53 files/block_file_accessor.cc \ 54 files/block_file_opener.cc \ 55 files/ext2_file_accessor.cc \ 56 files/ext2_file_opener.cc \ 57 files/ext2_file_operations.cc \ 58 files/ext2_filesystem.cc \ 59 files/file_notification.cc \ 60 files/file_object_registry.cc \ 61 files/file_pager.cc \ 62 files/file_provider.cc \ 63 files/file_registry.cc \ 64 files/filesystem_resource.cc \ 65 files/host_file_accessor.cc \ 66 files/host_file_opener.cc \ 67 files/opener_context_resource.cc \ 68 files/opener_resource.cc \ 69 files/test_file_accessor.cc \ 70 files/test_file_opener.cc \ 71 generic/accessor.cc \ 72 generic/accountable.cc \ 73 generic/notification.cc \ 74 generic/pager.cc \ 75 generic/resource_server.cc \ 76 generic/simple_pager.cc \ 77 mapping/access_map.cc \ 78 mapping/ipc.cc \ 79 mapping/page_mapper.cc \ 80 pages/page_queue.cc \ 81 pages/page_queue_partitioned.cc \ 82 pages/page_queue_shared.cc \ 83 pages/pages.cc \ 84 pipes/pipe_accessor.cc \ 85 pipes/pipe_opener_resource.cc \ 86 pipes/pipe_pager.cc \ 87 pipes/pipe_paging.cc 88 89 # Normal definitions. 90 91 SRC_CC = \ 92 $(CLIENT_INTERFACES_SRC_CC) \ 93 $(SERVER_INTERFACES_SRC_CC) \ 94 $(PLAIN_SRC_CC) 95 96 REQUIRES_LIBS = \ 97 l4re_c-util libmem libipc libstdc++ libsystypes libfsclient \ 98 libext2fs libext2fs_blockserver libe2access libe2access_blockserver 99 100 PRIVATE_INCDIR = $(PKGDIR)/include $(PKGDIR)/include/fsserver \ 101 $(IDL_BUILD_DIR) $(IDL_EXPORT_DIR) 102 103 CONTRIB_INCDIR = libfsserver 104 105 include $(L4DIR)/mk/lib.mk 106 include $(IDL_MK_DIR)/interface_rules.mk 107 108 $(PLAIN_SRC_CC): $(CLIENT_INTERFACES_SRC_CC) 109 110 $(PLAIN_SRC_CC): $(SERVER_INTERFACES_SRC_CC)