diff --git a/genProcessScript.py b/genProcessScript.py
index 7483a3e7ff4bbbf3f65625b4b06081d280ce63b3..473a343d04a5c74fc6425c35cc23272986db3b0e 100644
--- a/genProcessScript.py
+++ b/genProcessScript.py
@@ -8,13 +8,14 @@ import sys
 
 def main(argv):
     try:
-        opts, args = getopt.getopt(argv, '', ['cloudmask', 's2ref=', 's2bandlist='])
+        opts, args = getopt.getopt(argv, '', ['cloudmask', 's2ref=', 's2bandlist=', 'makefile'])
     except getopt.GetoptError as err:
         print str(err)
 
     opt_str = ''
     opt_str_s2 = ''
     base_fld = args[0]
+    makefile = False
 
     for opt, val in opts:
         if opt == '--cloudmask':
@@ -23,6 +24,8 @@ def main(argv):
             opt_str_s2 += ' --s2ref ' + val
         elif opt == '--s2bandlist':
             opt_str_s2 += ' --s2bandlist ' + val
+        elif opt == '--makefile':
+            makefile = True
 
     valid_dirs_L8 = []
     valid_dirs_S2 = []
@@ -46,25 +49,46 @@ def main(argv):
     if (len(valid_dirs_L8) + len(valid_dirs_S2) + len(valid_dirs_S2_THEIA) + len(valid_dirs_Venus)) == 0:
         sys.exit('No products found within ' + base_fld)
 
-    if platform.system() == 'Windows':
-        f = open('ProcessScript.bat', 'w')
-        f.write("@echo off\n")
-    else:
-        f = open('ProcessScript.sh', 'w')
+    if not makefile:
+        if platform.system() == 'Windows':
+            f = open('ProcessScript.bat', 'w')
+            f.write("@echo off\n")
+        else:
+            f = open('ProcessScript.sh', 'w')
+
+        for d in valid_dirs_L8:
+            f.write('python preprocess.py ' + opt_str + ' ' + d + '\n')
+        for d in valid_dirs_S2:
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
+        for d in valid_dirs_S2_THEIA:
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
+        for d in valid_dirs_Venus:
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
+        f.close()
 
-    for d in valid_dirs_L8:
-        f.write('python preprocess.py ' + opt_str + ' ' + d + '\n')
-    for d in valid_dirs_S2:
-        f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
-    for d in valid_dirs_S2_THEIA:
-        f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
-    for d in valid_dirs_Venus:
-        f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
-    f.close()
+        if platform.system() == 'Linux':
+            st = os.stat('ProcessScript.sh')
+            os.chmod('ProcessScript.sh', st.st_mode | stat.S_IEXEC)
 
-    if platform.system() == 'Linux':
-        st = os.stat('ProcessScript.sh')
-        os.chmod('ProcessScript.sh', st.st_mode | stat.S_IEXEC)
+    else:
+        f = open('ProcessMakefile', 'w')
+        tot = len(valid_dirs_L8) + len(valid_dirs_S2) + len(valid_dirs_S2_THEIA) + len(valid_dirs_Venus)
+        joblist = ['job%d' % j for j in range(1,tot+1)]
+        joball = ' '.join()
+        f.write('all : ' + joball + '\n\n')
+        for d in valid_dirs_L8:
+            f.write(joblist.pop() + ' :\n')
+            f.write('      python preprocess.py ' + opt_str + ' ' + d + '\n\n')
+        for d in valid_dirs_S2:
+            f.write(joblist.pop() + ' :\n')
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n\n')
+        for d in valid_dirs_S2_THEIA:
+            f.write(joblist.pop() + ' :\n')
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n\n')
+        for d in valid_dirs_Venus:
+            f.write(joblist.pop() + ' :\n')
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n\n')
+        f.close()
 
 
 if __name__ == '__main__':