1# Copyright (c) 2013 The Native Client 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#
6# GNU Make based build file.  For details on GNU Make see:
7# http://www.gnu.org/software/make/manual/make.html
8#
9
10#
11# Get pepper directory for toolchain and includes.
12#
13# If NACL_SDK_ROOT is not set, then assume it can be found three directories up.
14#
15THIS_MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST)))
16NACL_SDK_ROOT ?= $(abspath $(dir $(THIS_MAKEFILE))../..)
17
18# Project Build flags
19WARNINGS := -Wno-long-long -Wall -Wswitch-enum -pedantic -Werror
20CXXFLAGS := -pthread -std=gnu++98 $(WARNINGS)
21
22#
23# Compute tool paths
24#
25GETOS := python $(NACL_SDK_ROOT)/tools/getos.py
26OSHELPERS = python $(NACL_SDK_ROOT)/tools/oshelpers.py
27OSNAME := $(shell $(GETOS))
28RM := $(OSHELPERS) rm
29
30PNACL_TC_PATH := $(abspath $(NACL_SDK_ROOT)/toolchain/$(OSNAME)_pnacl)
31PNACL_CXX := $(PNACL_TC_PATH)/bin/pnacl-clang++
32PNACL_FINALIZE := $(PNACL_TC_PATH)/bin/pnacl-finalize
33CXXFLAGS := -I$(NACL_SDK_ROOT)/include
34LDFLAGS := -L$(NACL_SDK_ROOT)/lib/pnacl/Release -lppapi_cpp -lppapi
35
36#
37# Disable DOS PATH warning when using Cygwin based tools Windows
38#
39CYGWIN ?= nodosfilewarning
40export CYGWIN
41
42
43# Declare the ALL target first, to make the 'all' target the default build
44all: hello_tutorial.pexe
45
46clean:
47	$(RM) hello_tutorial.pexe hello_tutorial.bc
48
49hello_tutorial.bc: hello_tutorial.cc
50	$(PNACL_CXX) -o $@ $< -O2 $(CXXFLAGS) $(LDFLAGS)
51
52hello_tutorial.pexe: hello_tutorial.bc
53	$(PNACL_FINALIZE) -o $@ $<
54
55
56#
57# Makefile target to run the SDK's simple HTTP server and serve this example.
58#
59HTTPD_PY := python $(NACL_SDK_ROOT)/tools/httpd.py
60
61.PHONY: serve
62serve: all
63	$(HTTPD_PY) -C $(CURDIR)
64