This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.
See crosstool-NG for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
List, Crosstool-NG has become a very useful and valuable tool for creating custom GCC based toolchains, and over time a lot of new features have been added. The addition of features, and the complexity of options each component can support makes developing new features (multi_cc, multiple different libcs, new targets, new hosts, etc...) very difficult. A large majority of components Crosstool-NG builds utilize the autotools build approach, and have a multitude of different options that may have many external dependencies. These dependencies are difficult at best to track in one build script, let alone across many scripts. My first proposal on re-factoring Crosstool-NG is to move these autoconf arguments (--with-options) to Kconfig options/strings that can be selected or depended on by other components and move them out of the build scripts to additionally simplify the build scripts. For instance: https://github.com/crosstool-ng/crosstool-ng/blob/master/scripts/build/cc/100-gcc.sh#L242 ========================================================== if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then extra_config+=("--enable-__cxa_atexit") else extra_config+=("--disable-__cxa_atexit") fi ========================================================== Could turn into: ========================================================== if CC_CXA_ATEXIT config CC_CXA_ATEXIT_CONFIG string "--enable-__cxa_atexit" depends on CC_CXA_ATEXIT else # ! CC_CXA_ATEXIT config CC_CXA_ATEXIT_CONFIG string "--disable-__cxa_atexit" depends on !CC_CXA_ATEXIT endif # CC_CXA_ATEXIT ========================================================== Then in the scripts/build/cc/100-gcc.sh, it would only have an override like: ========================================================== CONFIGURE_OPTS += ${CT_CC_CXA_ATEXIT_CONFIG} ========================================================== My second proposal is to refactor the build scripts themselves into a generic build script. Then the current build scripts (i.e.: scripts/build/cc/100-gcc.sh) would override variables and functionality in the generic build script, as needed. The benefits of making the build scripts more generic and moving the configuration options out of the build scripts would allow for Crosstool-NG to become more flexible for future development. Cheers, -Bryan -- For unsubscribe information see http://sourceware.org/lists.html#faq
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |