X-Git-Url: http://nitlanguage.org diff --git a/src/pnacl_platform.nit b/src/pnacl_platform.nit index e26747b..62c2f60 100644 --- a/src/pnacl_platform.nit +++ b/src/pnacl_platform.nit @@ -31,21 +31,16 @@ end class PnaclPlatform super Platform + redef fun supports_libunwind do return false + + redef fun no_main do return true + redef fun toolchain(toolcontext) do return new PnaclToolchain(toolcontext) end class PnaclToolchain super MakefileToolchain - var pnacl_project_root: String - - redef fun compile_dir - do - var normal_compile_dir = super - pnacl_project_root = "{normal_compile_dir}/pnacl/" - return "{normal_compile_dir}/pnacl/src/" - end - redef fun write_files(compiler, compile_dir, cfiles) do var app_name = compiler.mainmodule.name @@ -66,9 +61,10 @@ class PnaclToolchain var outname = toolcontext.opt_output.value if outname == null then outname = "{compiler.mainmodule.name}" + var ofiles = new Array[String] + for cfile in cfiles do ofiles.add(cfile.substring(0, cfile.length-2) + ".o") + ## Generate makefile - dir = pnacl_project_root - if not dir.file_exists then dir.mkdir var file = "{dir}/Makefile" """ # This file was generated by Nit, any modification will be lost. @@ -81,8 +77,11 @@ THIS_MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST))) NACL_SDK_ROOT ?= $(abspath $(dir $(THIS_MAKEFILE))../../../..) # Project Build flags -WARNINGS := -Wno-long-long -Wall -Wswitch-enum -pedantic -Werror -CXXFLAGS := -pthread -std=gnu++98 $(WARNINGS) +WARNINGS := -Wall -pedantic -Wno-long-long -Wno-unused-value -Wno-unused-label -Wno-duplicate-decl-specifier -Wno-switch -Wno-embedded-directive +CXXFLAGS := -pthread $(WARNINGS) + +CXXFLAGS += -g -O0 # Debug +# CXXFLAGS += -O3 # Release # # Compute tool paths @@ -94,8 +93,8 @@ OSNAME := $(shell $(GETOS)) PNACL_TC_PATH := $(abspath $(NACL_SDK_ROOT)/toolchain/$(OSNAME)_pnacl) PNACL_CXX := $(PNACL_TC_PATH)/bin/pnacl-clang PNACL_FINALIZE := $(PNACL_TC_PATH)/bin/pnacl-finalize -CXXFLAGS := -I$(NACL_SDK_ROOT)/include -LDFLAGS := -L$(NACL_SDK_ROOT)/lib/pnacl/Release -lppapi_cpp -lppapi +CXXFLAGS += -I$(NACL_SDK_ROOT)/include -I$(NACL_SDK_ROOT)/include/pnacl +LDFLAGS := -L$(NACL_SDK_ROOT)/lib/pnacl/Release -lppapi_cpp -lppapi -lm # # Disable DOS PATH warning when using Cygwin based tools Windows @@ -104,21 +103,23 @@ CYGWIN ?= nodosfilewarning export CYGWIN # Declare the ALL target first, to make the 'all' target the default build -all: ../../{{{outname}}}/{{{app_name}}}.pexe +all: ../{{{outname}}}/{{{app_name}}}.pexe + +.c.o: + $(PNACL_CXX) -c $< -g -O0 $(CXXFLAGS) -{{{app_name}}}.pexe: src/{{{cfiles.join(" src/")}}} - $(PNACL_CXX) -o $@ $^ -g -O0 $(CXXFLAGS) $(LDFLAGS) # For Debug - # $(PNACL_CXX) -o $@ $^ -O3 $(CXXFLAGS) $(LDFLAGS) # For Release +{{{app_name}}}.pexe: {{{ofiles.join(" ")}}} + $(PNACL_CXX) -o $@ $^ $(LDFLAGS) -../../{{{outname}}}/{{{app_name}}}.pexe: {{{app_name}}}.pexe +../{{{outname}}}/{{{app_name}}}.pexe: {{{app_name}}}.pexe $(PNACL_FINALIZE) -o $@ $< """.write_to_file(file) ### generate the minimal index.html if not outname.file_exists then outname.mkdir file = "{outname}/index.html" - if not file.file_exists then - """ + + if not file.file_exists then """