I just obliterated three days full of work switching to CUDA SDK 2.1.
This should be a lesson in not using given makefile-systems, but I don’t like writing makefiles at all and therefore was using the SDK-one.
There is a nice new rule for the keep target, which causes funny things - the line in question is:
NVCC_KEEP_CLEAN := .i *.cubin *.cu.c .cudafe *.fatbin.c *.ptx
Notice the new “.i”?
Guess what happens if you use an old convention of having inlined code in *.inl files in order to not pollute your headers?
Yes, that’s right: it destroys your code.
1st of all dumping the intermediate files into CWD has always been a bad idea, but I used to live with it, since the extensions of the CUDA intermediate files used to be weird enough to trust that I won’t put anything called : *.cubin *.cu.c .cudafe *.fatbin.c *.ptx there myself, but any file that has some extension starting with an ‘i’ gets destroyed now, so watch out, if you are using the SDK-makefiles.
BTW. Maybe this affects osx version as well?
Stupid make and stupid rm…