Hidehiko Abe | 0411add | 2017-12-13 19:00:02 +0900 | [diff] [blame] | 1 | # 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 | |
| 5 | include common.mk |
| 6 | |
| 7 | PC_DEPS = libchrome-$(BASE_VER) |
| 8 | PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS)) |
| 9 | PC_LIBS := $(shell $(PKG_CONFIG) --libs $(PC_DEPS)) |
| 10 | |
| 11 | CPPFLAGS += -Wno-unused-parameter -Wno-missing-field-initializers $(PC_CFLAGS) -I$(OUT) |
| 12 | |
| 13 | CXXFLAGS += -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 | |
| 24 | LDLIBS += $(PC_LIBS) |
| 25 | |
| 26 | CXX_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 Chavez | 62aedeb | 2017-12-21 18:51:17 -0800 | [diff] [blame] | 85 | mojo/public/cpp/bindings/lib/binding_state.o \ |
Hidehiko Abe | 0411add | 2017-12-13 19:00:02 +0900 | [diff] [blame] | 86 | 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 Chavez | 62aedeb | 2017-12-21 18:51:17 -0800 | [diff] [blame] | 104 | mojo/public/cpp/bindings/lib/sync_call_restrictions.o \ |
Hidehiko Abe | 0411add | 2017-12-13 19:00:02 +0900 | [diff] [blame] | 105 | 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 | |
| 113 | MOJOM_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 | |
| 123 | MOJOM_BINDINGS_GENERATOR := \ |
| 124 | $(S)/mojo/public/tools/bindings/mojom_bindings_generator.py |
| 125 | |
| 126 | GEN_TEMPLATES_DIR := $(S)/templates |
| 127 | |
| 128 | gen_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 | |
| 135 | templates: 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 | |
| 152 | GENERATED_OBJECTS := $(patsubst %.mojom,%.mojom.o,$(MOJOM_FILES)) |
| 153 | GENERATED_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 | |
| 161 | LIB ?= lib |
| 162 | LIB_PIE_NAME = libmojo-$(BASE_VER).pie.a |
| 163 | LIB_PIC_NAME = libmojo-$(BASE_VER).pic.a |
| 164 | |
| 165 | CXX_STATIC_LIBRARY($(LIB_PIE_NAME)): $(GENERATED_SHARED_OBJECTS) $(GENERATED_OBJECTS) $(CXX_OBJECTS) |
| 166 | CXX_STATIC_LIBRARY($(LIB_PIC_NAME)): $(GENERATED_SHARED_OBJECTS) $(GENERATED_OBJECTS) $(CXX_OBJECTS) |
| 167 | |
| 168 | all: CXX_STATIC_LIBRARY($(LIB_PIE_NAME)) CXX_STATIC_LIBRARY($(LIB_PIC_NAME)) |
| 169 | |
| 170 | clean: CLEAN($(LIB_PIE_NAME)) CLEAN($(LIB_PIC_NAME)) |
| 171 | |
| 172 | install_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 | |
| 177 | install_tool: |
Luis Hector Chavez | 392bab8 | 2017-12-21 16:10:07 -0800 | [diff] [blame] | 178 | install -d $(DESTDIR)/usr/src/libmojo-$(BASE_VER)/mojo/public/tools/bindings/ |
| 179 | install -d $(DESTDIR)/usr/src/libmojo-$(BASE_VER)/build/ |
Hidehiko Abe | 0411add | 2017-12-13 19:00:02 +0900 | [diff] [blame] | 180 | 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 Chavez | 392bab8 | 2017-12-21 16:10:07 -0800 | [diff] [blame] | 182 | $(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 Abe | 0411add | 2017-12-13 19:00:02 +0900 | [diff] [blame] | 185 | |
| 186 | install: install_lib install_tool |