diff --git a/build-nacl.sh b/build-nacl.sh index c5fdeb2250..1c173f490f 100755 --- a/build-nacl.sh +++ b/build-nacl.sh @@ -9,8 +9,9 @@ # and add the NaCl compiler bin folder to your path. # # There are several libraries from naclports that are -# prerequisite for building cocos2dx on NaCl. The simplest -# way to build them is to checkout naclports and run: +# prerequisite for building cocos2dx on NaCl. These ship +# with recent versions of the NaCl SDK or you can build +# them yourself by checking out naclports and running: # $ make png tiff freetype xml2 freealut jpeg vorbis ogg if [ -z "$NACL_SDK_ROOT" ]; then diff --git a/cocos2dx/platform/nacl/CCInstance.cpp b/cocos2dx/platform/nacl/CCInstance.cpp index fa7653362d..e5289db02a 100644 --- a/cocos2dx/platform/nacl/CCInstance.cpp +++ b/cocos2dx/platform/nacl/CCInstance.cpp @@ -26,11 +26,10 @@ THE SOFTWARE. #include "CCInstance.h" #include "CCApplication.h" #include "CCEGLView.h" + #include #include -#ifndef OLD_NACL_MOUNTS -#include "nacl_io/nacl_io.h" -#endif +#include #include #include @@ -42,9 +41,6 @@ THE SOFTWARE. USING_NS_CC; CocosPepperInstance::CocosPepperInstance(PP_Instance instance) : pp::Instance(instance), -#ifdef OLD_NACL_MOUNTS - _runner(NULL), -#endif _running(false) { RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE); @@ -78,14 +74,10 @@ void CocosPepperInstance::DidChangeView(const pp::View& view) bool CocosPepperInstance::Init(uint32_t argc, const char* argn[], const char* argv[]) { - CCLog("CocosPepperInstance::Init"); -#ifdef OLD_NACL_MOUNTS - _runner = new MainThreadRunner(this); -#else - CCLOG("%p %p", (void*)pp_instance(), (void*)pp::Module::Get()->get_browser_interface()); - nacl_io_init_ppapi(pp_instance(), pp::Module::Get()->get_browser_interface()); - CCLOG("done nacl_mounts_init_ppapi"); - + CCLog("CocosPepperInstance::Init: %x %p", pp_instance(), + pp::Module::Get()->get_browser_interface()); + nacl_io_init_ppapi(pp_instance(), + pp::Module::Get()->get_browser_interface()); umount("/"); int rtn = mount("Resources", /* source. Use relative URL */ @@ -100,7 +92,6 @@ bool CocosPepperInstance::Init(uint32_t argc, const char* argn[], const char* ar return false; } -#endif return true; } diff --git a/cocos2dx/platform/nacl/CCInstance.h b/cocos2dx/platform/nacl/CCInstance.h index 597adcb1d4..d9bfd87648 100644 --- a/cocos2dx/platform/nacl/CCInstance.h +++ b/cocos2dx/platform/nacl/CCInstance.h @@ -29,23 +29,13 @@ THE SOFTWARE. #include #include -#ifdef OLD_NACL_MOUNTS -#include "nacl-mounts/base/MainThreadRunner.h" -#endif - extern "C" void* cocos_main(void* arg); class CocosPepperInstance : public pp::Instance { public: explicit CocosPepperInstance(PP_Instance instance); - virtual ~CocosPepperInstance() - { -#ifdef OLD_NACL_MOUNTS - if (_runner) - delete _runner; -#endif - } + virtual ~CocosPepperInstance() {} virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]); @@ -55,9 +45,6 @@ public: pp::Size Size() { return _size; } -#ifdef OLD_NACL_MOUNTS - MainThreadRunner* _runner; -#endif private: pp::Size _size; pthread_t _cocos_thread; diff --git a/cocos2dx/proj.nacl/cocos2dx.mk b/cocos2dx/proj.nacl/cocos2dx.mk index 41f7e4ee2c..86e0610e02 100644 --- a/cocos2dx/proj.nacl/cocos2dx.mk +++ b/cocos2dx/proj.nacl/cocos2dx.mk @@ -2,6 +2,16 @@ # when building for Native Client. It defines a set of variables that all # cocos2dx projects have in common. +ifeq ($(NACL_SDK_ROOT),) + $(error $$NACL_SDK_ROOT not set) +endif + +NACL_SDK_VERSION_MIN=27.186236 +VERSION_CHECK:=$(shell $(NACL_SDK_ROOT)/tools/getos.py --check-version=$(NACL_SDK_VERSION_MIN) 2>&1) +ifneq ($(VERSION_CHECK),) + $(error $(VERSION_CHECK)) +endif + all: NACL_LIBC = newlib @@ -95,16 +105,9 @@ CCFLAGS += -Wno-psabi CXXFLAGS += -Wno-psabi endif -ifdef NACL_MOUNTS -DEFINES += -DOLD_NACL_MOUNTS -STATICLIBS += -lnacl-mounts -else -STATICLIBS += -lnacl_io -endif - SOUNDLIBS := -lalut -lopenal -lvorbisfile -lvorbis -logg STATICLIBS += $(SOUNDLIBS) -lfreetype -lxml2 -lwebp -lpng -ljpeg -ltiff -llua -lchipmunk -STATICLIBS += -lppapi_gles2 -lppapi -lppapi_cpp -lnosys +STATICLIBS += -lnacl_io -lppapi_gles2 -lppapi -lppapi_cpp -lnosys SHAREDLIBS += -lpthread -lcocosdenshion -lcocos2d -lz OBJECTS := $(SOURCES:.cpp=.o) diff --git a/samples/Cpp/HelloCpp/proj.nacl/main.cpp b/samples/Cpp/HelloCpp/proj.nacl/main.cpp index 5abe1bdab6..b5b396264e 100644 --- a/samples/Cpp/HelloCpp/proj.nacl/main.cpp +++ b/samples/Cpp/HelloCpp/proj.nacl/main.cpp @@ -9,70 +9,13 @@ #include #include -#ifdef OLD_NACL_MOUNTS -#include "nacl-mounts/base/UrlLoaderJob.h" -#endif -#include "fcntl.h" -#include "sys/stat.h" - USING_NS_CC; AppDelegate g_app; -#ifdef OLD_NACL_MOUNTS -void downloadFiles(MainThreadRunner* runner, const char** filenames, int num_files) -{ - CCLOG("Downloading %d files...", num_files); - for (int i = 0; i < num_files; i++) - { - std::vector data; - const char* filename = filenames[i]; - std::string url = "Resources/"; - url += filename; - - CCLOG("Downloading: %s -> %s", url.c_str(), filename); - UrlLoaderJob *job = new UrlLoaderJob; - job->set_url(url); - job->set_dst(&data); - runner->RunJob(job); - CCLOG("Got %d bytes", data.size()); - - CCLOG("Writing file: %s", filename); - int fd = open(filename, O_CREAT | O_WRONLY); - if (fd == -1) - { - CCLOG("Error writing file: %s", filename); - continue; - } - write(fd, &data[0], data.size()); - close(fd); - } -} -#endif - void* cocos_main(void* arg) { fprintf(stderr, "in cocos_main\n"); - -#ifdef OLD_NACL_MOUNTS - // TODO(sbc): remove this hack an replace with some kind of URL mount - CocosPepperInstance* instance = (CocosPepperInstance*)arg; - - mkdir("ipad", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - mkdir("iphone", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - mkdir("fonts", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - const char* filenames[] = { "ipad/HelloWorld.png", - "ipad/CloseSelected.png", - "ipad/CloseNormal.png", - "iphone/HelloWorld.png", - "iphone/CloseSelected.png", - "iphone/CloseNormal.png", - "fonts/Marker Felt.ttf" }; - - downloadFiles(instance->_runner, filenames, sizeof(filenames)/sizeof(char*)); -#endif - - fprintf(stderr, "calling application->run\n"); int rtn = Application::sharedApplication()->run(); fprintf(stderr, "app run returned: %d\n", rtn); return NULL; diff --git a/samples/Cpp/SimpleGame/proj.nacl/main.cpp b/samples/Cpp/SimpleGame/proj.nacl/main.cpp index 7f58f5ffb1..516babe5de 100644 --- a/samples/Cpp/SimpleGame/proj.nacl/main.cpp +++ b/samples/Cpp/SimpleGame/proj.nacl/main.cpp @@ -10,73 +10,15 @@ #include #include "AL/alc.h" -#include "fcntl.h" -#include "sys/stat.h" - USING_NS_CC; AppDelegate g_app; -#ifdef OLD_NACL_MOUNTS -#include "nacl-mounts/base/UrlLoaderJob.h" -void downloadFiles(MainThreadRunner* runner, const char** filenames, int num_files) -{ - CCLOG("Downloading %d files...", num_files); - for (int i = 0; i < num_files; i++) - { - std::vector data; - const char* filename = filenames[i]; - std::string url = "Resources/"; - url += filename; - - CCLOG("Downloading: %s -> %s", url.c_str(), filename); - UrlLoaderJob *job = new UrlLoaderJob; - job->set_url(url); - job->set_dst(&data); - runner->RunJob(job); - CCLOG("Got %d bytes", data.size()); - - CCLOG("Writing file: %s", filename); - int fd = open(filename, O_CREAT | O_WRONLY); - if (fd == -1) - { - CCLOG("Error writing file: %s", filename); - continue; - } - write(fd, &data[0], data.size()); - close(fd); - } -} -#endif - void* cocos_main(void* arg) { - CocosPepperInstance* instance = (CocosPepperInstance*)arg; fprintf(stderr, "in cocos_main\n"); - + CocosPepperInstance* instance = (CocosPepperInstance*)arg; alSetPpapiInfo(instance->pp_instance(), pp::Module::Get()->get_browser_interface()); - -#ifdef OLD_NACL_MOUNTS - // TODO(sbc): remove this hack an replace with some kind of URL mount - mkdir("hd", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - mkdir("sd", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - mkdir("fonts", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - const char* filenames[] = { "hd/CloseNormal.png", - "sd/CloseNormal.png", - "hd/CloseSelected.png", - "sd/CloseSelected.png", - "hd/Target.png", - "sd/Target.png", - "hd/Player.png", - "sd/Player.png", - "hd/Projectile.png", - "sd/Projectile.png", - "pew-pew-lei.wav", - "fonts/Marker Felt.ttf" }; - - downloadFiles(instance->_runner, filenames, sizeof(filenames)/sizeof(char*)); -#endif - fprintf(stderr, "calling application->run\n"); int rtn = Application::sharedApplication()->run(); fprintf(stderr, "app run returned: %d\n", rtn); diff --git a/samples/Cpp/TestCpp/proj.nacl/main.cpp b/samples/Cpp/TestCpp/proj.nacl/main.cpp index 83e5d1fa54..d309b1397a 100644 --- a/samples/Cpp/TestCpp/proj.nacl/main.cpp +++ b/samples/Cpp/TestCpp/proj.nacl/main.cpp @@ -8,129 +8,17 @@ #include #include #include -#include -#include #include - USING_NS_CC; AppDelegate g_app; -#ifdef OLD_NACL_MOUNTS -#include "nacl-mounts/base/UrlLoaderJob.h" -void downloadFiles(MainThreadRunner* runner, const char** filenames, int num_files) -{ - CCLOG("Downloading %d files...", num_files); - for (int i = 0; i < num_files; i++) - { - std::vector data; - const char* filename = filenames[i]; - std::string url = "Resources/"; - url += filename; - - CCLOG("Downloading: %s -> %s", url.c_str(), filename); - UrlLoaderJob *job = new UrlLoaderJob; - job->set_url(url); - job->set_dst(&data); - runner->RunJob(job); - CCLOG("Got %d bytes", data.size()); - - CCLOG("Writing file: %s", filename); - int fd = open(filename, O_CREAT | O_WRONLY); - if (fd == -1) - { - assert("error writing file"); - CCLOG("Error writing file: %s", filename); - continue; - } - write(fd, &data[0], data.size()); - close(fd); - } -} -#endif - void* cocos_main(void* arg) { CocosPepperInstance* instance = (CocosPepperInstance*)arg; - fprintf(stderr, "in cocos_main %p\n", instance); - + fprintf(stderr, "in cocos_main: %p\n", instance); alSetPpapiInfo(instance->pp_instance(), pp::Module::Get()->get_browser_interface()); - -#ifdef OLD_NACL_MOUNTS - // TODO(sbc): remove this hack an replace with some kind of URL mount - const char* dirnames[] = { "Images", "extensions", "fonts", "ccb", - "zwoptex", "Particles", "Shaders", "TileMaps" }; - - for (size_t i = 0; i < sizeof(dirnames)/sizeof(char*); i++) - mkdir(dirnames[i], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - - const char* filenames[] = { "Images/grossini.png", - "Images/close.png", - "Images/ball.png", - "Images/paddle.png", - "Images/grossinis_sister1.png", - "Images/grossinis_sister2.png", - "Images/grossini_dance_01.png", - "Images/background1.png", - "Images/background2.png", - "Images/background3.png", - "Images/f1.png", - "Images/f2.png", - "Images/r1.png", - "Images/r2.png", - "Images/b1.png", - "Images/b2.png", - "Images/blocks.png", - "Images/Icon.png", - "Images/streak.png", - "Images/fire.png", - "Images/white-512x512.png", - "Images/test_1021x1024_rgb888.pvr.gz", - "Images/test_1021x1024.png", - "Images/grossini_dance_atlas.png", - "Images/powered.png", - "Images/background.png", - "TileMaps/levelmap.tga", - "TileMaps/tiles.png", - "fps_images.png", - "Shaders/example_Monjori.vsh", - "Shaders/example_Monjori.fsh", - "Shaders/example_Mandelbrot.vsh", - "Shaders/example_Mandelbrot.fsh", - "Shaders/example_Julia.vsh", - "Shaders/example_Julia.fsh", - "Shaders/example_Plasma.vsh", - "Shaders/example_Plasma.fsh", - "Shaders/example_Heart.vsh", - "Shaders/example_Heart.fsh", - "Shaders/example_Flower.vsh", - "Shaders/example_Flower.fsh", - "Shaders/example_Blur.fsh", - "Shaders/example_HorizontalColor.vsh", - "Shaders/example_HorizontalColor.fsh", - "Particles/SmallSun.plist", - "Particles/LavaFlow.plist", - "fonts/arial.ttf", - "fonts/west_england-64.fnt", - "fonts/west_england-64.png", - "fonts/Thonburi.ttf", - "fonts/Marker Felt.ttf", - "ccb/HelloCocosBuilder.ccbi", - "ccb/burst.png", - "effect1.wav", - "background.mp3", - "extensions/sliderTrack.png", - "extensions/sliderProgress.png", - "extensions/sliderThumb.png", - "extensions/background.png", - "extensions/ribbon.png", - "zwoptex/grossini.plist", - "zwoptex/grossini.png" }; - - downloadFiles(instance->_runner, filenames, sizeof(filenames)/sizeof(char*)); -#endif - fprintf(stderr, "calling application->run\n"); int rtn = Application::sharedApplication()->run(); fprintf(stderr, "app run returned: %d\n", rtn); diff --git a/samples/Lua/HelloLua/proj.nacl/main.cpp b/samples/Lua/HelloLua/proj.nacl/main.cpp index 779ad38921..6e8493656a 100644 --- a/samples/Lua/HelloLua/proj.nacl/main.cpp +++ b/samples/Lua/HelloLua/proj.nacl/main.cpp @@ -17,62 +17,11 @@ USING_NS_CC; AppDelegate g_app; -#ifdef OLD_NACL_MOUNTS -#include "nacl-mounts/base/UrlLoaderJob.h" -void downloadFiles(MainThreadRunner* runner, const char** filenames, int num_files) -{ - CCLOG("Downloading %d files...", num_files); - for (int i = 0; i < num_files; i++) - { - std::vector data; - const char* filename = filenames[i]; - std::string url = "Resources/"; - url += filename; - - CCLOG("Downloading: %s -> %s", url.c_str(), filename); - UrlLoaderJob *job = new UrlLoaderJob; - job->set_url(url); - job->set_dst(&data); - runner->RunJob(job); - CCLOG("Got %d bytes", data.size()); - - CCLOG("Writing file: %s", filename); - int fd = open(filename, O_CREAT | O_WRONLY); - if (fd == -1) - { - CCLOG("Error writing file: %s", filename); - continue; - } - write(fd, &data[0], data.size()); - close(fd); - } -} -#endif - void* cocos_main(void* arg) { - CocosPepperInstance* instance = (CocosPepperInstance*)arg; fprintf(stderr, "in cocos_main\n"); + CocosPepperInstance* instance = (CocosPepperInstance*)arg; alSetPpapiInfo(instance->pp_instance(), pp::Module::Get()->get_browser_interface()); - -#ifdef OLD_NACL_MOUNTS - // TODO(sbc): remove this hack an replace with some kind of URL mount - mkdir("fonts", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - const char* filenames[] = { "hello.lua", - "hello2.lua", - "farm.jpg", - "land.png", - "menu1.png", - "menu2.png", - "crop.png", - "dog.png", - "effect1.wav", - "background.ogg", - "fonts/Marker Felt.ttf" }; - - downloadFiles(instance->_runner, filenames, sizeof(filenames)/sizeof(char*)); -#endif - fprintf(stderr, "calling application->run\n"); int rtn = Application::sharedApplication()->run(); fprintf(stderr, "app run returned: %d\n", rtn); diff --git a/samples/Lua/TestLua/proj.nacl/main.cpp b/samples/Lua/TestLua/proj.nacl/main.cpp index d453f1cab0..d2015102b1 100644 --- a/samples/Lua/TestLua/proj.nacl/main.cpp +++ b/samples/Lua/TestLua/proj.nacl/main.cpp @@ -10,128 +10,15 @@ #include #include -#ifdef OLD_NACL_MOUNTS -#include "nacl-mounts/base/UrlLoaderJob.h" -#include "fcntl.h" -#include "sys/stat.h" -#endif - USING_NS_CC; AppDelegate g_app; -#ifdef OLD_NACL_MOUNTS -void downloadFiles(MainThreadRunner* runner, const char** filenames, int num_files) -{ - CCLOG("Downloading %d files...", num_files); - for (int i = 0; i < num_files; i++) - { - std::vector data; - const char* filename = filenames[i]; - std::string url = "Resources/"; - url += filename; - - CCLOG("Downloading: %s -> %s", url.c_str(), filename); - UrlLoaderJob *job = new UrlLoaderJob; - job->set_url(url); - job->set_dst(&data); - runner->RunJob(job); - CCLOG("Got %d bytes", data.size()); - - CCLOG("Writing file: %s", filename); - int fd = open(filename, O_CREAT | O_WRONLY); - if (fd == -1) - { - CCLOG("Error writing file: %s", filename); - continue; - } - write(fd, &data[0], data.size()); - close(fd); - } -} -#endif - void* cocos_main(void* arg) { - CocosPepperInstance* instance = (CocosPepperInstance*)arg; fprintf(stderr, "in cocos_main\n"); + CocosPepperInstance* instance = (CocosPepperInstance*)arg; alSetPpapiInfo(instance->pp_instance(), pp::Module::Get()->get_browser_interface()); - -#ifdef OLD_NACL_MOUNTS - // TODO(sbc): remove this hack an replace with some kind of URL mount - const char* dirnames[] = { "Images", "extensions", "fonts", "ccb", - "zwoptex", "Particles", "Shaders", "luaScript", - "luaScript/ActionsTest" }; - - for (size_t i = 0; i < sizeof(dirnames)/sizeof(char*); i++) - mkdir(dirnames[i], S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); - - const char* filenames[] = { "Images/grossini.png", - "Images/close.png", - "Images/grossinis_sister1.png", - "Images/grossinis_sister2.png", - "Images/grossini_dance_01.png", - "Images/background1.png", - "Images/background2.png", - "Images/background3.png", - "Images/f1.png", - "Images/f2.png", - "Images/r1.png", - "Images/r2.png", - "Images/b1.png", - "Images/b2.png", - "Images/blocks.png", - "Images/Icon.png", - "Images/streak.png", - "Images/fire.png", - "Images/white-512x512.png", - "Images/test_1021x1024_rgb888.pvr.gz", - "Images/test_1021x1024.png", - "Images/grossini_dance_atlas.png", - "fps_images.png", - "Shaders/example_Monjori.vsh", - "Shaders/example_Monjori.fsh", - "Shaders/example_Mandelbrot.vsh", - "Shaders/example_Mandelbrot.fsh", - "Shaders/example_Julia.vsh", - "Shaders/example_Julia.fsh", - "Shaders/example_Plasma.vsh", - "Shaders/example_Plasma.fsh", - "Shaders/example_Heart.vsh", - "Shaders/example_Heart.fsh", - "Shaders/example_Flower.vsh", - "Shaders/example_Flower.fsh", - "Shaders/example_Blur.fsh", - "Shaders/example_HorizontalColor.vsh", - "Shaders/example_HorizontalColor.fsh", - "Particles/SmallSun.plist", - "Particles/LavaFlow.plist", - "fonts/arial.ttf", - "fonts/west_england-64.fnt", - "fonts/west_england-64.png", - "fonts/Thonburi.ttf", - "fonts/Marker Felt.ttf", - "ccb/HelloCocosBuilder.ccbi", - "ccb/burst.png", - "effect1.wav", - "background.mp3", - "extensions/sliderTrack.png", - "extensions/sliderProgress.png", - "extensions/sliderThumb.png", - "extensions/background.png", - "extensions/ribbon.png", - "zwoptex/grossini.plist", - "zwoptex/grossini.png", - "luaScript/mainMenu.lua", - "luaScript/helper.lua", - "luaScript/testResource.lua", - "luaScript/ActionsTest/ActionsTest.lua", - "luaScript/ActionsTest/ActionsName.lua", - "luaScript/controller.lua" }; - - downloadFiles(instance->_runner, filenames, sizeof(filenames)/sizeof(char*)); -#endif - fprintf(stderr, "calling application->run\n"); int rtn = Application::sharedApplication()->run(); fprintf(stderr, "app run returned: %d\n", rtn);