compilation setup