add extra_source_files feature