add VS2013 detection
[scilab.git] / scilab / modules / dynamic_link / src / scripts / Makefile.incl.mak
1 #==================================================
2 # Visual C++/Intel Fortran 10.x 
3 # Allan CORNET - 2008
4 #==================================================
5 all::
6 MAKE=nmake /f Makefile.mak
7 #==================================================
8 # C compiler
9 # typically, for compiling use: CFLAGS = $(CC_OPTIONS)
10 # and for linking: $(CC) -o $(PROGRAM) $(OBJS) $(CC_LDFLAGS)
11 #==================================================
12 CC=cl
13 LINKER=link
14
15 !IF "$(WIN64)" == "OK" 
16 MACHINE=/machine:X64
17 DWIN=-D_WIN64
18 !ELSE
19 MACHINE=/machine:ix86
20 DWIN=-DWIN32
21 !ENDIF
22
23 !IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
24 DIR_OBJ=Debug
25 LINKER_OPTIMISATION_MODE=/DEBUG -PDB:"$(DIR_OBJ)\$(LIBRARY).pdb"
26 CC__OPTIMISATION_MODE=-Zi -Od -MDd
27 !ELSE
28 DIR_OBJ=Release
29 LINKER_OPTIMISATION_MODE=/RELEASE 
30 CC__OPTIMISATION_MODE=-Z7 -O2 -MD -DNDEBUG
31 !ENDIF
32
33 CC_COMMON=-D__MSC__ -DFORDLL $(DWIN) -c -DSTRICT -D_CRT_SECURE_NO_DEPRECATE -D__MAKEFILEVC__ -nologo $(INCLUDES)
34 LINKER_FLAGS=/NOLOGO $(MACHINE) /DYNAMICBASE:NO /NXCOMPAT:NO $(LINKER_OPTIMISATION_MODE)
35 CC_OPTIONS = $(CC_COMMON) -W3 -Gd $(CC__OPTIMISATION_MODE) /Fo"$(DIR_OBJ)/" /Fd"$(DIR_OBJ)/"
36 #==================================================
37 CC_LDFLAGS = 
38 #==================================================
39 # Fortran Compiler 
40 # default usage is to use f2c 
41 #==================================================
42 USE_F2C=YES
43 # detect intel fortran compiler
44 !IF "$(IFORT_COMPILER9)" == ""
45 !ELSE
46 USE_F2C=NO
47 !ENDIF
48 !IF "$(IFORT_COMPILER10)" == ""
49 !ELSE
50 USE_F2C=NO
51 !ENDIF
52 !IF "$(IFORT_COMPILER11)" == ""
53 !ELSE
54 USE_F2C=NO
55 !ENDIF
56 !IF "$(IFORT_COMPILER12)" == ""
57 !ELSE
58 USE_F2C=NO
59 !ENDIF
60 !IF "$(IFORT_COMPILER13)" == ""
61 !ELSE
62 USE_F2C=NO
63 !ENDIF
64 !IF "$(IFORT_COMPILER14)" == ""
65 !ELSE
66 USE_F2C=NO
67 !ENDIF
68
69 #==================================================
70 # if USE_F2C is set to NO we will use the following Fortran compiler (i.e Intel Fortran 10.x)
71 !IF "$(USE_F2C)" == "NO"
72 FC=ifort 
73 FC_OPTIONS_COMMON=/nologo /DFORDLL /assume:underscore \
74 /noaltparam /f77rtl /fpscomp:nolibs /names:lowercase \
75 /iface:cref /threads /c /Qvc9 \
76 /Fo"$(DIR_OBJ)/" /Fd"$(DIR_OBJ)/" \
77 /include:"$(SCIDIR)/modules/core/includes"
78 #==================================================
79 !IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
80 FC_OPTIONS=$(FC_OPTIONS_COMMON) /Zi /Od /debug /dbglibs
81 #==================================================
82 !ELSE
83 FC_OPTIONS=$(FC_OPTIONS_COMMON)
84 !ENDIF
85 #==================================================
86 LINKER_FLAGS=$(LINKER_FLAGS) /force:multiple
87 !ENDIF
88 #==================================================
89 # resource compiler 
90 #==================================================
91 RC=rc
92 RCVARS=-r -DWIN32
93 #==================================================
94 # default rules for Fortran 77 & 90 Compilation 
95 #==================================================
96 !IF "$(USE_F2C)" == "YES"
97 #==================================================
98 # F2C
99 #==================================================
100 .f{$(DIR_OBJ)}.obj      :
101         @echo ----------- Compile file $< (using f2c) -------------
102 !IF "$(F2C_IMPORT_COMMON)" == "YES"     
103         @"$(SCIDIR)/bin/f2c.exe" -E -I"$(SCIDIR)/modules/core/includes" $(FFLAGS) $< 2>NUL
104 !ELSE
105         @"$(SCIDIR)/bin/f2c.exe" -I"$(SCIDIR)/modules/core/includes" $(FFLAGS) $< 2>NUL
106 !ENDIF
107         -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
108
109         @$(CC) $(CFLAGS) $(<:.f=.c)
110 !IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
111 !ELSE
112   -del $(<:.f=.c)
113 !ENDIF
114 .f90{$(DIR_OBJ)}.obj    :
115         @echo F2C cannot build .f90 file        
116 !ELSE
117 #==================================================
118 # INTEL FORTRAN
119 #==================================================
120 .f{$(DIR_OBJ)}.obj      :
121         @echo ----------- Compile file $< (using INTEL FORTRAN) -------------
122         -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
123         @$(FC) $(FFLAGS) $<
124 .f90{$(DIR_OBJ)}.obj    :
125         @echo ----------- Compile file $< (using INTEL FORTRAN 90) -------------
126         -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
127         @$(FC) $(FFLAGS) $<
128 !ENDIF
129 #==================================================
130 # default rules for C++
131 #==================================================
132 .cxx{$(DIR_OBJ)}.obj    :
133         @echo ------------- Compile file $< --------------
134         -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
135         @$(CC) $(CFLAGS) /EHsc $< 
136 #==================================================
137 .cpp{$(DIR_OBJ)}.obj    :
138         @echo ------------- Compile file $< --------------
139         -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
140         @$(CC) $(CFLAGS) /EHsc $<
141 #==================================================
142 # default rules for C
143 #==================================================
144 .c{$(DIR_OBJ)}.obj      :
145         @echo ------------- Compile file $< --------------
146         -IF NOT EXIST  $(DIR_OBJ) mkdir $(DIR_OBJ)
147         $(CC) $(CFLAGS) $< 
148 #==================================================
149 # clean 
150 RM = del
151 #==================================================
152 clean::
153         -del *.bak 
154   -del "$(DIR_OBJ)\*.obj"
155 !IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
156   -del "$(DIR_OBJ)\*.pdb"
157 !ENDIF
158   -rmdir "$(DIR_OBJ)"
159 #==================================================
160 distclean::  
161   -del *.bak 
162   -del "$(DIR_OBJ)\*.obj"
163 !IF "$(DEBUG_SCILAB_DYNAMIC_LINK)" == "YES"
164   -del "$(DIR_OBJ)\*.pdb"
165 !ENDIF
166   -rmdir "$(DIR_OBJ)"
167 #==================================================
168