smartcompile