crossplatform makefile