This also changes the header to use compiler detection instead of a configure test. This makes the header more portable because it doesn't require the configure infrastructure.