1.1 --- a/lib/src/Makefile Mon Dec 16 00:43:58 2019 +0100
1.2 +++ b/lib/src/Makefile Sun Feb 23 21:41:37 2020 +0100
1.3 @@ -8,52 +8,36 @@
1.4
1.5 MODE = libminimal
1.6
1.7 -# Functions to generate filenames.
1.8 -
1.9 -interfaces_to_idl_files = $(patsubst %,$(L4DIR)/pkg/libsystypes/idl/%.idl,$(1))
1.10 -
1.11 -interfaces_to_client_c = $(patsubst %,%_client.c,$(1))
1.12 +# Locations for interface input and generated output.
1.13
1.14 -interfaces_to_client_h = \
1.15 - $(patsubst %,%_interface.h,$(1)) \
1.16 - $(patsubst %,%_client.h,$(1)) \
1.17 +IDL_DIR = $(L4DIR)/pkg/libsystypes/idl
1.18 +IDL_MK_DIR = $(L4DIR)/idl4re/mk
1.19 +IDL_BUILD_DIR = .
1.20 +IDL_CLIENT_INCDIR = .
1.21
1.22 -# Interface descriptions.
1.23 +include $(IDL_MK_DIR)/idl.mk
1.24
1.25 -COMMON_INTERFACES = file filesystem mapped_file opener
1.26 -COMMON_IDL = $(call interfaces_to_idl_files,$(COMMON_INTERFACES))
1.27 +# Individual interfaces.
1.28
1.29 -# Generated sources.
1.30 +CLIENT_INTERFACES_C = file filesystem mapped_file opener
1.31
1.32 -COMMON_CLIENT_C = $(call interfaces_to_client_c,$(COMMON_INTERFACES))
1.33 -COMMON_CLIENT_H = $(call interfaces_to_client_h,$(COMMON_INTERFACES))
1.34 -COMMON_CLIENT = $(COMMON_CLIENT_C) $(COMMON_CLIENT_H)
1.35 +# Normal definitions.
1.36
1.37 -# Normal rules.
1.38 -
1.39 -SRC_C = \
1.40 - $(COMMON_CLIENT_C) fsdesc_client.c \
1.41 - client.c fsdesc.c fsops.c fs_ipc.c \
1.42 +SRC_C = \
1.43 + $(call interfaces_to_client_c,$(CLIENT_INTERFACES_C)) \
1.44 + client.c fsdesc.c fsdesc_client.c fsops.c fs_ipc.c \
1.45
1.46 # Use the libc_newlib_headers for sys_memory.c and string functions.
1.47
1.48 -REQUIRES_LIBS = libipc_minimal libsystypes libc_newlib_headers
1.49 +REQUIRES_LIBS = libipc_minimal libsystypes libc_newlib_headers
1.50
1.51 # To link to libc routines statically, extra pkg-config magic is required.
1.52 # (The libc_newlib package cannot be added to REQUIRES_LIBS.)
1.53
1.54 -PC_EXTRA = Link_Libs= %{static:-lc_newlib}
1.55 +PC_EXTRA = Link_Libs= %{static:-lc_newlib}
1.56
1.57 -PRIVATE_INCDIR += $(PKGDIR)/include/fsclient .
1.58 -CONTRIB_INCDIR = libfsclient_minimal
1.59 +PRIVATE_INCDIR += $(PKGDIR)/include/fsclient $(IDL_BUILD_DIR) $(IDL_CLIENT_INCDIR)
1.60 +CONTRIB_INCDIR = libfsclient_minimal
1.61
1.62 include $(L4DIR)/mk/lib.mk
1.63 -
1.64 -
1.65 -
1.66 -# Extra rule to generate files from the interface description.
1.67 -
1.68 -IDL_PROG = $(L4DIR)/tool/bin/idl
1.69 -
1.70 -$(COMMON_CLIENT): $(COMMON_IDL)
1.71 - $(IDL_PROG) -d . --client $(COMMON_IDL)
1.72 +include $(IDL_MK_DIR)/interface_rules.mk