Changeset df4dc86 in sasmodels


Ignore:
Timestamp:
Feb 13, 2015 1:36:42 AM (9 years ago)
Author:
pkienzle
Branches:
master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
8fff00e
Parents:
8a3e0af
Message:

support MSVC build of ctypes/openmp models

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r6798848 rdf4dc86  
    44*.cl 
    55*.so 
     6*.obj 
  • sasmodels/dll.py

    r216a9e1 rdf4dc86  
    44import sys 
    55import os 
     6import tempfile 
    67import ctypes as ct 
    78from ctypes import c_void_p, c_int, c_double 
     
    1516if sys.platform == 'darwin': 
    1617    #COMPILE = "gcc-mp-4.7 -shared -fPIC -std=c99 -fopenmp -O2 -Wall %s -o %s -lm -lgomp" 
    17     COMPILE = "gcc -shared -fPIC -std=c99 -O2 -Wall %s -o %s -lm" 
     18    COMPILE = "gcc -shared -fPIC -std=c99 -O2 -Wall %(source)s -o %(output)s -lm" 
    1819elif os.name == 'nt': 
    19     COMPILE = "gcc -shared -fPIC -std=c99 -fopenmp -O2 -Wall %s -o %s -lm" 
     20    # make sure vcvarsall.bat is called first in order to set compiler, headers, lib paths, etc. 
     21    ##COMPILER = r'"C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\VC\Bin\cl.exe"' 
     22    # Can't find VCOMP90.DLL (don't know why), so remove openmp support from windows compiler build 
     23    #COMPILE = "cl /nologo /Ox /MD /W3 /GS- /DNDEBUG /Tp%(source)s /link /DLL /INCREMENTAL:NO /MANIFEST /OUT:%(output)s" 
     24    COMPILE = "cl /nologo /Ox /MD /W3 /GS- /DNDEBUG /Tp%(source)s /openmp /link /DLL /INCREMENTAL:NO /MANIFEST /OUT:%(output)s" 
     25    #/MANIFESTFILE:build\temp.win32-2.7\Release\src\sans\models\c_extension\libigor\c_models.pyd.manifest 
     26    #COMPILE = "gcc -shared -fPIC -std=c99 -fopenmp -O2 -Wall %(source)s -o %(output)s -lm" 
    2027else: 
    21     COMPILE = "cc -shared -fPIC -std=c99 -fopenmp -O2 -Wall %s -o %s -lm" 
    22 DLL_PATH = "/tmp" 
     28    COMPILE = "cc -shared -fPIC -std=c99 -fopenmp -O2 -Wall %(source)s -o %(output)s -lm" 
     29 
     30DLL_PATH = tempfile.gettempdir() 
    2331 
    2432 
     
    5361        fid, filename = tempfile.mkstemp(suffix=".c",prefix="sas_"+info['name']) 
    5462        os.fdopen(fid,"w").write(source) 
    55         status = os.system(COMPILE%(filename, dllpath)) 
     63        command = COMPILE%{"source":filename, "output":dllpath} 
     64        print "Compile command:",command 
     65        status = os.system(command) 
    5666        if status != 0: 
    5767            print "compile failed.  File is in %r"%filename 
     
    91101        Npd2d = len(self.info['partype']['pd-2d']) 
    92102 
     103        #print "dll",self.dllpath 
    93104        self.dll = ct.CDLL(self.dllpath) 
    94105 
  • sasmodels/gen.py

    r994d77f rdf4dc86  
    226226// Note: if using a C++ compiler, then define kernel as extern "C" 
    227227#ifndef USE_OPENCL 
    228 #  include <math.h> 
     228#  ifdef __cplusplus 
     229     #include <cmath> 
     230     #if defined(_MSC_VER) 
     231     #define kernel extern "C" __declspec( dllexport ) 
     232     #else 
     233     #define kernel extern "C" 
     234     #endif 
     235     using namespace std; 
     236     inline void SINCOS(double angle, double &svar, double &cvar) 
     237       { svar=sin(angle); cvar=cos(angle); } 
     238#  else 
     239     #include <math.h> 
     240     #if defined(_MSC_VER) 
     241     #define kernel __declspec( dllexport ) 
     242     #else 
     243     #define kernel 
     244     #endif 
     245     #define SINCOS(angle,svar,cvar) do {svar=sin(angle);cvar=cos(angle);} while (0) 
     246#  endif 
    229247#  define global 
    230248#  define local 
    231249#  define constant const 
    232 #  define kernel 
    233 #  define SINCOS(angle,svar,cvar) do {svar=sin(angle);cvar=cos(angle);} while (0) 
    234250#  define powr(a,b) pow(a,b) 
    235251#else 
Note: See TracChangeset for help on using the changeset viewer.