Compile nonbonded kernels as C++
[alexxy/gromacs.git] / src / gromacs / gmxlib / nonbonded / nb_kernel_sse2_single / make_nb_kernel_sse2_single.py
index d9cebccf130d3054566f6f58dfa939b91fc627c1..e240e22be29c8dcda6fef8550426ed8b9577a35c 100755 (executable)
@@ -91,7 +91,7 @@ Arch       = 'sse2_single'
 # 'cutoff' means the interaction is set to 0.0 outside the cutoff
 #
 
-FileHeader = create_copyright_header('2012,2013,2014,2015,2017')
+FileHeader = create_copyright_header('2012,2013,2014,2015,2017,2018')
 FileHeader += """/*
  * Note: this file was generated by the GROMACS """+Arch+""" kernel generator.
  */
@@ -424,7 +424,7 @@ ntot    = nelec*nmod*nVdw*nmod*ngeom
 
 numKernels = 0
 
-fpdecl = open('nb_kernel_' + Arch + '.c','w')
+fpdecl = open('nb_kernel_' + Arch + '.cpp','w')
 fpdecl.write( FileHeader )
 fpdecl.write( '#include "gmxpre.h"\n\n' )
 fpdecl.write( '#include "gromacs/gmxlib/nonbonded/nb_kernel.h"\n\n' )
@@ -444,7 +444,7 @@ for KernelElec in ElectrostaticsList:
                 for KernelGeom in GeometryNameList:
 
                     cnt += 1
-                    KernelFilename = MakeKernelFileName(KernelElec,KernelElecMod,KernelVdw,KernelVdwMod,KernelGeom) + '.c'
+                    KernelFilename = MakeKernelFileName(KernelElec,KernelElecMod,KernelVdw,KernelVdwMod,KernelGeom) + '.cpp'
                     fpkernel = open(KernelFilename,'w')
                     defines['INCLUDE_HEADER'] = 1  # Include header first time in new file
                     DoHeader = 1
@@ -480,8 +480,8 @@ for KernelElec in ElectrostaticsList:
                         fptmp.close()
                         os.remove(KernelName+'.tmp')
 
-                        # Add a declaration for this kernel
-                        fpdecl.write('nb_kernel_t ' + KernelName + ';\n');
+                        # Add an extern declaration for this kernel
+                        fpdecl.write('extern nb_kernel_t ' + KernelName + ';\n');
 
                         # Add declaration to the buffer
                         KernelOther=''