diff --git a/blackberry-qnx/bb10/.cproject b/blackberry-qnx/bb10/.cproject new file mode 100644 index 0000000000..e6ecda9067 --- /dev/null +++ b/blackberry-qnx/bb10/.cproject @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/blackberry-qnx/bb10/.project b/blackberry-qnx/bb10/.project new file mode 100644 index 0000000000..2ac321a0db --- /dev/null +++ b/blackberry-qnx/bb10/.project @@ -0,0 +1,91 @@ + + + RetroArch-Cascades + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + Device-Debug + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + true + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + Device-Debug + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + com.rim.tad.tools.qml.core.qmlFileBuilder + + + + + com.qnx.tools.bbt.xml.core.bbtXMLValidationBuilder + + + + + + com.rim.tad.tools.wst.jsdt.core.jsNature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + com.qnx.tools.ide.bbt.core.bbtnature + org.eclipse.cdt.core.ccnature + com.rim.tad.tools.qml.core.qmlNature + + diff --git a/blackberry-qnx/bb10/Makefile b/blackberry-qnx/bb10/Makefile new file mode 100644 index 0000000000..ce6a86aa05 --- /dev/null +++ b/blackberry-qnx/bb10/Makefile @@ -0,0 +1,6 @@ +QMAKE_TARGET = RetroArch-Cascades +PROJECT_DIR := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))) +I18N_DIR := $(PROJECT_DIR)/translations + +include mk/cs-base.mk + diff --git a/blackberry-qnx/bb10/RetroArch-Cascades.pro b/blackberry-qnx/bb10/RetroArch-Cascades.pro new file mode 100644 index 0000000000..e2c36e3e21 --- /dev/null +++ b/blackberry-qnx/bb10/RetroArch-Cascades.pro @@ -0,0 +1,25 @@ +APP_NAME = RetroArch-Cascades + +CONFIG += qt warn_on cascades10 + +LIBS += -lscreen -lbps -lOpenAL -lpng -lEGL -lGLESv2 +LIBS += -lbbcascadespickers -lbbdata + +DEFINES += HAVE_RGUI HAVE_NEON \ + SINC_LOWER_QUALITY HAVE_RARCH_MAIN_IMPLEMENTATION \ + HAVE_VID_CONTEXT HAVE_FBO HAVE_GRIFFIN __LIBRETRO__ \ + HAVE_DYNAMIC HAVE_ZLIB __BLACKBERRY_QNX__ HAVE_OPENGLES \ + PACKAGE_VERSION=\"0.9.8.4\" HAVE_OPENGLES2 HAVE_NULLINPUT \ + HAVE_AL HAVE_THREADS WANT_MINIZ HAVE_OVERLAY HAVE_GLSL \ + USING_GL20 HAVE_OPENGL __STDC_CONSTANT_MACROS HAVE_BB10 + +INCLUDEPATH += ../../../../RetroArch + +QMAKE_CXXFLAGS += +QMAKE_CFLAGS += -Wc,-std=gnu99 -marm -mfpu=neon + +SOURCES += ../../../griffin/griffin.c \ + ../../../audio/sinc_neon.S \ + ../../../audio/utils_neon.S + +include(config.pri) diff --git a/blackberry-qnx/bb10/assets/MainMenu.qml b/blackberry-qnx/bb10/assets/MainMenu.qml new file mode 100644 index 0000000000..4ee3b9aeaf --- /dev/null +++ b/blackberry-qnx/bb10/assets/MainMenu.qml @@ -0,0 +1,108 @@ +import bb.cascades 1.0 +import bb.cascades.pickers 1.0 + +Page { + actions: [ + ActionItem { + title: "Play" + ActionBar.placement: ActionBarPlacement.OnBar + imageSource: "asset:///images/open.png" + onTriggered: { + if(RetroArch.rom == "" || RetroArch.core == "") + { + //Do something to focus on select rom box + } + else + { + RetroArch.startEmulator(); + } + } + } + ] + + titleBar: TitleBar { + id: titleBar + title: "RetroArch" + } + + Container { + horizontalAlignment: HorizontalAlignment.Fill + verticalAlignment: VerticalAlignment.Fill + rightPadding: 20 + leftPadding: 20 + + layout: DockLayout {} + + Container { + preferredWidth: 680 + horizontalAlignment: HorizontalAlignment.Center + verticalAlignment: VerticalAlignment.Center + + ImageView + { + horizontalAlignment: HorizontalAlignment.Center + imageSource: "asset:///images/icon.png" + preferredWidth: 200 + preferredHeight: 200 + } + + DropDown + { + id: _core + objectName: "dropdown_core" + horizontalAlignment: HorizontalAlignment.Center + title: "Core Selection" + //Handled in C++ + } + + Container { + horizontalAlignment: HorizontalAlignment.Center + preferredWidth: 680 + + layout: StackLayout { + orientation: LayoutOrientation.LeftToRight + } + + //I like the look as a textbox + DropDown + { + id: romName + verticalAlignment: VerticalAlignment.Center + horizontalAlignment: HorizontalAlignment.Center + preferredWidth: 600 + enabled: false + title: if(picker.selectedFile) + picker.selectedFile + else + "Rom Selection" + } + + ImageButton { + horizontalAlignment: HorizontalAlignment.Right + defaultImageSource: "asset:///images/file.png" + onClicked: { + picker.open(); + } + } + } + } + } + attachedObjects: [ + FilePicker { + id: picker + + property string selectedFile + + title: "Rom Selector" + filter: { RetroArch.romExtensions.split("|") } + type: FileType.Other + directories: ["/accounts/1000/shared/documents/roms"] + + onFileSelected: { + RetroArch.rom = selectedFiles[0]; + selectedFile = RetroArch.rom.substr(RetroArch.rom.lastIndexOf('/')+1); + picker.directories = [RetroArch.rom.substr(0, RetroArch.rom.lastIndexOf('/'))]; + } + } + ] +} diff --git a/blackberry-qnx/bb10/assets/coreInfo.json b/blackberry-qnx/bb10/assets/coreInfo.json new file mode 100644 index 0000000000..2da92d8b12 --- /dev/null +++ b/blackberry-qnx/bb10/assets/coreInfo.json @@ -0,0 +1,42 @@ +{ + "snes9x_next_libretro.so":{ + "display_name":"SNES / Super Famicom", + "supported_extensions":"*.smc|*.fig|*.sfc|*.gd3|*.gd7|*.dx2|*.bsx|*.swc", + "corename":"SNES9x Next", + "manufacturer":"Nintendo", + "systemname":"Super Nintendo Entertainment System", + "default_overlay":"app/native/overlays/snes-landscape.cfg" + }, + "genesis_plus_gx_libretro.so":{ + "display_name":"Sega (MS/GG/MD/CD)", + "supported_extensions":"*.md|*.smd|*.gen|*.sms|*.gg|*.sg|*.bin|*.cue|*.ios", + "corename":"Genesis Plus GX", + "manufacturer":"Sega", + "systemname":"Sega (Various)", + "default_overlay":"app/native/overlays/genesis6-landscape.cfg" + }, + "vba_next_libretro.so":{ + "display_name":"Game Boy Advance", + "supported_extensions":"*.gba", + "corename":"VBA Next", + "manufacturer":"Nintendo", + "systemname":"Game Boy Advance", + "default_overlay":"app/native/overlays/box-gba.cfg" + }, + "pcsx_rearmed_libretro.so":{ + "display_name":"PlayStation1", + "supported_extensions":"*.bin|*.cue|*.img|*.mdf|*.pbp|*.cbn|*.toc", + "corename":"PCSX ReARMed", + "manufacturer":"Sony", + "systemname":"PlayStation", + "default_overlay":"app/native/overlays/psx-landscape.cfg" + }, + "fb_alpha_libretro.so":{ + "display_name":"Arcade", + "supported_extensions":"*.zip|*.ZIP", + "corename":"Final Burn Alpha", + "manufacturer":"Various", + "systemname":"Arcade (various)", + "default_overlay":"app/native/overlays/snes-landscape.cfg" + } +} diff --git a/blackberry-qnx/bb10/assets/images/file.png b/blackberry-qnx/bb10/assets/images/file.png new file mode 100644 index 0000000000..cd10d50581 Binary files /dev/null and b/blackberry-qnx/bb10/assets/images/file.png differ diff --git a/playbook/icon.png b/blackberry-qnx/bb10/assets/images/icon.png similarity index 100% rename from playbook/icon.png rename to blackberry-qnx/bb10/assets/images/icon.png diff --git a/blackberry-qnx/bb10/assets/images/open.png b/blackberry-qnx/bb10/assets/images/open.png new file mode 100644 index 0000000000..931936bf79 Binary files /dev/null and b/blackberry-qnx/bb10/assets/images/open.png differ diff --git a/blackberry-qnx/bb10/assets/main.qml b/blackberry-qnx/bb10/assets/main.qml new file mode 100644 index 0000000000..ab8cd70a1c --- /dev/null +++ b/blackberry-qnx/bb10/assets/main.qml @@ -0,0 +1,11 @@ +import bb.cascades 1.0 +import bb.cascades.pickers 1.0 + +TabbedPane { + Tab { + MainMenu + { + + } + } +} diff --git a/blackberry-qnx/bb10/bar-descriptor.xml b/blackberry-qnx/bb10/bar-descriptor.xml new file mode 100644 index 0000000000..e04a5c2f4d --- /dev/null +++ b/blackberry-qnx/bb10/bar-descriptor.xml @@ -0,0 +1,83 @@ + + + + + + + com.example.RetroArch + + + RetroArch + + + 1.0.0 + + + 1 + + + + + + + true + none + false + + + + core.games + + armle-v7 + RetroArch-Cascades + + + Qnx/Cascades + armle-v7 + RetroArch-Cascades.so + + + armle-v7 + RetroArch-Cascades + + + + + + icon.png + + + + + + + + + + retroarch.cfg + lib + overlays + assets + icon.png + + + + dark + + + run_native + access_shared + + + + diff --git a/blackberry-qnx/bb10/config.pri b/blackberry-qnx/bb10/config.pri new file mode 100644 index 0000000000..4abec4b0da --- /dev/null +++ b/blackberry-qnx/bb10/config.pri @@ -0,0 +1,46 @@ +# Auto-generated by IDE. Changes by user will be lost! +BASEDIR = $$quote($$_PRO_FILE_PWD_) + +device { + CONFIG(debug, debug|release) { + SOURCES += $$quote($$BASEDIR/src/RetroArch-Cascades.cpp) \ + $$quote($$BASEDIR/src/main.cpp) + + HEADERS += $$quote($$BASEDIR/src/RetroArch-Cascades.h) + + } + + CONFIG(release, debug|release) { + SOURCES += $$quote($$BASEDIR/src/RetroArch-Cascades.cpp) \ + $$quote($$BASEDIR/src/main.cpp) + + HEADERS += $$quote($$BASEDIR/src/RetroArch-Cascades.h) + + } + +} + +simulator { + CONFIG(debug, debug|release) { + SOURCES += $$quote($$BASEDIR/src/RetroArch-Cascades.cpp) \ + $$quote($$BASEDIR/src/main.cpp) + + HEADERS += $$quote($$BASEDIR/src/RetroArch-Cascades.h) + + } + +} + +INCLUDEPATH += $$quote($$BASEDIR/src) + +CONFIG += precompile_header + +PRECOMPILED_HEADER = $$quote($$BASEDIR/precompiled.h) + +lupdate_inclusion { + SOURCES += $$quote($$BASEDIR/../assets/*.qml) + +} + +TRANSLATIONS = $$quote($${TARGET}.ts) + diff --git a/blackberry-qnx/bb10/precompiled.h b/blackberry-qnx/bb10/precompiled.h new file mode 100644 index 0000000000..6213dc4ba7 --- /dev/null +++ b/blackberry-qnx/bb10/precompiled.h @@ -0,0 +1,2 @@ +// This file is used to store precompiled headers. +// It is intentionally left blank. It is up to you to decide which headers should be included here. diff --git a/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp b/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp new file mode 100644 index 0000000000..86f612013c --- /dev/null +++ b/blackberry-qnx/bb10/src/RetroArch-Cascades.cpp @@ -0,0 +1,310 @@ +/* Copyright (c) 2012 Research In Motion Limited. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "RetroArch-Cascades.h" +#include "general.h" +#include "conf/config_file.h" +#include "file.h" + +#ifdef HAVE_RGUI +#include "frontend/menu/rgui.h" +#endif + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +using namespace bb::cascades; +using namespace bb::data; + +//Use after calling findCores +#define GET_CORE_INFO(x, y) coreInfo[coreList[x]].toMap()[y].toString() + +RetroArch::RetroArch() +{ + qmlRegisterType("bb.cascades.pickers", 1, 0, "FilePicker"); + qmlRegisterUncreatableType("bb.cascades.pickers", 1, 0, "FileType", ""); + + // Create channel to signal threads on + chid = ChannelCreate(0); + coid = ConnectAttach(0, 0, chid, _NTO_SIDE_CHANNEL, 0); + + bool res = connect( + OrientationSupport::instance(), SIGNAL(rotationCompleted()), + this, SLOT(onRotationCompleted())); + + rarch_main_clear_state(); + + strlcpy(g_settings.libretro, "app/native/lib", sizeof(g_settings.libretro)); + coreSelectedIndex = -1; + + QmlDocument *qml = QmlDocument::create("asset:///main.qml"); + + if (!qml->hasErrors()) + { + qml->setContextProperty("RetroArch", this); + + AbstractPane *mAppPane = qml->createRootObject(); + + if (mAppPane) + { + //Get core DropDown reference to populate it in C++ + coreSelection = mAppPane->findChild("dropdown_core"); + connect(coreSelection, SIGNAL(selectedValueChanged(QVariant)), this, SLOT(onCoreSelected(QVariant))); + findCores(); + + Application::instance()->setScene(mAppPane); + + // Start the thread in which we render to the custom window. + start(); + } + } +} + +RetroArch::~RetroArch() +{ + free(coreList); +} + +void RetroArch::aboutToQuit() +{ + recv_msg msg; + + msg.code = RETROARCH_EXIT; + + MsgSend(coid, (void*)&msg, sizeof(msg), (void*)NULL, 0); + + wait(); +} + +extern screen_window_t screen_win; +extern screen_context_t screen_ctx; +void RetroArch::run() +{ + int rcvid = -1; + recv_msg msg; + + while (true) { + rcvid = MsgReceive(chid, &msg, sizeof(msg), 0); + + if (rcvid > 0) + { + switch (msg.code) + { + case RETROARCH_START_REQUESTED: + { + printf("RetroArch Started Received\n");fflush(stdout); + + MsgReply(rcvid,0,NULL,0); + + screen_create_context(&screen_ctx, 0); + + bps_initialize(); + + if (screen_request_events(screen_ctx) != BPS_SUCCESS) + { + RARCH_ERR("screen_request_events failed.\n"); + } + + if (navigator_request_events(0) != BPS_SUCCESS) + { + RARCH_ERR("navigator_request_events failed.\n"); + } + + if (navigator_rotation_lock(false) != BPS_SUCCESS) + { + RARCH_ERR("navigator_location_lock failed.\n"); + } + + screen_create_window_type(&screen_win, screen_ctx, SCREEN_CHILD_WINDOW); + + screen_join_window_group(screen_win, Application::instance()->mainWindow()->groupId().toAscii().constData()); + + char *win_id = "RetroArch_Emulator_Window"; + screen_set_window_property_cv(screen_win, SCREEN_PROPERTY_ID_STRING, strlen(win_id), win_id); + + int z = 10; + if (screen_set_window_property_iv(screen_win, SCREEN_PROPERTY_ZORDER, &z) != 0) { + return; + } + + initRASettings(); + + rarch_main(0, NULL); + break; + } + case RETROARCH_EXIT: + MsgReply(rcvid,0,NULL,0); + goto exit; + default: + break; + } + } + } + exit: + return; +} + + +/* + * Properties + */ +QString RetroArch::getRom() +{ + return rom; +} + +void RetroArch::setRom(QString rom) +{ + this->rom = rom; +} + +QString RetroArch::getCore() +{ + return core; +} + +void RetroArch::setCore(QString core) +{ + this->core = core; +} + +QString RetroArch::getRomExtensions() +{ + return romExtensions; +} + +/* + * Slots + */ +void RetroArch::onRotationCompleted() +{ + if (OrientationSupport::instance()->orientation() == UIOrientation::Landscape) + { + if (state == RETROARCH_START_REQUESTED) + { + startEmulator(); + } + } +} + +void RetroArch::onCoreSelected(QVariant value) +{ + coreSelectedIndex = value.toInt(); + + core.clear(); + core.append("app/native/lib/"); + core.append(coreList[coreSelectedIndex]); + emit coreChanged(core); + + romExtensions = GET_CORE_INFO(coreSelectedIndex, "supported_extensions"); + emit romExtensionsChanged(romExtensions); + + qDebug() << "Core Selected: " << core; + qDebug() << "Supported Extensions: " << romExtensions; +} + +/* + * Functions + */ +void RetroArch::startEmulator() +{ + state = RETROARCH_START_REQUESTED; + + if (OrientationSupport::instance()->orientation() == UIOrientation::Portrait) + { + OrientationSupport::instance()->setSupportedDisplayOrientation(SupportedDisplayOrientation::DisplayLandscape); + } + else + { + recv_msg msg; + msg.code = RETROARCH_START_REQUESTED; + + MsgSend(coid, (void*)&msg, sizeof(msg), (void*)NULL, 0); + + state = RETROARCH_RUNNING; + } +} + +void RetroArch::findCores() +{ + DIR *dirp; + struct dirent* direntp; + int count=0, i=0; + + dirp = opendir(g_settings.libretro); + if( dirp != NULL ) { + for(;;) { + direntp = readdir( dirp ); + if( direntp == NULL ) break; + count++; + } + fflush(stdout); + rewinddir(dirp); + + if(count==2){ + printf("No Cores Found");fflush(stdout); + } + + coreList = (char**)malloc(count*sizeof(char*)); + count = 0; + + for(;;){ + direntp = readdir( dirp ); + if( direntp == NULL ) break; + coreList[count++] = strdup((char*)direntp->d_name); + } + + //Load info for Cores + JsonDataAccess jda; + + coreInfo = jda.load("app/native/assets/coreInfo.json").toMap(); + + Option *tmp; + + //Populate DropDown + for (i = 2; i < count; ++i) + { + qDebug() << GET_CORE_INFO(i, "display_name"); + + tmp = Option::create().text(GET_CORE_INFO(i, "display_name")) + .value(i); + + coreSelection->add(tmp); + } + } + + closedir(dirp); +} + +void RetroArch::initRASettings() +{ + strlcpy(g_settings.libretro,(char *)core.toAscii().constData(), sizeof(g_settings.libretro)); + strlcpy(g_extern.fullpath, (char *)rom.toAscii().constData(), sizeof(g_extern.fullpath)); + strlcpy(g_settings.input.overlay, GET_CORE_INFO(coreSelectedIndex, "default_overlay").toAscii().constData(), sizeof(g_settings.input.overlay)); +} + diff --git a/blackberry-qnx/bb10/src/RetroArch-Cascades.h b/blackberry-qnx/bb10/src/RetroArch-Cascades.h new file mode 100644 index 0000000000..aa58391922 --- /dev/null +++ b/blackberry-qnx/bb10/src/RetroArch-Cascades.h @@ -0,0 +1,87 @@ +#ifndef _RETROARCHCASCADES_H_ +#define _RETROARCHCASCADES_H_ + +#include +#include +#include +#include + +#include +#include + +using namespace bb::cascades; + +namespace bb +{ + namespace cascades + { + class Page; + } +} + +class RetroArch: public QThread +{ + Q_OBJECT + + Q_PROPERTY(QString rom READ getRom WRITE setRom NOTIFY romChanged) + Q_PROPERTY(QString core READ getCore WRITE setCore NOTIFY coreChanged) + Q_PROPERTY(QString romExtensions READ getRomExtensions NOTIFY romExtensionsChanged) + +public: + RetroArch(); + ~ RetroArch(); + + Q_INVOKABLE void startEmulator(); + Q_INVOKABLE void findCores(); + +signals: + void romChanged(QString); + void coreChanged(QString); + void romExtensionsChanged(QString); + +public slots: + void aboutToQuit(); + void onRotationCompleted(); + void onCoreSelected(QVariant); + +private: + /** + * This QThread-run function runs the custom window rendering in a separate thread to avoid lag + * in the rest of the Cascades UI. + */ + void run(); + + QString rom; + QString getRom(); + void setRom(QString rom); + + QString core; + QString getCore(); + void setCore(QString core); + + QString romExtensions; + QString getRomExtensions(); + + void initRASettings(); + + int chid, coid; + int state; + DropDown *coreSelection; + QVariantMap coreInfo; + char **coreList; + int coreSelectedIndex; +}; + +enum { + RETROARCH_RUNNING, + RETROARCH_START_REQUESTED, + RETROARCH_EXIT +}; + + +typedef union { + _pulse pulse; + int code; +} recv_msg; + +#endif diff --git a/blackberry-qnx/bb10/src/main.cpp b/blackberry-qnx/bb10/src/main.cpp new file mode 100644 index 0000000000..1f9cd50ca1 --- /dev/null +++ b/blackberry-qnx/bb10/src/main.cpp @@ -0,0 +1,37 @@ +/* Copyright (c) 2012 Research In Motion Limited. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + + +#include "RetroArch-Cascades.h" +#include + +using ::bb::cascades::Application; + +Q_DECL_EXPORT int main(int argc, char **argv) +{ + // Instantiate the main application constructor. + Application app(argc, argv); + + // Initialize our application. + RetroArch mainApp; + + QObject::connect(&app, SIGNAL( aboutToQuit() ), &mainApp, SLOT( aboutToQuit() )); + + // We complete the transaction started in the main application constructor and start the + // client event loop here. When loop is exited the Application deletes the scene which + // deletes all its children. + return Application::exec(); +} + diff --git a/blackberry-qnx/bb10/translations/Makefile b/blackberry-qnx/bb10/translations/Makefile new file mode 100644 index 0000000000..0678149585 --- /dev/null +++ b/blackberry-qnx/bb10/translations/Makefile @@ -0,0 +1,12 @@ +QMAKE_TARGET = RetroArch-Cascades +LUPDATE = $(QNX_HOST)/usr/bin/lupdate +LRELEASE = $(QNX_HOST)/usr/bin/lrelease + +update: $(QMAKE_TARGET).pro FORCE + $(LUPDATE) $(QMAKE_TARGET).pro + +release: $(QMAKE_TARGET).pro $(QMAKE_TARGET).ts + $(LRELEASE) $(QMAKE_TARGET).pro + +FORCE: + diff --git a/blackberry-qnx/bb10/translations/RetroArch-Cascades.pro b/blackberry-qnx/bb10/translations/RetroArch-Cascades.pro new file mode 100644 index 0000000000..d79bf91ecd --- /dev/null +++ b/blackberry-qnx/bb10/translations/RetroArch-Cascades.pro @@ -0,0 +1 @@ +include (../RetroArch-Cascades.pro) diff --git a/blackberry-qnx/bb10/translations/RetroArch-Cascades.ts b/blackberry-qnx/bb10/translations/RetroArch-Cascades.ts new file mode 100644 index 0000000000..07a7469f10 --- /dev/null +++ b/blackberry-qnx/bb10/translations/RetroArch-Cascades.ts @@ -0,0 +1,4 @@ + + + + diff --git a/playbook/.cproject b/blackberry-qnx/playbook/.cproject similarity index 97% rename from playbook/.cproject rename to blackberry-qnx/playbook/.cproject index e05b378da3..551d5853f3 100644 --- a/playbook/.cproject +++ b/blackberry-qnx/playbook/.cproject @@ -26,9 +26,9 @@ - + + + + + + @@ -143,7 +149,7 @@ - - - - - -