summaryrefslogtreecommitdiff
path: root/TODO
blob: f4f7ca9cf4de33a341774f37de44b7bbefa2949e (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
TBD
packages todo
[X] convert gen-kconfig to use templates
[ ] some way of patching development sources - version based? or just directory with "apply-to-any-revision" patches.
[X] mention custom glibc addons are no longer handled (even though they never fully were, ct-ng would be unable to fetch them unless they were secretly placed into the download area)
[x] mention incompatibility of sample options
[X] version-locked packages
  [X] make glibc-ports package for glibc <2.17 (it has its own repo)
[x] dependencies like cloog

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)

[ ] new packages
  [ ] config.guess
  [ ] gnulib
    [ ] use gnulib in m4, gettext, libiconv, libtool
  [ ] autoconf-archive
    [ ] use to retrieve ax_pthread.m4 (gettext?)
[ ] retire wiki-samples
  [ ] Fix displaying the versions in case devel is used (custom location/repo) - display "devel" or "custom" in those cases
[ ] clean up GDB versions - no X.Y if X.Y.1 is present
  [ ] Check other packages, leave only the most recent on each branch
[ ] 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
[ ] 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)
[ ] Remove per-arch patching (this makes .build/src non-sharable between builds!)
[ ] 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 to disregard FORBID_DOWNLOADS and to avoid clobbering .build and build.log
[ ] 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
[ ] Generate per-package version Kconfig fragments, and include them
  [ ] 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++?