Skip to content

Initial TODO #1

@floooh

Description

@floooh
  • emsdk install / wasisdk install should check if sdk directory already exists and ask to delete instead of throwing a git error
  • need a target property link_directories
  • running cmake with --parallel may kill build performance on ARM Macs (too many clang processes, using up all memory)
  • add a # machine generated, don't edit to the top of the generated CMakeLists.txt
  • IConfigPhaseInfo directory info funcs cannot have the config name as optional!
  • ./fibs diag configs for the builtin configs should check the host platform (wasn't also the case in fips)
  • schema validation should allow optional properties to exist as undefined
  • cmake code-gen bug: b.addIncludeDirectories({ dirs: ['.'], language: 'cxx', buildMode: 'release' }); yields include_directories(""$<$<CONFIG:RELEASE>:"$<$<COMPILE_LANGUAGE:CXX>:/Users/floh/projects/fibs-sokol-test/.>">"")
  • publish 1.0 and add ^1 import version specififer to all fibs packages
  • cmake warning on Windows/VStudio: Manually specified variables were not used by build: CMAKE_BUILD_TYPE (e.g. put the 'isMultiConfigGenerator` back)
  • add an 'init' cmd (needs to be run via deno run --allow-all jsr:@floooh/fibs init in an existing directory)
  • port:
  • replace all log.panic with throwing and put the error logging into a single top level catch
  • ./fibs reset should also run deno clean if possible (doesn't work on windows)
  • jobs: if addToTargetSources is true, also add a header search path no, since that header search path would need to be magically derived from the output filenames
  • add IDE group property to targets
  • add and test win-vscode-* configs
    • rename config-arch... etc to better match cmake generator properties?
  • vscode: check Emscripten debugging
  • default scope on interface targets should be 'interface'
  • low-prio: imported modules should be directly available via p.importModule(importName, filename) to allow projects to use/call custom exports on those modules (like the 'emrun()' helper function in fibs-platforms/emscripten.ts
  • properly deal with import options and unify with job args:
    • import modules may define a single options type
    • the importOptions() method becomes generic and gets a schema arg
    • the schema also contains the default value and help text
  • low-prio: imported targets should be grouped under an 'imports' IDE group moved to 2.x wishlist
  • low-prio: targets libs and frameworks should allow scope (public/private/interface) moved to 2.x wishlist
  • low-prio: projects should be able to define a default run target moved to 2.x wishlist
  • ~~low-prio: maybe add varargs overloads for functions that take arrays?
  • a project should be able to override the default config (via function) => moved to 2.x wishlist
  • Android support => moved to 2.x wishlist
  • iOS support => moved to 2.x wishlist
  • proper pthread handling on Linux via Thread cmake package
  • Ubuntu/Debian compatibility (can't use cmake 4 as minimal version)
  • b.targetDistDir() and b.targetBuildDir() don't work from within target builder for the current target (add target builder helpers instead!!!)
  • MSVC:
    • set debug session working directory
    • copy target dlls into exe directory
  • fix emscripten runner on windows (emrun not found)
  • macOS/iOS: generate plist file (not directly, but can be configured via cmake target properties)
  • new git handling: fix 'you are leaving commit behind' warning during 'fibs update'
  • import git dirs must be named like their import, not like the repository (because things like imgui docking vs main branch) (fixed by appending @ref to the directory name)
  • implement a 'fibs reset' command which wipes the .fibs subdirectory
  • fibs update should completely skip linked imports (especially not delete them on --clean)
  • add a separate 'deps' field to targets, which may only reference targets, and use libs only for existing static link libs
  • StringArrays should be allowed to have null and undefined items (which are then ignored)
  • there should explicit wrapper types for the various records (e.g. type TargetDescs = Record<string, TargetDesc>
  • fibs update needs to happen in import order
  • compileDefinitions should be a Record<string,string>
  • Context should include host platform and host cpu arch
  • need a way to conditionally import .ts files by configs (e.g. glfw3 in sokol-samples if no glfw-* build config is used
  • fibs list targets should only show enabled targets (and get a new --disabled option)
  • hook 'fibs runjobs' into cmake file
  • target sources list must be build-time configurable
  • targets can be disabled based on build config
  • build configs: rename variables to cmakeVariables
  • build configs should have an options: Record<string, any> field
  • fibs clean should have sub-commands: config, import, target, sdk
  • 'fibs diag targets' needs to validate targets:
    • only interface targets may have no sources
    • interface target must not define public or private items (only generic array or interface)
  • 'fibs diag imports':
    • check that import exists
    • check if import has local modifications
    • check if import has unpushed modifications
    • check if import has remote modifications
  • 'fibs update [import]'
  • 'fibs link [import] [local-dir]
  • 'fibs unlink [import]
  • imports
    • imports with embedded fibs.ts file
    • imports with locally defined ProjectDesc
  • WASI support (via WASI SDK)
  • inherited configs must merge arrays and records (not replace)
  • must be able to patch/extend existing config desc without having to inherit
  • global target defaults per platform (must be able to filter by language => for now just expect cmake generator expressions in the items, but this is ugly)
    • cmake variables
    • compile options
    • include directories
    • compile definitions
    • link options
  • target defaults per config (must be able to filter by language)
    • compile options
    • include directories
    • compile definitions
    • link options
  • need a universal path alias system which allows to patch path strings into valid absolute paths, this is for instance needed in places where a string property cannot be identified as a path (for instance cmake variables which need to point to a file). The path aliases need to be patched at the last moment, because they may depend on the current build config
    • @root/ always points to the current root project directory
    • @self/ points to the root or import directory
    • @sdks/ points to @root/.fibs/sdks/
    • @build/ points to the current config's build directory
    • @dist/ points to the current config's dist directory
  • any actual relative path should be treated like starting with @self/

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions