1.1 --- a/libexec/lib/src/Makefile Mon Jun 06 00:36:14 2022 +0200
1.2 +++ b/libexec/lib/src/Makefile Mon Jun 06 01:02:59 2022 +0200
1.3 @@ -3,10 +3,55 @@
1.4
1.5 TARGET = libexec.a libexec.so
1.6 PC_FILENAME = libexec
1.7 -SRC_CC = elf.cc memory.cc process.cc segment.cc stack.cc
1.8 -REQUIRES_LIBS = l4re_c-util libmem libipc libstdc++ libsystypes libfsclient
1.9 +
1.10 +# Locations for interface input and generated output.
1.11 +
1.12 +IDL_DIR = $(PKGDIR)/../libsystypes/idl
1.13 +IDL_MK_DIR = $(L4DIR)/idl4re/mk
1.14 +IDL_BUILD_DIR = .
1.15 +IDL_EXPORT_DIR = .
1.16 +
1.17 +include $(IDL_MK_DIR)/idl.mk
1.18 +
1.19 +# Compound interfaces.
1.20 +
1.21 +pager_object_NAME = PagerObject
1.22 +pager_object_INTERFACES = region_mapper system_pager
1.23 +
1.24 +COMP_INTERFACES_CC = pager_object
1.25 +
1.26 +# Individual interfaces.
1.27 +
1.28 +CLIENT_INTERFACES_CC = dataspace mapped_file
1.29
1.30 -PRIVATE_INCDIR += $(PKGDIR)/include/exec
1.31 +SERVER_INTERFACES_CC = $(call common_interfaces,$(COMP_INTERFACES_CC))
1.32 +
1.33 +# Generated and plain source files.
1.34 +
1.35 +CLIENT_INTERFACES_SRC_CC = $(call interfaces_to_client_cc,$(CLIENT_INTERFACES_CC))
1.36 +
1.37 +SERVER_INTERFACES_SRC_CC = $(call interfaces_to_server_cc,$(SERVER_INTERFACES_CC) $(COMP_INTERFACES_CC))
1.38 +
1.39 +# Normal source files.
1.40 +
1.41 +PLAIN_SRC_CC = elf.cc memory.cc pager.cc process.cc segment.cc stack.cc
1.42 +
1.43 +# Normal definitions.
1.44 +
1.45 +SRC_CC = \
1.46 + $(CLIENT_INTERFACES_SRC_CC) \
1.47 + $(SERVER_INTERFACES_SRC_CC) \
1.48 + $(PLAIN_SRC_CC)
1.49 +
1.50 +REQUIRES_LIBS = l4re_c-util libmem libipc libstdc++ libsystypes libfsclient
1.51 +
1.52 +PRIVATE_INCDIR = $(PKGDIR)/include/exec $(IDL_BUILD_DIR) $(IDL_EXPORT_DIR)
1.53 +
1.54 CONTRIB_INCDIR = libexec
1.55
1.56 include $(L4DIR)/mk/lib.mk
1.57 +include $(IDL_MK_DIR)/interface_rules.mk
1.58 +
1.59 +$(PLAIN_SRC_CC): $(CLIENT_INTERFACES_SRC_CC)
1.60 +
1.61 +$(PLAIN_SRC_CC): $(SERVER_INTERFACES_SRC_CC)