compile with macros