# Copyright (c) 2012 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.

ifeq ($(DEBUG),1)
RELEASE = dbg
else
RELEASE = rel
endif

TOPDIR = $(CURDIR)/..
OUTPUT ?= $(TOPDIR)/output
BUILD_NAME = pnacl
WORKDIR = $(OUTPUT)/build/$(BUILD_NAME)/$(RELEASE)
EXEDIR = $(WORKDIR)
D = $(OUTPUT)/plugin/$(BUILD_NAME)

SSH_VERSION = 8.3
DEFAULT_VERSION = true
ifeq ($(DEFAULT_VERSION),)
D := $(D)-openssh-$(SSH_VERSION)
EXEDIR := $(EXEDIR)/$(SSH_VERSION)
endif

$(shell mkdir -p $(WORKDIR) $(EXEDIR) $(D))
NACL_SDK_ROOT ?= $(OUTPUT)/naclsdk

PROJECT := ssh_client
CXX_SOURCES := \
	dev_null.cc \
	dev_random.cc \
	file_system.cc \
	js_file.cc \
	pepper_file.cc \
	syscalls.cc \
	ssh_plugin.cc \
	tcp_server_socket.cc \
	tcp_socket.cc \
	udp_socket.cc

# Project Build flags
ifeq ($(DEBUG),1)
CXXFLAGS ?= -g -O0 -DDEBUG
else
CXXFLAGS ?= -g -O2 -DNDEBUG
endif
override WARNINGS+=-Wno-long-long -Wall -Wswitch-enum -Werror
override CXXFLAGS+=-pthread -std=gnu++0x $(WARNINGS) -I$(TOPDIR)/include \
        -I$(NACL_SDK_ROOT)/include -I$(NACL_SDK_ROOT)/le32-nacl/include \
        -fno-rtti -fno-exceptions

OSNAME:=$(shell python $(NACL_SDK_ROOT)/tools/getos.py)
PNACL_TC_ROOT:=$(NACL_SDK_ROOT)/toolchain/$(OSNAME)_pnacl
PNACL_CXX:=$(PNACL_TC_ROOT)/bin/pnacl-clang++
PNACL_STRIP:=$(PNACL_TC_ROOT)/bin/pnacl-strip
PNACL_FINALIZE:=$(PNACL_TC_ROOT)/bin/pnacl-finalize
PNACL_TRANSLATE:=$(PNACL_TC_ROOT)/bin/pnacl-translate
# --pnacl-disable-abi-check/--allow-llvm-bitcode-input were added to workaround
# https://code.google.com/p/nativeclient/issues/detail?id=3714
PNACL_TRANSLATE_FLAGS=-fdata-sections -ffunction-sections --gc-sections \
        --allow-llvm-bitcode-input
PNACL_LDFLAGS:=-lppapi_cpp -lppapi -lcrypto -lppapi_cpp_private -lnacl_io -lz \
        -L$(NACL_SDK_ROOT)/lib/pnacl/Release --pnacl-disable-abi-check

COMPAT_INC:=-I$(PNACL_TC_ROOT)/le32-nacl/include/glibc-compat
PNACL_CXXFLAGS:=$(CXXFLAGS) $(COMPAT_INC)

# Declare the ALL target first, to make the 'all' target the default build
all: all_newlib

newlib_pexe = $(PROJECT)_nl.pexe
newlib_x86_32 = $(PROJECT)_nl_x86_32.nexe
newlib_x86_64 = $(PROJECT)_nl_x86_64.nexe
newlib_arm = $(PROJECT)_nl_arm.nexe
all_newlib: \
	$(D)/$(newlib_x86_32) \
	$(D)/$(newlib_x86_64) \
	$(D)/$(newlib_arm) \
	$(D)/ssh_client.nmf
$(D)/ssh_client.nmf: $(TOPDIR)/ssh_client.nmf
	cp $< $@
$(D)/%: $(EXEDIR)/%
	cp $< $@
newlib_pexe: $(EXEDIR)/$(newlib_pexe)
newlib_x86_32: $(EXEDIR)/$(newlib_x86_32)
newlib_x86_64: $(EXEDIR)/$(newlib_x86_64)
newlib_arm: $(EXEDIR)/$(newlib_arm)

# Define PNaCl compile and link rules for C++ sources
POBJS := $(patsubst %.cc,$(WORKDIR)/%_p.o,$(CXX_SOURCES))
$(POBJS): $(WORKDIR)/%_p.o : $(CURDIR)/%.cc
	$(PNACL_CXX) -o $@ -c $< $(PNACL_CXXFLAGS)

$(EXEDIR)/$(newlib_pexe): $(POBJS)
	$(PNACL_CXX) -o $@ $^ \
		-Wl,--whole-archive -lopenssh-$(SSH_VERSION) -Wl,--no-whole-archive \
		-lssh-$(SSH_VERSION) \
		-lopenbsd-compat-$(SSH_VERSION) -lldns \
		$(PNACL_LDFLAGS) $(PNACL_CXXFLAGS)

$(EXEDIR)/$(PROJECT)_nl_arm.dbg.nexe: $(EXEDIR)/$(newlib_pexe)
	$(PNACL_TRANSLATE) $(PNACL_TRANSLATE_FLAGS) -o $@ $< -arch arm

$(EXEDIR)/$(PROJECT)_nl_x86_32.dbg.nexe: $(EXEDIR)/$(newlib_pexe)
	$(PNACL_TRANSLATE) $(PNACL_TRANSLATE_FLAGS) -o $@ $< -arch i686

$(EXEDIR)/$(PROJECT)_nl_x86_64.dbg.nexe: $(EXEDIR)/$(newlib_pexe)
	$(PNACL_TRANSLATE) $(PNACL_TRANSLATE_FLAGS) -o $@ $< -arch x86-64

%.nexe: %.dbg.nexe
	$(PNACL_STRIP) $^ -o $@

%.pexe: %.dbg.pexe
	$(PNACL_FINALIZE) $^ -o $@

clean:
	rm -rf $(WORKDIR)
