Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion commandLine/src/defines.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#define OFPROJECTGENERATOR_MAJOR_VERSION "0"
#define OFPROJECTGENERATOR_MINOR_VERSION "106"
#define OFPROJECTGENERATOR_MINOR_VERSION "107"
#define OFPROJECTGENERATOR_PATCH_VERSION "0"

#define PG_VERSION (OFPROJECTGENERATOR_MAJOR_VERSION "." OFPROJECTGENERATOR_MINOR_VERSION "." OFPROJECTGENERATOR_PATCH_VERSION)
Expand Down
5 changes: 1 addition & 4 deletions commandLine/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -271,10 +271,7 @@ void updateProject(const fs::path & path, const string & target, bool bConsiderP
project->addFramework(f, "Frameworks", true);
}

// matches addAddonDefines()'s existing convention (single call, default RELEASE_LIB) -
// xcodeProject::addDefine ignores libType and applies to all build configs anyway,
// but visualStudioProject::addDefine doesn't, so a define here is Release-only for VS,
// consistent with how addon-provided defines already behave there
// all build configs (visualStudioProject overrides addProjectDefine for Debug + Release)
for (auto & d : defines) {
project->addProjectDefine(d);
}
Expand Down
11 changes: 11 additions & 0 deletions commandLine/src/projects/baseProject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ bool baseProject::save(){

vector <string> lines = fileToStrings(projectDir / "config.make");
std::ofstream saveConfig(projectDir / "config.make");
bool bWroteDefines = false;

for (auto & str : lines) {
//add the of root path
Expand All @@ -282,10 +283,20 @@ bool baseProject::save(){
ofLog(OF_LOG_VERBOSE) << " adding PROJECT_EXTERNAL_SOURCE_PATHS to config" << extSrcPaths[d].generic_string() << std::endl;
saveConfig << "PROJECT_EXTERNAL_SOURCE_PATHS" << (d == 0 ? " = " : " += ") << extSrcPaths[d].generic_string() << std::endl;
}
}
// make builds (emscripten, linux, msys2) only see defines through config.make
else if( projectDefines.size() && (str.rfind("# PROJECT_DEFINES =", 0) == 0 || str.rfind("PROJECT_DEFINES =", 0) == 0) ){
if (!bWroteDefines) {
saveConfig << "PROJECT_DEFINES = " << ofJoinString(projectDefines, " ") << std::endl;
bWroteDefines = true;
}
} else {
saveConfig << str << std::endl;
}
}
if (projectDefines.size() && !bWroteDefines && lines.size()) {
saveConfig << "PROJECT_DEFINES = " << ofJoinString(projectDefines, " ") << std::endl;
}
#ifdef OFADDON_OUTPUT_JSON_DEBUG
saveAddonsToJson();
#endif
Expand Down
6 changes: 5 additions & 1 deletion commandLine/src/projects/baseProject.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,10 @@ class baseProject {
// public entry point for project-level preprocessor defines (e.g. -D/--defines on the
// CLI, or a GUI-driven renderer choice) - addDefine() itself stays protected since it's
// also invoked internally by addAddonDefines() for addon-provided defines
void addProjectDefine(const std::string & define, LibType libType = RELEASE_LIB) { addDefine(define, libType); }
virtual void addProjectDefine(const std::string & define, LibType libType = RELEASE_LIB) {
addDefine(define, libType);
projectDefines.emplace_back(define);
}


#ifdef OFADDON_OUTPUT_JSON_DEBUG
Expand Down Expand Up @@ -172,6 +175,7 @@ class baseProject {

std::vector<ofAddon> addons;
std::vector<fs::path> extSrcPaths;
std::vector<std::string> projectDefines; // also written to config.make PROJECT_DEFINES for make builds

//cached addons - if an addon is requested more than once, avoid loading from disk as it's quite slow
std::map<std::string,std::map<std::string, ofAddon>> addonsCache; //indexed by [platform][supplied path]
Expand Down
6 changes: 6 additions & 0 deletions commandLine/src/projects/visualStudioProject.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ class visualStudioProject : public baseProject {
void addCFLAG(const std::string& cflag, LibType libType = RELEASE_LIB) override ; // C
void addCPPFLAG(const std::string& cppflag, LibType libType = RELEASE_LIB) override ; // C++
void addDefine(const std::string& define, LibType libType = RELEASE_LIB) override ;
// project defines go to Debug and Release, same as addon defines
void addProjectDefine(const std::string & define, LibType libType = RELEASE_LIB) override {
addDefine(define, RELEASE_LIB);
addDefine(define, DEBUG_LIB);
projectDefines.emplace_back(define);
}

void addLDFLAG(const std::string& ldflag, LibType libType = RELEASE_LIB) override {}
void addAfterRule(const std::string& script) override {}
Expand Down
31 changes: 30 additions & 1 deletion frontend/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,8 @@ ipcRenderer.on('setTemplates', (event, arg) => {
allowAdditions: false,
fullTextSearch: 'exact',
match: "text",
maxSelections: 1
maxSelections: 1,
onChange: () => updateRendererFieldVisibility()
});

// // set the template to default
Expand Down Expand Up @@ -990,6 +991,7 @@ function setup() {
});

$('#rendererDropdown').dropdown();
$('#glDropdown, #webglDropdown, #glesDropdown').dropdown();
$('#rendererDropdown').dropdown('set exactly', 'default');

// reflesh template dropdown list depends on selected platforms
Expand Down Expand Up @@ -1198,6 +1200,19 @@ function generate() {
if (rendererDefines[rendererChoice]) {
definesArr.push(rendererDefines[rendererChoice]);
}
const gl = $('#glDropdown').dropdown('get value');
if ($('#glField').css('display') !== 'none' && gl !== 'default') {
const [major, minor] = gl.split('.');
definesArr.push('OF_GL_VERSION_MAJOR=' + major, 'OF_GL_VERSION_MINOR=' + minor);
}
const webgl = $('#webglDropdown').dropdown('get value');
if ($('#webglField').css('display') !== 'none' && webgl !== 'default') {
definesArr.push('OF_WEBGL_VERSION=' + webgl);
}
const gles = $('#glesDropdown').dropdown('get value');
if ($('#glesField').css('display') !== 'none' && gles !== 'default') {
definesArr.push('OF_GLES_VERSION=' + gles);
}

const gen = {
projectName: $("#projectName").val(),
Expand Down Expand Up @@ -1376,6 +1391,20 @@ function updateRendererFieldVisibility() {
} else {
$('#rendererField').hide();
}
const selectedTemplates = ($("#templatesDropdown input").val() || '').trim().split(',');
$('#webglField').toggle(!!defaultSettings.advancedMode && selectedTemplates.includes('emscripten'));
$('#glesField').toggle(!!defaultSettings.advancedMode && selectedPlatforms.some((p) => ['ios', 'macos'].includes(p)));

const glPlatforms = ['osx', 'vs', 'msys2', 'linux', 'linux64', 'linuxarmv6l', 'linuxaarch64', 'vscode'];
$('#glField').toggle(!!defaultSettings.advancedMode && selectedPlatforms.some((p) => glPlatforms.includes(p)));
// Apple's OpenGL stops at 4.1
const maxGL = selectedPlatforms.includes('osx') ? 4.1 : 4.6;
$('#glDropdown .item').each(function () {
const v = $(this).attr('data-value');
$(this).toggle(v === 'default' || parseFloat(v) <= maxGL);
});
const gl = $('#glDropdown').dropdown('get value');
if (gl !== 'default' && parseFloat(gl) > maxGL) $('#glDropdown').dropdown('set selected', 'default');
}

//----------------------------------------
Expand Down
48 changes: 48 additions & 0 deletions frontend/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,54 @@
</div>
</div>
</div>
<div class="field" id="glField" style="display: none">
<label data-i18n="field.glVersion">OpenGL version (desktop):</label>
<div class="ui selection dropdown" id="glDropdown">
<input type="hidden" value="default">
<i class="dropdown icon"></i>
<div class="text" data-i18n="option.glDefault">Default (OpenGL 2.1)</div>
<div class="menu">
<div class="item" data-value="default" data-i18n="option.glDefault">Default (OpenGL 2.1)</div>
<div class="item" data-value="3.1">OpenGL 3.1</div>
<div class="item" data-value="3.2">OpenGL 3.2</div>
<div class="item" data-value="3.3">OpenGL 3.3</div>
<div class="item" data-value="4.0">OpenGL 4.0</div>
<div class="item" data-value="4.1">OpenGL 4.1</div>
<div class="item" data-value="4.2">OpenGL 4.2</div>
<div class="item" data-value="4.3">OpenGL 4.3</div>
<div class="item" data-value="4.4">OpenGL 4.4</div>
<div class="item" data-value="4.5">OpenGL 4.5</div>
<div class="item" data-value="4.6">OpenGL 4.6</div>
</div>
</div>
</div>
<div class="field" id="webglField" style="display: none">
<label data-i18n="field.webglVersion">WebGL version:</label>
<div class="ui selection dropdown" id="webglDropdown">
<input type="hidden" value="default">
<i class="dropdown icon"></i>
<div class="text" data-i18n="option.webglDefault">Default (WebGL 2)</div>
<div class="menu">
<div class="item" data-value="default" data-i18n="option.webglDefault">Default (WebGL 2)</div>
<div class="item" data-value="1">WebGL 1 (OpenGL ES 2.0)</div>
<div class="item" data-value="2">WebGL 2 (OpenGL ES 3.0)</div>
</div>
</div>
</div>
<div class="field" id="glesField" style="display: none">
<label data-i18n="field.glesVersion">OpenGL ES version (iOS / tvOS):</label>
<div class="ui selection dropdown" id="glesDropdown">
<input type="hidden" value="default">
<i class="dropdown icon"></i>
<div class="text" data-i18n="option.glesDefault">Default (OpenGL ES 2.0)</div>
<div class="menu">
<div class="item" data-value="default" data-i18n="option.glesDefault">Default (OpenGL ES 2.0)</div>
<div class="item" data-value="1">OpenGL ES 1.1</div>
<div class="item" data-value="2">OpenGL ES 2.0</div>
<div class="item" data-value="3">OpenGL ES 3.0</div>
</div>
</div>
</div>
<div class="field advanced" id="customDefinesField" style="display: none">
<label>Custom defines: &nbsp;
<a class="ui icon tooltip" href="#" data-content="Comma-separated preprocessor defines, e.g. MY_FLAG,OTHER_FLAG=1" data-position="right center">
Expand Down
8 changes: 7 additions & 1 deletion frontend/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,11 @@
"downloads.sourceNote.apothecary": "Vorkompilierte Pakete von openframeworks/apothecary - das Standard-Layout von openFrameworks.",
"downloads.sourceNote.oflibs": "ofWorks/ofLibs-Zips pro Bibliothek, installiert nach libs/<lib>. Auf ofWorks ausgerichtet, manche Bibliotheken brauchen evtl. Pfadanpassungen.",
"downloads.sourceNote.archive": "Historische openFrameworks-Releases von libs.danoli3.com - führt das libs/ dieses Releases in diesen Checkout zusammen.",
"downloads.archiveConfirm": "Archiv {{tag}} ersetzt ganze libs/-Ordner (einschließlich libs/openFrameworks) durch die aus diesem Release. Fortfahren?"
"downloads.archiveConfirm": "Archiv {{tag}} ersetzt ganze libs/-Ordner (einschließlich libs/openFrameworks) durch die aus diesem Release. Fortfahren?",
"field.webglVersion": "WebGL-Version:",
"option.webglDefault": "Standard (WebGL 2)",
"field.glesVersion": "OpenGL-ES-Version (iOS / tvOS):",
"option.glesDefault": "Standard (OpenGL ES 2.0)",
"field.glVersion": "OpenGL-Version (Desktop):",
"option.glDefault": "Standard (OpenGL 2.1)"
}
8 changes: 7 additions & 1 deletion frontend/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,11 @@
"downloads.sourceNote.apothecary": "openframeworks/apothecary prebuilt packages - the standard openFrameworks layout.",
"downloads.sourceNote.oflibs": "ofWorks/ofLibs per-library zips, installed into libs/<lib>. ofWorks-oriented, some libs may need path tweaks.",
"downloads.sourceNote.archive": "Historical openFrameworks releases from libs.danoli3.com - merges that release's libs/ into this checkout.",
"downloads.archiveConfirm": "Archive {{tag}} replaces whole libs/ folders (including libs/openFrameworks) with the ones from that release. Continue?"
"downloads.archiveConfirm": "Archive {{tag}} replaces whole libs/ folders (including libs/openFrameworks) with the ones from that release. Continue?",
"field.webglVersion": "WebGL version:",
"option.webglDefault": "Default (WebGL 2)",
"field.glesVersion": "OpenGL ES version (iOS / tvOS):",
"option.glesDefault": "Default (OpenGL ES 2.0)",
"field.glVersion": "OpenGL version (desktop):",
"option.glDefault": "Default (OpenGL 2.1)"
}
8 changes: 7 additions & 1 deletion frontend/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,11 @@
"downloads.sourceNote.apothecary": "Paquetes precompilados de openframeworks/apothecary - la estructura estándar de openFrameworks.",
"downloads.sourceNote.oflibs": "Zips por biblioteca de ofWorks/ofLibs, instalados en libs/<lib>. Orientado a ofWorks, algunas bibliotecas pueden necesitar ajustes de rutas.",
"downloads.sourceNote.archive": "Versiones históricas de openFrameworks desde libs.danoli3.com - combina el libs/ de esa versión con esta copia.",
"downloads.archiveConfirm": "El archivo {{tag}} reemplaza carpetas completas de libs/ (incluida libs/openFrameworks) por las de esa versión. ¿Continuar?"
"downloads.archiveConfirm": "El archivo {{tag}} reemplaza carpetas completas de libs/ (incluida libs/openFrameworks) por las de esa versión. ¿Continuar?",
"field.webglVersion": "Versión de WebGL:",
"option.webglDefault": "Predeterminado (WebGL 2)",
"field.glesVersion": "Versión de OpenGL ES (iOS / tvOS):",
"option.glesDefault": "Predeterminado (OpenGL ES 2.0)",
"field.glVersion": "Versión de OpenGL (escritorio):",
"option.glDefault": "Predeterminado (OpenGL 2.1)"
}
8 changes: 7 additions & 1 deletion frontend/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,11 @@
"downloads.sourceNote.apothecary": "Paquets précompilés openframeworks/apothecary - la structure standard d'openFrameworks.",
"downloads.sourceNote.oflibs": "Zips par bibliothèque d'ofWorks/ofLibs, installés dans libs/<lib>. Orienté ofWorks, certaines bibliothèques peuvent nécessiter des ajustements de chemins.",
"downloads.sourceNote.archive": "Versions historiques d'openFrameworks depuis libs.danoli3.com - fusionne le libs/ de cette version dans ce dépôt.",
"downloads.archiveConfirm": "L'archive {{tag}} remplace des dossiers libs/ entiers (y compris libs/openFrameworks) par ceux de cette version. Continuer ?"
"downloads.archiveConfirm": "L'archive {{tag}} remplace des dossiers libs/ entiers (y compris libs/openFrameworks) par ceux de cette version. Continuer ?",
"field.webglVersion": "Version WebGL :",
"option.webglDefault": "Par défaut (WebGL 2)",
"field.glesVersion": "Version OpenGL ES (iOS / tvOS) :",
"option.glesDefault": "Par défaut (OpenGL ES 2.0)",
"field.glVersion": "Version OpenGL (bureau) :",
"option.glDefault": "Par défaut (OpenGL 2.1)"
}
8 changes: 7 additions & 1 deletion frontend/locales/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,11 @@
"downloads.sourceNote.apothecary": "openframeworks/apothecary のビルド済みパッケージ - 標準の openFrameworks 構成です。",
"downloads.sourceNote.oflibs": "ofWorks/ofLibs のライブラリ単位の zip を libs/<lib> にインストールします。ofWorks 向けのため、一部のライブラリはパス調整が必要な場合があります。",
"downloads.sourceNote.archive": "libs.danoli3.com の過去の openFrameworks リリース - そのリリースの libs/ をこのチェックアウトにマージします。",
"downloads.archiveConfirm": "アーカイブ {{tag}} は libs/ 内のフォルダ (libs/openFrameworks を含む) をそのリリースのものに丸ごと置き換えます。続行しますか?"
"downloads.archiveConfirm": "アーカイブ {{tag}} は libs/ 内のフォルダ (libs/openFrameworks を含む) をそのリリースのものに丸ごと置き換えます。続行しますか?",
"field.webglVersion": "WebGL バージョン:",
"option.webglDefault": "デフォルト (WebGL 2)",
"field.glesVersion": "OpenGL ES バージョン (iOS / tvOS):",
"option.glesDefault": "デフォルト (OpenGL ES 2.0)",
"field.glVersion": "OpenGL バージョン (デスクトップ):",
"option.glDefault": "デフォルト (OpenGL 2.1)"
}
8 changes: 7 additions & 1 deletion frontend/locales/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,11 @@
"downloads.sourceNote.apothecary": "openframeworks/apothecary 미리 빌드된 패키지 - 표준 openFrameworks 구조입니다.",
"downloads.sourceNote.oflibs": "ofWorks/ofLibs 라이브러리별 zip을 libs/<lib>에 설치합니다. ofWorks 중심이라 일부 라이브러리는 경로 조정이 필요할 수 있습니다.",
"downloads.sourceNote.archive": "libs.danoli3.com의 이전 openFrameworks 릴리스 - 해당 릴리스의 libs/를 이 체크아웃에 병합합니다.",
"downloads.archiveConfirm": "아카이브 {{tag}}은(는) libs/ 폴더 전체(libs/openFrameworks 포함)를 해당 릴리스의 것으로 교체합니다. 계속할까요?"
"downloads.archiveConfirm": "아카이브 {{tag}}은(는) libs/ 폴더 전체(libs/openFrameworks 포함)를 해당 릴리스의 것으로 교체합니다. 계속할까요?",
"field.webglVersion": "WebGL 버전:",
"option.webglDefault": "기본값 (WebGL 2)",
"field.glesVersion": "OpenGL ES 버전 (iOS / tvOS):",
"option.glesDefault": "기본값 (OpenGL ES 2.0)",
"field.glVersion": "OpenGL 버전 (데스크톱):",
"option.glDefault": "기본값 (OpenGL 2.1)"
}
8 changes: 7 additions & 1 deletion frontend/locales/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,11 @@
"downloads.sourceNote.apothecary": "Pacotes pré-compilados do openframeworks/apothecary - a estrutura padrão do openFrameworks.",
"downloads.sourceNote.oflibs": "Zips por biblioteca do ofWorks/ofLibs, instalados em libs/<lib>. Voltado ao ofWorks, algumas bibliotecas podem precisar de ajustes de caminho.",
"downloads.sourceNote.archive": "Versões históricas do openFrameworks em libs.danoli3.com - mescla o libs/ dessa versão neste checkout.",
"downloads.archiveConfirm": "O arquivo {{tag}} substitui pastas inteiras de libs/ (incluindo libs/openFrameworks) pelas dessa versão. Continuar?"
"downloads.archiveConfirm": "O arquivo {{tag}} substitui pastas inteiras de libs/ (incluindo libs/openFrameworks) pelas dessa versão. Continuar?",
"field.webglVersion": "Versão do WebGL:",
"option.webglDefault": "Padrão (WebGL 2)",
"field.glesVersion": "Versão do OpenGL ES (iOS / tvOS):",
"option.glesDefault": "Padrão (OpenGL ES 2.0)",
"field.glVersion": "Versão do OpenGL (desktop):",
"option.glDefault": "Padrão (OpenGL 2.1)"
}
8 changes: 7 additions & 1 deletion frontend/locales/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,11 @@
"downloads.sourceNote.apothecary": "Готовые пакеты openframeworks/apothecary - стандартная структура openFrameworks.",
"downloads.sourceNote.oflibs": "Zip-архивы ofWorks/ofLibs по одной библиотеке, устанавливаются в libs/<lib>. Ориентировано на ofWorks, некоторым библиотекам могут понадобиться правки путей.",
"downloads.sourceNote.archive": "Старые релизы openFrameworks с libs.danoli3.com - объединяет libs/ этого релиза с текущей копией.",
"downloads.archiveConfirm": "Архив {{tag}} полностью заменит папки в libs/ (включая libs/openFrameworks) папками из этого релиза. Продолжить?"
"downloads.archiveConfirm": "Архив {{tag}} полностью заменит папки в libs/ (включая libs/openFrameworks) папками из этого релиза. Продолжить?",
"field.webglVersion": "Версия WebGL:",
"option.webglDefault": "По умолчанию (WebGL 2)",
"field.glesVersion": "Версия OpenGL ES (iOS / tvOS):",
"option.glesDefault": "По умолчанию (OpenGL ES 2.0)",
"field.glVersion": "Версия OpenGL (десктоп):",
"option.glDefault": "По умолчанию (OpenGL 2.1)"
}
8 changes: 7 additions & 1 deletion frontend/locales/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,11 @@
"downloads.sourceNote.apothecary": "openframeworks/apothecary 预编译包 - 标准的 openFrameworks 目录结构。",
"downloads.sourceNote.oflibs": "ofWorks/ofLibs 单库 zip,安装到 libs/<lib>。面向 ofWorks,部分库可能需要调整路径。",
"downloads.sourceNote.archive": "来自 libs.danoli3.com 的历史 openFrameworks 版本 - 将该版本的 libs/ 合并到当前目录。",
"downloads.archiveConfirm": "归档 {{tag}} 会用该版本的内容整体替换 libs/ 下的文件夹(包括 libs/openFrameworks)。是否继续?"
"downloads.archiveConfirm": "归档 {{tag}} 会用该版本的内容整体替换 libs/ 下的文件夹(包括 libs/openFrameworks)。是否继续?",
"field.webglVersion": "WebGL 版本:",
"option.webglDefault": "默认(WebGL 2)",
"field.glesVersion": "OpenGL ES 版本(iOS / tvOS):",
"option.glesDefault": "默认(OpenGL ES 2.0)",
"field.glVersion": "OpenGL 版本(桌面):",
"option.glDefault": "默认(OpenGL 2.1)"
}
Loading
Loading