flexible build rule