JuliaLang/julia — pull request #3078 by VHaravy (2013-05-11 06:03:29+00:00)
Title: WIP: Building Julia DLL on Windows using NMake & Intel C++ Composer

This is rather big pull request that adds ability to build Julia DLL on Windows using NMake & Intel C++ Composer. LibUV, FemtoLisp and LibSupport are built automatically. The only thing that is currently not supported - is automatic retrieving and building LLVM. For now, only already prebuilt and installed LLVM can be used. Most of the changes fall into one of following categories:

1. Using `platform.h` (introduced by my previous pull request) header for OS, Compiler & CPU identification.
2. Replacing or removing unsupported compiler features, like;
* `__attribute__((noreturn))` --> `__declspec(noreturn)`
* `__attribute__((noinline))` --> `__declspec(noinline)`
3. Missing `DLLEXPORT` attributes in `julia.h` but present in `*.c` files.
4. Variadic macro related issues. Intel C++ Composer does support variadic macros as a part of C99 standard, but it have some strange problems with `VA_NARG` macro used to count number of passed arguments. I couldn't figure out the source of the problem and as a result I had to rewrite `JL_GC_PUSH` macro into several macros.

I realize that this is rather big and a little bit scary set of changes, so I will review it and check that I did not break anything. Any comments and suggestions are much appreciated.