define-based compilation