blob: b554549e667ff49b17a464e2e06cee4d3210e28f [file] [log] [blame]
# Copyright 2018 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
include common.mk
PC_DEPS = libchrome-$(BASE_VER)
PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
PC_LIBS := $(shell $(PKG_CONFIG) --libs $(PC_DEPS))
CPPFLAGS += -Wno-unused-parameter -Wno-missing-field-initializers $(PC_CFLAGS) -I$(OUT)
CXXFLAGS += -std=c++11 \
-Wno-sign-promo \
-Wno-non-virtual-dtor \
-Wno-ignored-qualifiers \
-Wno-format-nonliteral \
-Wno-extra \
-Wno-deprecated-register \
-Wno-char-subscripts \
-DOS_POSIX \
-DNO_TCMALLOC \
LDLIBS += $(PC_LIBS)
CXX_OBJECTS := \
base/base_paths.o \
base/path_service.o \
base/unguessable_token.o \
ipc/ipc_message.o \
ipc/ipc_message_attachment.o \
ipc/ipc_message_attachment_set.o \
ipc/ipc_message_utils.o \
ipc/ipc_mojo_handle_attachment.o \
ipc/ipc_mojo_message_helper.o \
ipc/ipc_mojo_param_traits.o \
ipc/ipc_platform_file_attachment_posix.o \
mojo/common/common_custom_types_struct_traits.o \
mojo/edk/embedder/connection_params.o \
mojo/edk/embedder/embedder.o \
mojo/edk/embedder/entrypoints.o \
mojo/edk/embedder/platform_channel_pair.o \
mojo/edk/embedder/platform_channel_pair_posix.o \
mojo/edk/embedder/platform_channel_utils_posix.o \
mojo/edk/embedder/platform_handle.o \
mojo/edk/embedder/platform_handle_utils_posix.o \
mojo/edk/embedder/platform_shared_buffer.o \
mojo/edk/system/awakable_list.o \
mojo/edk/system/broker_host.o \
mojo/edk/system/broker_posix.o \
mojo/edk/system/channel.o \
mojo/edk/system/channel_posix.o \
mojo/edk/system/configuration.o \
mojo/edk/system/core.o \
mojo/edk/system/data_pipe_consumer_dispatcher.o \
mojo/edk/system/data_pipe_control_message.o \
mojo/edk/system/data_pipe_producer_dispatcher.o \
mojo/edk/system/dispatcher.o \
mojo/edk/system/handle_table.o \
mojo/edk/system/mapping_table.o \
mojo/edk/system/message_for_transit.o \
mojo/edk/system/message_pipe_dispatcher.o \
mojo/edk/system/node_channel.o \
mojo/edk/system/node_controller.o \
mojo/edk/system/platform_handle_dispatcher.o \
mojo/edk/system/ports/event.o \
mojo/edk/system/ports/message.o \
mojo/edk/system/ports/message_queue.o \
mojo/edk/system/ports/name.o \
mojo/edk/system/ports/node.o \
mojo/edk/system/ports/port.o \
mojo/edk/system/ports/port_ref.o \
mojo/edk/system/ports_message.o \
mojo/edk/system/request_context.o \
mojo/edk/system/shared_buffer_dispatcher.o \
mojo/edk/system/wait_set_dispatcher.o \
mojo/edk/system/waiter.o \
mojo/edk/system/watcher.o \
mojo/edk/system/watcher_set.o \
mojo/public/c/system/thunks.o \
mojo/public/cpp/bindings/lib/array_internal.o \
mojo/public/cpp/bindings/lib/associated_group.o \
mojo/public/cpp/bindings/lib/associated_group_controller.o \
mojo/public/cpp/bindings/lib/binding_state.o \
mojo/public/cpp/bindings/lib/connector.o \
mojo/public/cpp/bindings/lib/control_message_handler.o \
mojo/public/cpp/bindings/lib/control_message_proxy.o \
mojo/public/cpp/bindings/lib/filter_chain.o \
mojo/public/cpp/bindings/lib/fixed_buffer.o \
mojo/public/cpp/bindings/lib/interface_endpoint_client.o \
mojo/public/cpp/bindings/lib/message.o \
mojo/public/cpp/bindings/lib/message_buffer.o \
mojo/public/cpp/bindings/lib/message_builder.o \
mojo/public/cpp/bindings/lib/message_header_validator.o \
mojo/public/cpp/bindings/lib/multiplex_router.o \
mojo/public/cpp/bindings/lib/native_struct.o \
mojo/public/cpp/bindings/lib/native_struct_data.o \
mojo/public/cpp/bindings/lib/native_struct_serialization.o \
mojo/public/cpp/bindings/lib/pipe_control_message_handler.o \
mojo/public/cpp/bindings/lib/pipe_control_message_proxy.o \
mojo/public/cpp/bindings/lib/scoped_interface_endpoint_handle.o \
mojo/public/cpp/bindings/lib/serialization_context.o \
mojo/public/cpp/bindings/lib/sync_call_restrictions.o \
mojo/public/cpp/bindings/lib/sync_handle_registry.o \
mojo/public/cpp/bindings/lib/sync_handle_watcher.o \
mojo/public/cpp/bindings/lib/validation_context.o \
mojo/public/cpp/bindings/lib/validation_errors.o \
mojo/public/cpp/bindings/lib/validation_util.o \
mojo/public/cpp/system/platform_handle.o \
mojo/public/cpp/system/watcher.o
MOJOM_FILES := ipc/ipc.mojom \
mojo/common/file.mojom \
mojo/common/string16.mojom \
mojo/common/text_direction.mojom \
mojo/common/time.mojom \
mojo/common/unguessable_token.mojom \
mojo/common/version.mojom \
mojo/public/interfaces/bindings/pipe_control_messages.mojom \
mojo/public/interfaces/bindings/interface_control_messages.mojom \
MOJOM_BINDINGS_GENERATOR := \
$(S)/mojo/public/tools/bindings/mojom_bindings_generator.py
GEN_TEMPLATES_DIR := $(S)/templates
gen_templates:
@echo generate_mojo_templates: $(GEN_TEMPLATES_DIR)
@rm -rf $(GEN_TEMPLATES_DIR)
@mkdir -p $(GEN_TEMPLATES_DIR)
@python $(MOJOM_BINDINGS_GENERATOR) --use_bundled_pylibs precompile \
-o $(GEN_TEMPLATES_DIR)
templates: gen_templates
cd $(S) && \
python $(abspath $(MOJOM_BINDINGS_GENERATOR)) \
--use_bundled_pylibs generate \
$(MOJOM_FILES) \
-o $(abspath $(S)) \
--bytecode_path $(abspath $(GEN_TEMPLATES_DIR)) \
-g c++
cd $(S) && \
python $(abspath $(MOJOM_BINDINGS_GENERATOR)) \
--use_bundled_pylibs generate \
$(MOJOM_FILES) \
-o $(abspath $(S)) \
--bytecode_path $(abspath $(GEN_TEMPLATES_DIR)) \
--generate_non_variant_code \
-g c++
GENERATED_OBJECTS := $(patsubst %.mojom,%.mojom.o,$(MOJOM_FILES))
GENERATED_SHARED_OBJECTS := $(patsubst %.mojom,%.mojom-shared.o,$(MOJOM_FILES))
$(eval $(call add_object_rules,$(GENERATED_OBJECTS),CXX,cc,CXXFLAGS,$(SRC)/))
$(eval $(call add_object_rules,$(GENERATED_SHARED_OBJECTS),CXX,cc,CXXFLAGS,$(SRC)/))
# Note: I don't know why we need the line below (it's in commmon.mk), but without it,
# .o files from CXX_OBJECTS won't be built.
$(eval $(call add_object_rules,$(CXX_OBJECTS),CXX,cc,CXXFLAGS,$(SRC)/))
LIB ?= lib
LIB_PIE_NAME = libmojo-$(BASE_VER).pie.a
LIB_PIC_NAME = libmojo-$(BASE_VER).pic.a
CXX_STATIC_LIBRARY($(LIB_PIE_NAME)): $(GENERATED_SHARED_OBJECTS) $(GENERATED_OBJECTS) $(CXX_OBJECTS)
CXX_STATIC_LIBRARY($(LIB_PIC_NAME)): $(GENERATED_SHARED_OBJECTS) $(GENERATED_OBJECTS) $(CXX_OBJECTS)
all: CXX_STATIC_LIBRARY($(LIB_PIE_NAME)) CXX_STATIC_LIBRARY($(LIB_PIC_NAME))
clean: CLEAN($(LIB_PIE_NAME)) CLEAN($(LIB_PIC_NAME))
install_lib: all
install -D -m 755 $(OUT)/$(LIB_PIE_NAME) $(DESTDIR)/usr/$(LIB)/$(LIB_PIE_NAME)
install -D -m 755 $(OUT)/$(LIB_PIC_NAME) $(DESTDIR)/usr/$(LIB)/$(LIB_PIC_NAME)
sed -e "s:@LIB@:$(LIB):g" -e "s:@BSLOT@:$(BASE_VER):g" $(S)/libmojo.pc.in > $(S)/libmojo-$(BASE_VER).pc
install_tool:
install -d $(DESTDIR)/usr/src/libmojo-$(BASE_VER)/mojo/
cp -r --preserve=mode $(SRC)/third_party $(DESTDIR)/usr/src/libmojo-$(BASE_VER)/
cp -r --preserve=mode $(SRC)/mojo/public/tools/bindings/* \
$(DESTDIR)/usr/src/libmojo-$(BASE_VER)/mojo/
cp --preserve=mode $(SRC)/build/gn_helpers.py \
$(DESTDIR)/usr/src/libmojo-$(BASE_VER)/mojo/
cp -r --preserve=mode $(SRC)/build/android/gyp/util/ \
$(DESTDIR)/usr/src/libmojo-$(BASE_VER)/mojo/
cp -r --preserve=mode $(SRC)/build/android/pylib \
$(DESTDIR)/usr/src/libmojo-$(BASE_VER)/mojo/
cp -r --preserve=mode $(SRC)/third_party/catapult/devil/devil \
$(DESTDIR)/usr/src/libmojo-$(BASE_VER)/mojo/
install: install_lib install_tool