summaryrefslogtreecommitdiff
path: root/TODO
blob: 52d0637e786a6c42104e5ec23293fd39ed7f7f9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
A (slightly) ordered set of tasks for crosstool-NG. Written in a cryptic language; contact me if you want to help with any of these :)

-- Alexey Neyman (@stilor)

[ ] Migrate .config and build.log into per-target directory, make top-level file into symlinks - this will allow to compare/debug multiple configs side-by-side without overwriting each other
[ ] Need a variant of CT_DoExecLog that only captures stderr - for use where we need stdout for further processing but want to capture errors
  [ ] Use in test-package.sh
[ ] mirror: remove crosstool-ng.org mirroring of archives? Use the option only for local mirrors? Archives currently hosted are outdated.
[ ] old mingw-w64 fails to build (with new gcc?) - the headers are installed into usr/x86_64-w64-mingw32/x86_64-w64-mingw32/include instead of usr/x86_64-w64-mingw32/include
  [ ] fix or retire?
[ ] test-packages.sh
  [ ] FTP URLs always succeed in verification (wget bug) - how to work around?
[ ] templates (bootstrap)
  [ ] relevant pattern for Linaro releases - tie to the major version
[ ] new packages
  [ ] config.guess
  [ ] gnulib
    [ ] use gnulib in m4, gettext, libiconv, libtool
  [ ] autoconf-archive
    [ ] use to retrieve ax_pthread.m4 (gettext?)
[ ] arm_neon.h - offer as a companion "library" for the target
[ ] gdbinit (installed if CT_GDB_INSTALL_GDBINIT is set) is not relocatable, contains absolute paths
[ ] Support alldefconfig/allnoconfig/other standard kconfig targets
[ ] Xtensa
  [ ] Merge from xtensa maintainer whatever applicable?
    [ ] Newlib does not seem to be working
  [ ] Avoid printing "Using <overlay>" if the sources are already prepared
[ ] FreeBSD
  [ ] Use 'cc' rather than 'gcc' on the host
    [ ] Detect in configure what the default value is
    [ ] Allow passing via CC=... to ct-ng
    [ ] Same for ar/ld/ranlib/whatever we're using
    [ ] Same for other utilities (patch, python, ...)
  [ ] Allow using BSD patch
  [ ] Set up 3 testing VMs: plain (using clang), using default 'gcc', using 'gcc6'
[ ] GDB7.1 build fails on macOS
  [ ] need 'cpp' in the list of symlinked tools
  [ ] still fails at link due to multiple definitions of BC/UP/PC
[ ] mingw.sh: create a hook for "pre-checks" for all libcs
  [ ] move CT_DoMultilibList to this new hook?
[ ] go over all config options and evaluate their applicability to cross/canadian/cross-native (i.e. WANTS_STATIC_LINK does not have to test build's support for static link)
[ ] Update "Internals" chapter in the docs to match current state
[ ] Integrate openrisc support
[ ] Re-enable shared libraries - can it be done without wrapper scripts, e.g. via rpath?
[ ] 'ct-ng source'
  [ ] disregard FORBID_DOWNLOADS and to avoid clobbering .build and build.log
  [ ] should not check/prepare environment (#776)
  [ ] move download/patching/prepare into separate steps
    [ ] beware of TBD - want to use autotools for all packages after they're built, so need to defer preparation of the sources from a repo
[ ] 'ct-ng' source to disregard FORBID_DOWNLOADS and to avoid clobbering .build and build.log
  [ ] Make ONLY_{DOWNLOAD,EXTRACT} options into steps
  [ ] Create "prepare" state to make the environment checks, after "download"
[ ] Restore blackfin/fdpic support?
[ ] Install bash completion script - are there any default locations for it?
[ ] Do we need "HACK: we need to override SHLIB_LC from gcc/config/t-slibgcc-elf-ver" block in 100-gcc.sh? We do create a dummy libc.so
[ ] Follow up on -static -Wl,--dynamic-list=... weirdness
[ ] xldd.in
  [ ] Deduce root from the location of the script itself by default + option for multiroot selection (e.g. for SH)
  [ ] Handle CT_LD_LIBRARY_PATH in lieu of LD_LIBRARY_PATH
    [ ] Handle AT_SECURE
  [ ] Handle DT_RPATH/DT_RUNPATH separately (they have different priority vs LD_LIBRARY_PATH)
  [ ] Handle default ld_library_path after ld.so.conf cache
[ ] Add optional removal of .build/src as part of build-all
[ ] Add removal of non-precious toolchains (i.e. those that are not needed for canadian)
  [ ] Or remove all *when* they are no longer needed?
[ ] GMP select the right CC when not cross-compiling (https://github.com/crosstool-ng/crosstool-ng/pull/627)
[ ] Default to arch=i686 on x86
[ ] Run ct-ng oldconfig at the start, or detect if a different version of ct-ng has been used?
[ ] Move fetching config.guess/config.sub to scripts/functions to use common wget/curl wrappers
  [ ] Allow auto-update as part of the build
  [ ] Do they have versions? Is it possible to request a specific version?
[ ] Separate 'make check' for companion libs and companion tools?
[ ] gettext - test internationalization
  [ ] seems the DB is hardcoded into .build/<TARGET>/... location - is it possible to make it relocatable?
  [ ] add passthrough to configure, for host/target
[ ] Read/spellcheck configs & scripts
[ ] 'ct-ng olddefconfig'
[ ] Install a "trap" C++ compiler as ${CT_TARGET}-g++ during pass-1/pass-2 to trap attempts to compile target code with g++ (currently glibc detects host g++ and warns that it uses g++ w/o target triplet)
  [ ] Somehow it needs to be functional during the configure step - export env var while running in CT_DoExecLog with CFG level, and forward it to host compiler?
[ ] elf2flt not compatible with multiple linkers enabled in binutils (ld.bfd + ld.gold) - fix upstream?
[ ] Companion libs 
  [ ] Group options into submenus
  [ ] Allow building [companion] target libs (and tools, like gdbserver or native gdb or strace) for all multilibs
  [ ] Install companion libs into a multi-os-directory for the default multilib
    [ ] Perhaps remove the distinction between multi_os_dir/multi_os_dir_gcc and use gcc-reported dir always, and rely on "demultilib" to combine them if possible
[ ] Check for python-devel to enable cross-gdb python bindings
[ ] Common location for sources provided by ctng - duma.in, gdbinit.in, uclibc{,-ng}-config.in ...
[ ] CTNG_LD_IS=bfd has no effect on subsequent build steps, as each step runs in its own environment
[ ] Enable other languages in some sample(s):
  [ ] Ada (?) - requires gnatbind/gnatmake on the host
    [X] Seems to build
    [ ] Try to run
  [ ] Obj-C/C++
    [X] Seems to build
    [ ] Try to run - seems to crash, need to investigate
  [ ] Go
    [ ] Fix the build
    [ ] Try to run
[ ] #516 Building with GO support fails
[ ] #521 gccgo - i586-unknown-linux-gnu - fails on missing version.go 
[ ] Smoke-test test suite - whatever is supported by a particular toolchain
  [ ] Compile baremetal, shared, static, static-libgcc, static-libstdc, C++, Fortran, Ada, Obj-C, Obj-C++, multilibs
[ ] Disallow libc selections that cannot handle the arch (e.g. aarch64-*-uclibc, aarch64-*-musl, ...)
[ ] Support removal of .build/<TARGET>/build after each step (to save space while compiling in a VM; and to test restartability - since this directory is lost after restart)
[ ] Configure enhancements
  [ ] What is --host= in ct-ng's configure used for? should it set the default canadian cross?
  [ ] CFLAGS/LDFLAGS from configure should probably be added into default build flags
  [ ] Move tool checks from configure to runtime (i.e. if xz was installed after crosstool-ng, it should be usable)
    [ ] Check for companion libs and allow using host's libraries for native/cross (need to check if the host has them) - but allow them to be selected for build
[ ] Merge aggregator scripts like cc.sh, debug.sh etc
[ ] #534 Merge gcc backends in 100-gcc.sh 
  [ ] Currently some options (e.g. plugins) are not supported in core backend, hence aren't available on baremetal configurations
[ ] Support clang
[ ] Add a script to poll for new releases
[ ] Install a single lib/ directory with all the stuff needed - scripts, makefile fragments, etc
  [ ] Separate maintainer's scripts from the scripts used by crosstool-ng itself
  [ ] Commit testing.py to the new maintainer's dir
  [ ] Add an ability to do a single run of testing.py? or just use build-all, when the branch for separate canadian install is done
[ ] Extensibility to allow custom kernel headers and/or libc
[ ] Support elfkickers
[ ] Make cross-native toolchain non-experimental
  [ ] Rework dependency order to suit xnative toolchain too
[ ] Make native/cross-native toolchain non-experimental
  [ ] Pick up libc from host for native
  [ ] Optimize steps to not require simple-cross for cross-native
[ ] Make supplemental commands like show-config leave .config and .build alone
[ ] Test populate script
[ ] 3rd party extensions to GCC
  [ ] GHDL seems to be active and supports GCC6
  [ ] COBOL? Cannot find which GCC version they need [http://cobolforgcc.sourceforge.net/]
    [ ] At the very least they have an awesome guide to GCC internals: http://cobolforgcc.sourceforge.net/cobol_14.html; might just as well reference it in our docs
  [ ] Modula-2 supports GCC 4.7 as the latest
    [ ] Resurrect GCC4.7?
[ ] readelf: DWARF parser does not handle DW_CFA_remember_state/DW_CFA_restore_state
[ ] Support uClibc++?