| PWD := $(shell pwd) |
| |
| include ../shared/mojo.mk |
| |
| ifdef ANDROID |
| BUILD_DIR := $(PWD)/gen/mojo/android |
| MOJO_SHARED_LIB := $(PWD)/gen/lib/android/libsystem_thunk.a |
| else |
| BUILD_DIR := $(PWD)/gen/mojo/linux_amd64 |
| MOJO_SHARED_LIB := $(PWD)/gen/lib/linux_amd64/libsystem_thunk.a |
| endif |
| |
| # Build the v23proxy and the associated examples. |
| .PHONY: build |
| build: $(BUILD_DIR)/v23proxy.mojo build-examples |
| |
| build-examples: $(BUILD_DIR)/echo_client.mojo $(BUILD_DIR)/echo_server.mojo $(BUILD_DIR)/fortune_client.mojo $(BUILD_DIR)/fortune_server.mojo |
| |
| # Go-based unit tests |
| test: gen/go/src/mojom/tests/transcoder_testcases/transcoder_testcases.mojom.go |
| $(call MOGO_TEST,v.io/x/mojo/transcoder/...) |
| |
| gen/go/src/mojom/tests/transcoder_testcases/transcoder_testcases.mojom.go: mojom/mojom/tests/transcoder_testcases.mojom | mojo-env-check |
| $(call MOJOM_GEN,$<,mojom,gen,go) |
| gofmt -w $@ |
| |
| $(BUILD_DIR)/echo_client.mojo: $(MOJO_SHARED_LIB) gen/go/src/mojom/examples/echo/echo.mojom.go |
| $(call MOGO_BUILD,examples/echo/client,$@) |
| |
| $(BUILD_DIR)/echo_server.mojo: $(MOJO_SHARED_LIB) gen/go/src/mojom/examples/echo/echo.mojom.go |
| $(call MOGO_BUILD,examples/echo/server,$@) |
| |
| gen/go/src/mojom/examples/echo/echo.mojom.go: mojom/mojom/examples/echo.mojom | mojo-env-check |
| $(call MOJOM_GEN,$<,mojom,gen,go) |
| gofmt -w $@ |
| |
| $(BUILD_DIR)/fortune_client.mojo: $(MOJO_SHARED_LIB) gen/go/src/mojom/examples/fortune/fortune.mojom.go |
| $(call MOGO_BUILD,examples/fortune/client,$@) |
| |
| $(BUILD_DIR)/fortune_server.mojo: $(MOJO_SHARED_LIB) gen/go/src/mojom/examples/fortune/fortune.mojom.go |
| $(call MOGO_BUILD,examples/fortune/server,$@) |
| |
| gen/go/src/mojom/examples/fortune/fortune.mojom.go: mojom/mojom/examples/fortune.mojom | mojo-env-check |
| $(call MOJOM_GEN,$<,mojom,gen,go) |
| gofmt -w $@ |
| |
| $(BUILD_DIR)/v23proxy.mojo: $(MOJO_SHARED_LIB) gen/go/src/mojom/v23proxy/v23proxy.mojom.go | mojo-env-check |
| $(call MOGO_BUILD,v.io/x/mojo/proxy,$@) |
| |
| mojom/mojo/public/interfaces/bindings/mojom_types.mojom: $(MOJO_DIR)/src/mojo/public/interfaces/bindings/mojom_types.mojom |
| mkdir -p mojom/mojo/public/interfaces/bindings |
| ln -sf $(MOJO_DIR)/src/mojo/public/interfaces/bindings/mojom_types.mojom mojom/mojo/public/interfaces/bindings/mojom_types.mojom |
| |
| gen/go/src/mojo/public/interfaces/bindings/mojom_types/mojom_types.mojom.go: mojom/mojo/public/interfaces/bindings/mojom_types.mojom | mojo-env-check |
| $(call MOJOM_GEN,$<,mojom,gen,go) |
| gofmt -w $@ |
| |
| gen/go/src/mojom/v23proxy/v23proxy.mojom.go: mojom/mojom/v23proxy.mojom gen/go/src/mojo/public/interfaces/bindings/mojom_types/mojom_types.mojom.go | mojo-env-check |
| $(call MOJOM_GEN,$<,mojom,gen,go) |
| gofmt -w $@ |
| |
| define RUN_MOJO_SHELL |
| $(MOJO_DIR)/src/mojo/devtools/common/mojo_run \ |
| $1 \ |
| --config-file mojoconfig \ |
| --config-alias BUILD_DIR=$(BUILD_DIR) \ |
| --config-alias PORT=$2 \ |
| https://mojo.v.io/$3 |
| endef |
| |
| # Start the v23proxy (server-side). This runs the v23proxy in its own shell and |
| # will print an endpoint to stdout. That endpoint needs to be passed to the clients. |
| # |
| # Highly recommended: Prefix this command with HOME={a unique tmp directory} |
| # We cannot disable the db LOCK that is created, so one workaround is to use a |
| # different HOME directory per mojo shell. |
| .PHONY: start-v23proxy |
| start-v23proxy: build |
| $(call RUN_MOJO_SHELL,--enable-multiprocess,31941,v23proxy.mojo) |
| |
| # Start the echo client. This uses the v23proxy (client-side) to speak Vanadium |
| # over to the v23proxy (server-side) [OR a 0-authentication Vanadium echo server]. |
| # |
| # Note: Does not use --enable-multiprocess since small Go programs can omit it. |
| # Don't forget to prepend REMOTE_ENDPOINT={endpoint}/https://mojo.v.io/echo_server.mojo/mojo::examples::RemoteEcho |
| # |
| # Highly recommended: Prefix this command with HOME={a unique tmp directory} |
| # We cannot disable the db LOCK that is created, so one workaround is to use a |
| # different HOME directory per mojo shell. |
| .PHONY: start-echo-client |
| start-echo-client: build |
| $(call RUN_MOJO_SHELL,,31942,echo_client.mojo) |
| |
| # Start the fortune client. This uses the v23proxy (client-side) to speak Vanadium |
| # over to the v23proxy (server-side) [OR a 0-authentication Vanadium fortune server]. |
| # |
| # Note: Does not use --enable-multiprocess since small Go programs can omit it. |
| # Don't forget to prepend REMOTE_ENDPOINT={endpoint}/https://mojo.v.io/fortune_server.mojo/mojo::examples::Fortune |
| # You may optionally prepend ADD_FORTUNE={some fortune} |
| # |
| # Highly recommended: Prefix this command with HOME={a unique tmp directory} |
| # We cannot disable the db LOCK that is created, so one workaround is to use a |
| # different HOME directory per mojo shell. |
| .PHONY: start-fortune-client |
| start-fortune-client: build |
| $(call RUN_MOJO_SHELL,,31943,fortune_client.mojo) |
| |
| .PHONY: clean |
| clean: |
| rm -r gen |