#include <stdio.h>
#include <process.h>
#include <windows.h>

#if defined(CC)
	#define C "gcc.exe"
	#define E "MPICC"
#elif defined(CXX)
	#define C "g++.exe"
	#define E "MPICXX"
#elif defined(FC)
	#define C "gfortran.exe"
	#define E "MPIFORT"
#else
	#error
#endif

int main(int argc, char** argv) {
	int s = strlen(argv[0]);
	while(argv[0][s] != '\\' && argv[0][s] != '/') --s; --s;
	while(argv[0][s] != '\\' && argv[0][s] != '/') --s;
	argv[0][s] = '\0';
        // Force forward slash as a file name separator
        s = strlen(argv[0]);
        while(s >= 0) if(argv[0][s--] == '\\') argv[0][s+1] = '/';
#define SZ 32767	
	char* lpath = malloc(SZ*sizeof(char));
	snprintf(lpath, SZ, "-L%s/lib", argv[0]);
	char* ipath = malloc(SZ*sizeof(char));
	snprintf(ipath, SZ, "-I%s/include", argv[0]);
	char* comp = malloc(SZ*sizeof(char));
	char** args = malloc(SZ*sizeof(char*));
	int show = (argc == 2 && strcmp(argv[1], "-show") == 0);
	int i = 0;
	args[i++] = GetEnvironmentVariable(E, comp, SZ) > 0 ? comp : C;
	args[i++] = ipath;
#ifdef FC
	// Workarounds for the GFORTRAN 10 increased strictness
	args[i++] = "-fallow-invalid-boz";
	args[i++] = "-fallow-argument-mismatch";
#endif
	if(!show) for(int x = 1; x < argc; ++x) args[i++] = argv[x];
	args[i++] = lpath;
	args[i++] = "-lmsmpi";
	args[i] = NULL;
	if(show) {
		for(int x = 0; args[x]; ++x) printf("%s ", args[x]);
		printf("\n");
		fflush(stdout);
		return 0;
	} else {
		return _spawnvp(_P_WAIT, args[0], (const char* const*)args);
	}
};
