Skip to content
  • Christian Hergert's avatar
    build: modernize build system · bc6215c4
    Christian Hergert authored
    Previously, the build system was an experiment in compartmentalizing
    various autoconf and automake features. That was very much an experiment
    I'm happy to put behind us. Managing it was just getting too abstract.
    
    This moves us to a more traditional autotools setup using recursive
    automake. I know, I know, "Recursive Automake Considered Harmful" and
    all. Build times don't seem to be too adversely affected at the moment.
    
    Also, we generate ide-debug.h now so that when --enable-tracing is set,
    we force rebuilding the dependent modules.
    
      --enable-tracing now implies --enable-debug
    
    I've also added two more options:
    
      --enable-optimizations will use -Bsymbolic for libide to help reduce
       the number of inter-PLT jumps.
    
      --enable-lto can be used to enable optimizations across .o's when
        linking.
    
    I've also moved various things around in a more traditional layout.
    
      libsearch.la can be found in contrib/search. This contains the Trie
      and Fuzzy search indexes.
    
      libeditorconfig.la can be found in contrib/libeditorconfig. This
      contains a partially modified upstream libeditorconfig. Mostly just
      build and warning fixes have been applied.
    
    We are now using Behdad's git.mk for tracking gitignores. Please use that
    whenever possible instead of manually creating .gitignore files.
    
    I've reversed how some debug options are checked. Instead of checking
    for tracing like:
    
      #ifndef IDE_DISABLE_TRACE
    
    I've inverted the check to
    
      #ifdef IDE_ENABLE_TRACE
    
    See libide/ide-debug.h.in as to why this is the case.
    
    I've also dropped various dead code. Uncrustify and highlight menu code
    to be specific. We can bring it back if designs dictate it. As for
    uncrustify, I think this is better placed in the scripting layer via
    GJS and GSubprocess.
    
    Thanks for reading!
    bc6215c4