compile_et macros to generate source and headers separately