add portable make function