| # Copyright (c) 2012 The Native Client Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # |
| # GNU Make based build file. For details on GNU Make see: |
| # http://www.gnu.org/software/make/manual/make.html |
| # |
| |
| # |
| # Project information |
| # |
| # These variables store project specific settings for the project name |
| # build flags, files to copy or install. In the examples it is typically |
| # only the list of sources and project name that will actually change and |
| # the rest of the makefile is boilerplate for defining build rules. |
| # |
| PROJECT:=dlopen |
| WARNINGS:=-Wno-long-long -Wall |
| CXXFLAGS:=-g -O0 -pthread -std=gnu++98 $(WARNINGS) |
| LDFLAGS:=-g -ldl -lppapi_cpp -lppapi |
| |
| |
| # |
| # Get pepper directory for toolchain and includes. |
| # |
| # If PEPPER_ROOT is not set, then assume it can be found a two directories up, |
| # from the default example directory location. |
| # |
| THIS_MAKEFILE:=$(abspath $(lastword $(MAKEFILE_LIST))) |
| NACL_SDK_ROOT?=$(abspath $(dir $(THIS_MAKEFILE))../..) |
| |
| # |
| # Compute tool paths |
| # |
| # |
| OSNAME:=$(shell python $(NACL_SDK_ROOT)/tools/getos.py) |
| TC_PATH:=$(abspath $(NACL_SDK_ROOT)/toolchain/$(OSNAME)_x86_glibc) |
| CXX:=$(TC_PATH)/bin/i686-nacl-g++ |
| NMF:=python $(NACL_SDK_ROOT)/tools/create_nmf.py |
| |
| # |
| # Create shell aliases |
| # |
| # Create Python based aliases for common shell commands like copy or move. |
| # |
| COPY:= python $(NACL_SDK_ROOT)/tools/oshelpers.py cp |
| MKDIR:= python $(NACL_SDK_ROOT)/tools/oshelpers.py mkdir |
| RM:= python $(NACL_SDK_ROOT)/tools/oshelpers.py rm |
| MV:= python $(NACL_SDK_ROOT)/tools/oshelpers.py mv |
| |
| # |
| # Disable DOS PATH warning when using Cygwin based tools Windows |
| # |
| CYGWIN ?= nodosfilewarning |
| export CYGWIN |
| |
| |
| # |
| # NMF Manifiest generation |
| # |
| NMF:=python $(NACL_SDK_ROOT)/tools/create_nmf.py |
| NMF+=-D $(TC_PATH)/x86_64-nacl/bin/objdump |
| NMF_PATHS:=-L $(TC_PATH)/x86_64-nacl/lib32 -L $(TC_PATH)/x86_64-nacl/lib |
| NMF_PATHS+=-L lib32 -L lib64 |
| |
| |
| # |
| # Disable DOS PATH warning when using Cygwin based tools Windows |
| # |
| CYGWIN ?= nodosfilewarning |
| export CYGWIN |
| |
| |
| # Declare the ALL target first, to make the 'all' target the default build. |
| # Since the NMF file requires all the binaires for generation we use that as |
| # the dependency. |
| all : $(PROJECT).nmf |
| |
| # Rules to create subdirectories for libraries |
| lib32: |
| $(MKDIR) -p $@ |
| |
| lib64: |
| $(MKDIR) -p $@ |
| |
| # Copy all files to that config |
| $(foreach src,$(COPY_FILES),$(eval $(call FILE_COPY,$(src),DBG))) |
| |
| # Build debug version dlopen nexe and eightball.so for 32 and 64 bit. |
| dlopen_x86_32.o: dlopen.cc $(THIS_MAKE) |
| $(CXX) -o $@ -c $< -m32 $(CXXFLAGS) |
| |
| dlopen_x86_32.nexe: dlopen_x86_32.o |
| $(CXX) -o $@ $< -m32 $(LDFLAGS) |
| |
| dlopen_x86_64.o: dlopen.cc $(THIS_MAKE) |
| $(CXX) -o $@ -c $< -m64 $(CXXFLAGS) |
| |
| dlopen_x86_64.nexe: dlopen_x86_64.o |
| $(CXX) -o $@ $< -m64 $(LDFLAGS) |
| |
| eightball_x86_32.o: eightball.cc $(THIS_MAKE) |
| $(CXX) -o $@ -c $< -m32 $(CXXFLAGS) -fPIC |
| |
| lib32/libeightball.so: eightball_x86_32.o | lib32 |
| $(CXX) -o $@ $< -m32 $(LDFLAGS) -shared |
| |
| eightball_x86_64.o: eightball.cc $(THIS_MAKE) |
| $(CXX) -o $@ -c $< -m64 $(CXXFLAGS) -fPIC |
| |
| lib64/libeightball.so: eightball_x86_64.o | lib64 |
| $(CXX) -o $@ $< -m64 $(LDFLAGS) -shared |
| |
| # |
| # NMF Manifiest generation |
| # |
| # Use the python script create_nmf to scan the binaries for dependencies using |
| # objdump. Pass in the (-L) paths to the default library toolchains so that we |
| # can find those libraries and have it automatically copy the files (-s) to |
| # the target directory for us. |
| NEXES:=dlopen_x86_32.nexe dlopen_x86_64.nexe |
| NEXES+=lib32/libeightball.so lib64/libeightball.so |
| NMF_ARGS:=-D $(TC_PATH)/x86_64-nacl/bin/objdump |
| NMF_PATHS:=-L $(TC_PATH)/x86_64-nacl/lib32 -L $(TC_PATH)/x86_64-nacl/lib64 |
| |
| $(PROJECT).nmf : $(NEXES) |
| $(NMF) -o $@ -s . $^ $(NMF_PATHS) |
| |
| # Define a phony rule so it always runs, to build nexe and start up server. |
| .PHONY: RUN |
| RUN: all |
| python ../httpd.py |
| |