source: trunk/config/sys/WIN32-VC.gmk @ 1184

Last change on this file since 1184 was 1176, checked in by garnier, 15 years ago

fix for Qt on windows not using WIN32UI

File size: 4.6 KB
Line 
1#
2# ------ WIN32/VC ------    Visual-C++ 7 .NET and higher
3#
4ifeq ($(G4SYSTEM),WIN32-VC)
5  CXX       := CL
6  ifdef G4OPTIMISE
7    CXXFLAGS  += -Ox
8  else
9    ifdef G4DEBUG
10      CXXFLAGS  += -Od -Zi -Fd$(G4LIBDIR)/lib$(name)
11    endif
12  endif
13  CXXFLAGS += -MD -GR -EHsc -Zm200 -nologo
14  CXXFLAGS += -D_CONSOLE -D_WIN32 -DOS
15  CPPFLAGS += -DWIN32 -DXPNET -D_CRT_SECURE_NO_DEPRECATE
16  LDFLAGS  += -FORCE /NODEFAULTLIB:MSVCRT.dll
17
18  SHEXT := dll
19  AR := LIB
20  ECHO := /usr/bin/echo -e
21  FIND := /usr/bin/find
22  SORT := /usr/bin/sort
23  GREP := /usr/bin/grep
24  SED  := /usr/bin/sed
25  CAT  := /usr/bin/cat
26  CUT  := /usr/bin/cut
27  TOUCH := /usr/bin/touch
28
29  FC := g77
30#  FCLIBS := -lf2c
31  ifndef OGLFLAGS
32    OGLFLAGS  :=
33  endif
34  ifndef OGLLIBS
35    OGLLIBS   := glu32.lib opengl32.lib gdi32.lib user32.lib
36  endif
37  ifndef UI32LIBS
38    UI32LIBS  := gdi32.lib user32.lib
39  endif
40  ifndef QTHOME
41    QTHOME    := /usr
42  endif
43  ifndef QTFLAGS
44    QTFLAGS   := -I$(QTHOME)/include/Qt -I$(QTHOME)/include
45  endif
46  ifndef QTMOC
47    QTMOC     := $(QTHOME)/bin/moc
48  endif
49
50  QT_VERSION  := $(shell test -f $(QTHOME)/lib/Qt3Support4.lib && echo QT4 || echo QT3)
51
52  ifndef QTLIBS
53    ifeq ($(QT_VERSION),QT3)
54      QTLIBS   := -L$(QTHOME)/lib -lqt-mt
55    else
56      QTLIBS   := -L$(QTHOME)/lib QtCore4.lib QtGui4.lib
57    endif
58  endif
59  ifndef GLQTLIBS
60    ifeq ($(QT_VERSION),QT3)
61      GLQTLIBS   := -L$(QTHOME)/lib -lqt-mt
62    else
63      GLQTLIBS   := -L$(QTHOME)/lib QtCore4.lib QtGui4.lib QtOpenGL4.lib
64    endif
65  endif
66
67
68#
69# Building DLLs (G.Barrand)
70# -------------
71#  The commands below allow to build DLLs from the archive libraries.
72#  From a libG4xxx.a, it will extract the symbols with :
73#    DOS> dumpbin /symbols libG4xxx.a > G4xxx.dumpbin
74#  After that it will produce a G4xxx.def using the 'win32def' program.
75#  The G4xxx.def file will contain the list of symbols that are "exported"
76#  or made public for using the DLLs.
77#  The source win32def.c is in the geant4/config directory. The binary is
78#  built during the library installation process, and will be placed in
79#  $G4LIB/G4SYSTEM.
80#  If can also be built as follows :
81#    DOS> cl.exe /Fowin32def.exe win32def.c
82#  Then, to use it :
83#    DOS> win32def G4xxx < G4xxx.dumpbin > G4xxx.def
84#  Libraries libG4xxx.lib can also be built with :
85#    DOS> lib /def:G4xxx.def /out:libG4xxx.lib
86#  It also produces a libG4xxx.exp used to build the DLL.
87#  The DLL can be built with :
88#    DOS> link /dll /out:G4xxx.dll libG4xxx.exp libG4xxx.a <dependencies>
89#  Note that a DLL must be fully linked. You should NOT have undefined
90#  symbols as output of the link command.
91#
92  define build-granular-shared-lib
93    @libdir=`(cd $(@D);/bin/pwd)`;\
94    cd $(G4TMP)/$(G4SYSTEM);\
95    $(ECHO) "Building $(name).dumpbin file ...";\
96    $(RM) $(name).dumpbin;\
97    dumpbin /symbols $(G4LIBDIR)/lib$(name).a > $(name).dumpbin;\
98    $(ECHO) "Building $(name).def file ...";\
99    $(RM) $(name).def;\
100    $(G4LIB)/$(G4SYSTEM)/win32def.exe $(name) < $(name).dumpbin > $(name).def;\
101    $(RM) $(name).dumpbin;\
102    $(ECHO) "Building lib$(name).exp and lib$(name).lib file ...";\
103    $(RM) $(G4LIBDIR)/lib$(name).exp;\
104    $(RM) $(G4LIBDIR)/lib$(name).lib;\
105    lib.exe /nologo /machine:ix86 /def:$(name).def \
106            /out:$(G4LIBDIR)/lib$(name).lib;\
107    $(RM) $(G4LIBDIR)/$(name).dll;\
108    $(ECHO) "Building $(name).dll file ...";\
109    link.exe /nologo /dll /out:$(G4LIBDIR)/$(name).dll \
110             $(G4LIBDIR)/lib$(name).exp $(G4LIBDIR)/lib$(name).a \
111             /libpath:$(G4LIBDIR) $(GLOBLIBS) \
112             $(LIB_PATH)$(CLHEP_LIB_DIR) $(CLHEP_LIB) \
113             $(INTYLIBS) $(GDMLLIBS) $(ANALYSISLIBS) $(UI32LIBS)
114  endef
115  define build-global-shared-lib
116    @libdir=`(cd $(@D);/bin/pwd)`;\
117    cd $(G4TMP)/$(G4SYSTEM);\
118    $(ECHO) "Building $(name).dumpbin file ...";\
119    $(RM) $(name).dumpbin;\
120    dumpbin /symbols $(G4LIBDIR)/lib$(name).a > $(name).dumpbin;\
121    $(ECHO) "Building $(name).def file ...";\
122    $(RM) $(name).def;\
123    $(G4LIB)/$(G4SYSTEM)/win32def.exe $(name) < $(name).dumpbin > $(name).def;\
124    $(RM) $(name).dumpbin;\
125    $(ECHO) "Building lib$(name).exp and lib$(name).lib ...";\
126    $(RM) $(G4LIBDIR)/lib$(name).exp;\
127    $(RM) $(G4LIBDIR)/lib$(name).lib;\
128    lib.exe /nologo /machine:ix86 /def:$(name).def \
129            /out:$(G4LIBDIR)/lib$(name).lib;\
130    $(RM) $(G4LIBDIR)/$(name).dll;\
131    $(ECHO) "Building $(name).dll ...";\
132    link.exe /nologo /dll /out:$(G4LIBDIR)/$(name).dll \
133             $(G4LIBDIR)/lib$(name).exp $(G4LIBDIR)/lib$(name).a \
134             /libpath:$(G4LIBDIR) $(GLOBLIBS) \
135             $(LIB_PATH)$(CLHEP_LIB_DIR) $(CLHEP_LIB) \
136             $(INTYLIBS) $(GDMLLIBS) $(ANALYSISLIBS) $(UI32LIBS)
137  endef
138endif
Note: See TracBrowser for help on using the repository browser.