blob: a10537c186e76639a657311c4de876baf65ef550 [file] [log] [blame]
Hidehiko Abe0411add2017-12-13 19:00:02 +09001# Copyright 2016 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5include common.mk
6
7PC_DEPS = libchrome-$(BASE_VER)
8PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
9PC_LIBS := $(shell $(PKG_CONFIG) --libs $(PC_DEPS))
10
11CPPFLAGS += -Wno-unused-parameter -Wno-missing-field-initializers $(PC_CFLAGS) -I$(OUT)
12
13CXXFLAGS += -std=c++11 \
14 -Wno-sign-promo \
15 -Wno-non-virtual-dtor \
16 -Wno-ignored-qualifiers \
17 -Wno-format-nonliteral \
18 -Wno-extra \
19 -Wno-deprecated-register \
20 -Wno-char-subscripts \
21 -DOS_POSIX \
22 -DNO_TCMALLOC \
23
24LDLIBS += $(PC_LIBS)
25
26CXX_OBJECTS := \
27 base/base_paths.o \
28 base/debug/proc_maps_linux.o \
29 base/path_service.o \
30 base/unguessable_token.o \
31 ipc/ipc_message.o \
32 ipc/ipc_message_attachment.o \
33 ipc/ipc_message_attachment_set.o \
34 ipc/ipc_message_utils.o \
35 ipc/ipc_mojo_handle_attachment.o \
36 ipc/ipc_mojo_message_helper.o \
37 ipc/ipc_mojo_param_traits.o \
38 ipc/ipc_platform_file_attachment_posix.o \
39 mojo/common/common_custom_types_struct_traits.o \
40 mojo/edk/embedder/connection_params.o \
41 mojo/edk/embedder/embedder.o \
42 mojo/edk/embedder/entrypoints.o \
43 mojo/edk/embedder/platform_channel_pair.o \
44 mojo/edk/embedder/platform_channel_pair_posix.o \
45 mojo/edk/embedder/platform_channel_utils_posix.o \
46 mojo/edk/embedder/platform_handle.o \
47 mojo/edk/embedder/platform_handle_utils_posix.o \
48 mojo/edk/embedder/platform_shared_buffer.o \
49 mojo/edk/system/awakable_list.o \
50 mojo/edk/system/broker_host.o \
51 mojo/edk/system/broker_posix.o \
52 mojo/edk/system/channel.o \
53 mojo/edk/system/channel_posix.o \
54 mojo/edk/system/configuration.o \
55 mojo/edk/system/core.o \
56 mojo/edk/system/data_pipe_consumer_dispatcher.o \
57 mojo/edk/system/data_pipe_control_message.o \
58 mojo/edk/system/data_pipe_producer_dispatcher.o \
59 mojo/edk/system/dispatcher.o \
60 mojo/edk/system/handle_table.o \
61 mojo/edk/system/mapping_table.o \
62 mojo/edk/system/message_for_transit.o \
63 mojo/edk/system/message_pipe_dispatcher.o \
64 mojo/edk/system/node_channel.o \
65 mojo/edk/system/node_controller.o \
66 mojo/edk/system/platform_handle_dispatcher.o \
67 mojo/edk/system/ports/event.o \
68 mojo/edk/system/ports/message.o \
69 mojo/edk/system/ports/message_queue.o \
70 mojo/edk/system/ports/name.o \
71 mojo/edk/system/ports/node.o \
72 mojo/edk/system/ports/port.o \
73 mojo/edk/system/ports/port_ref.o \
74 mojo/edk/system/ports_message.o \
75 mojo/edk/system/request_context.o \
76 mojo/edk/system/shared_buffer_dispatcher.o \
77 mojo/edk/system/wait_set_dispatcher.o \
78 mojo/edk/system/waiter.o \
79 mojo/edk/system/watcher.o \
80 mojo/edk/system/watcher_set.o \
81 mojo/public/c/system/thunks.o \
82 mojo/public/cpp/bindings/lib/array_internal.o \
83 mojo/public/cpp/bindings/lib/associated_group.o \
84 mojo/public/cpp/bindings/lib/associated_group_controller.o \
Luis Hector Chavez62aedeb2017-12-21 18:51:17 -080085 mojo/public/cpp/bindings/lib/binding_state.o \
Hidehiko Abe0411add2017-12-13 19:00:02 +090086 mojo/public/cpp/bindings/lib/connector.o \
87 mojo/public/cpp/bindings/lib/control_message_handler.o \
88 mojo/public/cpp/bindings/lib/control_message_proxy.o \
89 mojo/public/cpp/bindings/lib/filter_chain.o \
90 mojo/public/cpp/bindings/lib/fixed_buffer.o \
91 mojo/public/cpp/bindings/lib/interface_endpoint_client.o \
92 mojo/public/cpp/bindings/lib/message.o \
93 mojo/public/cpp/bindings/lib/message_buffer.o \
94 mojo/public/cpp/bindings/lib/message_builder.o \
95 mojo/public/cpp/bindings/lib/message_header_validator.o \
96 mojo/public/cpp/bindings/lib/multiplex_router.o \
97 mojo/public/cpp/bindings/lib/native_struct.o \
98 mojo/public/cpp/bindings/lib/native_struct_data.o \
99 mojo/public/cpp/bindings/lib/native_struct_serialization.o \
100 mojo/public/cpp/bindings/lib/pipe_control_message_handler.o \
101 mojo/public/cpp/bindings/lib/pipe_control_message_proxy.o \
102 mojo/public/cpp/bindings/lib/scoped_interface_endpoint_handle.o \
103 mojo/public/cpp/bindings/lib/serialization_context.o \
Luis Hector Chavez62aedeb2017-12-21 18:51:17 -0800104 mojo/public/cpp/bindings/lib/sync_call_restrictions.o \
Hidehiko Abe0411add2017-12-13 19:00:02 +0900105 mojo/public/cpp/bindings/lib/sync_handle_registry.o \
106 mojo/public/cpp/bindings/lib/sync_handle_watcher.o \
107 mojo/public/cpp/bindings/lib/validation_context.o \
108 mojo/public/cpp/bindings/lib/validation_errors.o \
109 mojo/public/cpp/bindings/lib/validation_util.o \
110 mojo/public/cpp/system/platform_handle.o \
111 mojo/public/cpp/system/watcher.o
112
113MOJOM_FILES := ipc/ipc.mojom \
114 mojo/common/file.mojom \
115 mojo/common/string16.mojom \
116 mojo/common/text_direction.mojom \
117 mojo/common/time.mojom \
118 mojo/common/unguessable_token.mojom \
119 mojo/common/version.mojom \
120 mojo/public/interfaces/bindings/pipe_control_messages.mojom \
121 mojo/public/interfaces/bindings/interface_control_messages.mojom \
122
123MOJOM_BINDINGS_GENERATOR := \
124 $(S)/mojo/public/tools/bindings/mojom_bindings_generator.py
125
126GEN_TEMPLATES_DIR := $(S)/templates
127
128gen_templates:
129 @echo generate_mojo_templates: $(GEN_TEMPLATES_DIR)
130 @rm -rf $(GEN_TEMPLATES_DIR)
131 @mkdir -p $(GEN_TEMPLATES_DIR)
132 @python $(MOJOM_BINDINGS_GENERATOR) --use_bundled_pylibs precompile \
133 -o $(GEN_TEMPLATES_DIR)
134
135templates: gen_templates
136 cd $(S) && \
137 python $(abspath $(MOJOM_BINDINGS_GENERATOR)) \
138 --use_bundled_pylibs generate \
139 $(MOJOM_FILES) \
140 -o $(abspath $(S)) \
141 --bytecode_path $(abspath $(GEN_TEMPLATES_DIR)) \
142 -g c++
143 cd $(S) && \
144 python $(abspath $(MOJOM_BINDINGS_GENERATOR)) \
145 --use_bundled_pylibs generate \
146 $(MOJOM_FILES) \
147 -o $(abspath $(S)) \
148 --bytecode_path $(abspath $(GEN_TEMPLATES_DIR)) \
149 --generate_non_variant_code \
150 -g c++
151
152GENERATED_OBJECTS := $(patsubst %.mojom,%.mojom.o,$(MOJOM_FILES))
153GENERATED_SHARED_OBJECTS := $(patsubst %.mojom,%.mojom-shared.o,$(MOJOM_FILES))
154
155$(eval $(call add_object_rules,$(GENERATED_OBJECTS),CXX,cc,CXXFLAGS,$(SRC)/))
156$(eval $(call add_object_rules,$(GENERATED_SHARED_OBJECTS),CXX,cc,CXXFLAGS,$(SRC)/))
157# Note: I don't know why we need the line below (it's in commmon.mk), but without it,
158# .o files from CXX_OBJECTS won't be built.
159$(eval $(call add_object_rules,$(CXX_OBJECTS),CXX,cc,CXXFLAGS,$(SRC)/))
160
161LIB ?= lib
162LIB_PIE_NAME = libmojo-$(BASE_VER).pie.a
163LIB_PIC_NAME = libmojo-$(BASE_VER).pic.a
164
165CXX_STATIC_LIBRARY($(LIB_PIE_NAME)): $(GENERATED_SHARED_OBJECTS) $(GENERATED_OBJECTS) $(CXX_OBJECTS)
166CXX_STATIC_LIBRARY($(LIB_PIC_NAME)): $(GENERATED_SHARED_OBJECTS) $(GENERATED_OBJECTS) $(CXX_OBJECTS)
167
168all: CXX_STATIC_LIBRARY($(LIB_PIE_NAME)) CXX_STATIC_LIBRARY($(LIB_PIC_NAME))
169
170clean: CLEAN($(LIB_PIE_NAME)) CLEAN($(LIB_PIC_NAME))
171
172install_lib: all
173 install -D -m 755 $(OUT)/$(LIB_PIE_NAME) $(DESTDIR)/usr/$(LIB)/$(LIB_PIE_NAME)
174 install -D -m 755 $(OUT)/$(LIB_PIC_NAME) $(DESTDIR)/usr/$(LIB)/$(LIB_PIC_NAME)
175 sed -e "s:@LIB@:$(LIB):g" -e "s:@BSLOT@:$(BASE_VER):g" $(S)/libmojo.pc.in > $(S)/libmojo-$(BASE_VER).pc
176
177install_tool:
Luis Hector Chavez392bab82017-12-21 16:10:07 -0800178 install -d $(DESTDIR)/usr/src/libmojo-$(BASE_VER)/mojo/public/tools/bindings/
179 install -d $(DESTDIR)/usr/src/libmojo-$(BASE_VER)/build/
Hidehiko Abe0411add2017-12-13 19:00:02 +0900180 cp -r --preserve=mode $(SRC)/third_party $(DESTDIR)/usr/src/libmojo-$(BASE_VER)/
181 cp -r --preserve=mode $(SRC)/mojo/public/tools/bindings/* \
Luis Hector Chavez392bab82017-12-21 16:10:07 -0800182 $(DESTDIR)/usr/src/libmojo-$(BASE_VER)/mojo/public/tools/bindings/
183 cp -r --preserve=mode $(SRC)/build/* \
184 $(DESTDIR)/usr/src/libmojo-$(BASE_VER)/build/
Hidehiko Abe0411add2017-12-13 19:00:02 +0900185
186install: install_lib install_tool