OSDN Git Service

About dialog is improved.
[molby/Molby.git] / Makefile
1 ifeq ($(TARGET_PLATFORM),MSW)
2  ifeq ($(TARGET_ARCH),x86_64)
3   TOOL_PREFIX = x86_64-w64-mingw32-
4   MSW_BUILD = build-win
5   LIB_SUFFIX = -3.0-x86_64-w64-mingw32
6   WINE_PATH=/Applications/EasyWine.app/Contents/Resources/wine/bin
7   PRODUCT_SUFFIX = 64
8  else
9   TOOL_PREFIX = i686-w64-mingw32-
10 #  CPP_EXTRA_FLAGS += -isystem /usr/local/mingw-w32/mingw/include
11   MSW_BUILD = build-win32
12   LIB_SUFFIX = -3.0-i686-w64-mingw32
13   WINE_PATH=/Applications/EasyWine.app/Contents/Resources/wine/bin
14   PRODUCT_SUFFIX = 32
15  endif
16  WX_DIR = $(PWD)/../../wxWidgets-3.0.3
17  WX_LIB_DIR = $(WX_DIR)/$(MSW_BUILD)/lib
18  WX_ARCH_DIR = $(WX_LIB_DIR)/wx/include/$(TOOL_PREFIX)msw-unicode-static-3.0
19  WX_CPPFLAGS = -isystem $(WX_ARCH_DIR) -isystem $(WX_DIR)/include -D_LARGEFIILE_SOURCE=unknown -D__WXMSW__
20  WX_LDFLAGS = -L$(WX_LIB_DIR) -Wl,--subsystem,windows -mwindows -lwx_mswu_gl$(LIB_SUFFIX) -lopengl32 -lglu32 -lwx_mswu$(LIB_SUFFIX) -lwxregexu$(LIB_SUFFIX) -lwxexpat$(LIB_SUFFIX) -lwxtiff$(LIB_SUFFIX) -lwxjpeg$(LIB_SUFFIX) -lwxpng$(LIB_SUFFIX) -lwxzlib$(LIB_SUFFIX) -lrpcrt4 -loleaut32 -lole32 -luuid -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
21  CPP_EXTRA_FLAGS = -isystem $(PWD)/../../CLAPACK-3.1.1.1-mingw/INCLUDE -isystem $(PWD)/../../fftw-3.3.2/$(MSW_BUILD)/include -I$(PWD)/../MolLib
22  LD_EXTRA_FLAGS = -L$(PWD)/../../CLAPACK-3.1.1.1-mingw/$(MSW_BUILD)/lib -L$(PWD)/../../fftw-3.3.2/$(MSW_BUILD)/lib -llapackMinGW -lblasMinGW -lf2c_nomain -lfftw3 -static-libgcc -static-libstdc++ -Wl,-Bstatic,-lpthread
23  RUBY_DIR = $(PWD)/../../ruby-2.0.0-p353
24  ifeq ($(TARGET_ARCH),x86_64)
25   RUBY_CFLAGS = -isystem $(RUBY_DIR)/$(MSW_BUILD)/include/ruby-2.0.0 -I$(RUBY_DIR) -I$(RUBY_DIR)/$(MSW_BUILD)/include/ruby-2.0.0/x64-mingw32
26   RUBY_LDFLAGS = -L$(RUBY_DIR)/$(MSW_BUILD)/lib -lx64-msvcrt-ruby200-static -lws2_32 -lshlwapi -limagehlp -lenc -ltrans
27  else
28   RUBY_CFLAGS = -isystem $(RUBY_DIR)/$(MSW_BUILD)/include/ruby-2.0.0 -I$(RUBY_DIR) -I$(RUBY_DIR)/$(MSW_BUILD)/include/ruby-2.0.0/i386-mingw32
29   RUBY_LDFLAGS = -L$(RUBY_DIR)/$(MSW_BUILD)/lib -lmsvcrt-ruby200-static -lws2_32 -lshlwapi -limagehlp -lenc -ltrans
30  endif
31  EXECUTABLE = _Molby.exe_
32  FINAL_EXECUTABLE = Molby.exe
33  EXE_SUFFIX = .exe
34 endif
35
36 WXLIB_LIST = core,base,gl,adv
37 OBJECTS = ConsoleFrame.o GlobalParameterFrame.o GlobalParameterFilesFrame.o MoleculeView.o MyApp.o MyCommand.o MyDocument.o MyGLCanvas.o MySlider.o MyClipboardData.o ProgressFrame.o MyListCtrl.o MyDocManager.o wxKillAddition.o RubyDialogFrame.o MyIPCSupport.o MyVersion.o MyThread.o MyProgressIndicator.o modalwindow.o MyTextCtrl.o docview.o
38 LIBS = MolLib.a Ruby_bind.a
39 RUBY_EXTLIB = scanf.rb
40
41 ifeq ($(TARGET_PLATFORM),MAC)
42 PRODUCT = Molby.app
43 else
44 PRODUCT_DIR = Molby
45 PRODUCT = $(PRODUCT_DIR)/$(EXECUTABLE)
46 endif
47
48 CPP = $(TOOL_PREFIX)g++
49 CC = $(TOOL_PREFIX)gcc
50 AR = $(TOOL_PREFIX)ar
51 RANLIB = $(TOOL_PREFIX)ranlib
52
53 ifeq ($(MAKECMDGOALS),debug)
54  DEBUG = 1
55 endif
56
57 ifeq ($(DEBUG),1)
58  DESTPREFIX = build/debug
59  COPT = -O0 -g
60 else
61  DESTPREFIX = build/release
62  COPT = -O2 -g
63 endif
64 MAKEDIR = $(PWD)
65 DESTDIR = $(PWD)/$(DESTPREFIX)
66 CFLAGS = $(CPPFLAGS) $(COPT) $(RUBY_CFLAGS) $(WX_CPPFLAGS) $(CPP_EXTRA_FLAGS)
67 LDFLAGS = $(WX_LDFLAGS) $(RUBY_LDFLAGS) $(LD_EXTRA_FLAGS)
68 export CFLAGS
69 export LDFLAGS
70 export DESTDIR
71 export CC
72 export CPP
73 export AR
74 export TARGET_PLATFORM
75 export RANLIB
76
77 release: all
78
79 debug: all
80
81 all: $(DESTPREFIX) $(DESTPREFIX)/$(PRODUCT)
82
83 $(DESTPREFIX) :
84         mkdir -p $(DESTPREFIX)
85
86 amber11 : ../amber11/src/antechamber/*.[ch] ../amber11/src/sqm/*.f ../amber11/src/config.h
87         make -f ../Makefile_amber11
88
89 ortep3/ortep3$(EXE_SUFFIX) :
90         make -f ../Makefile_ortep3
91
92 ifeq ($(TARGET_PLATFORM),MSW)
93 EXTRA_OBJECTS = listctrl.o window_msw.o textctrl_msw.o OpenGL_extensions.o
94 RESOURCE = molby_rc.o
95 #  The following HOMETEMP kludges are to work around a bug where '#include "..."' 
96 #  does not work when the include path is on the C: drive whereas the source is 
97 #  on the Z: drive. 2009.7.24. Toshi Nagata
98 #  2019.8.16. We no longer need this kludge
99 #HOMETEMP = $(HOME)/__molby_temp_build__
100 $(DESTPREFIX)/$(RESOURCE) : molby.rc
101         $(TOOL_PREFIX)windres -i molby.rc -o $(DESTPREFIX)/$(RESOURCE) -I$(WX_DIR)/include
102 #       mkdir -p $(HOMETEMP)/$(MSW_BUILD) $(HOMETEMP)/bitmaps
103 #       cp molby.rc $(HOMETEMP)/$(MSW_BUILD)
104 #       cp ../bitmaps/*.ico $(HOMETEMP)/bitmaps
105 #       (cd $(HOMETEMP)/$(MSW_BUILD); $(TOOL_PREFIX)windres -i molby.rc -o molby_rc.o -I$(WX_DIR)/include)
106 #       cp $(HOMETEMP)/$(MSW_BUILD)/molby_rc.o $@
107 #       rm -rf $(HOMETEMP)
108 endif
109
110 depend: cleandep $(DESTPREFIX) $(OBJECTS:%.o=$(DESTPREFIX)/%.d) $(EXTRA_OBJECTS:%.o=$(DESTPREFIX)/%.d)
111         cat $(DESTPREFIX)/*.d > build/Makefile.depend
112
113 cleandep:
114         rm -f build/Makefile.depend
115
116 -include build/Makefile.depend
117
118 #  For unknown reasons, OpenGL_extensions.c needs to be compiled with -O0.
119 $(DESTPREFIX)/OpenGL_extensions.o : ../wxSources/OpenGL_extensions.c
120         $(CC) -c $< -o $@ $(CPPFLAGS) -O0 -g $(CPP_EXTRA_FLAGS) $(RUBY_CFLAGS) $(WX_CPPFLAGS)
121
122 $(DESTPREFIX)/%.d : ../wxSources/%.cpp
123         $(CPP) -MM $< >$@ $(subst -arch ppc,,$(CFLAGS))
124
125 $(DESTPREFIX)/%.d : ../wxSources/%.c
126         $(CC) -MM $< >$@ $(subst -arch ppc,,$(CFLAGS))
127
128 $(DESTPREFIX)/%.o : ../wxSources/%.cpp
129         $(CPP) -c $< -o $@ $(CFLAGS)
130
131 $(DESTPREFIX)/%.o : ../wxSources/%.c
132         $(CC) -c $< -o $@ $(CFLAGS)
133
134 $(DESTPREFIX)/MolLib.a : ../MolLib/*.[ch] ../MolLib/MD/*.[ch]
135         mkdir -p $(DESTPREFIX)/MolLib/MD; cd ../MolLib; $(MAKE)
136
137 $(DESTPREFIX)/Ruby_bind.a : ../MolLib/Ruby_bind/*.[ch]
138         mkdir -p $(DESTPREFIX)/MolLib/Ruby_bind; cd ../MolLib/Ruby_bind; $(MAKE)
139
140 ALL_OBJECTS = $(OBJECTS) $(EXTRA_OBJECTS) $(LIBS) $(RESOURCE)
141 DESTOBJECTS = $(addprefix $(DESTPREFIX)/,$(ALL_OBJECTS))
142 $(DESTPREFIX)/$(EXECUTABLE) : $(DESTOBJECTS) ../revisionInfo.txt
143 ifeq ($(TARGET_PLATFORM),MSW)
144         sh ../record_build_date.sh --with-svn-status >buildInfo.c
145 endif
146         $(CC) -c buildInfo.c -o $(DESTPREFIX)/buildInfo.o $(CFLAGS)
147         $(CPP) -o $@ $(DESTOBJECTS) $(DESTPREFIX)/buildInfo.o $(CFLAGS) $(LDFLAGS)
148
149 $(DESTPREFIX)/$(PRODUCT) : $(DESTPREFIX)/$(EXECUTABLE) ../Scripts/*.rb ../bitmaps/bitmaps amber11 ortep3/ortep3$(EXE_SUFFIX)
150 ifeq ($(TARGET_PLATFORM),MSW)
151         echo PWD = $(PWD)
152         rm -rf $(DESTPREFIX)/$(PRODUCT_DIR)
153         mkdir -p $(DESTPREFIX)/$(PRODUCT_DIR)
154         cp $(DESTPREFIX)/$(EXECUTABLE) $(DESTPREFIX)/$(PRODUCT_DIR)/$(FINAL_EXECUTABLE)
155 #       cp mingwm10.dll $(DESTPREFIX)/$(PRODUCT_DIR)
156         cp -r ../Scripts $(DESTPREFIX)/$(PRODUCT_DIR)
157         cp -r ../bitmaps/bitmaps $(DESTPREFIX)/$(PRODUCT_DIR)
158         cp -r amber11 $(DESTPREFIX)/$(PRODUCT_DIR)
159         cp -r ortep3 $(DESTPREFIX)/$(PRODUCT_DIR)
160         mkdir -p $(DESTPREFIX)/$(PRODUCT_DIR)/Scripts/lib
161         for i in $(RUBY_EXTLIB); do cp $(RUBY_DIR)/lib/$$i $(DESTPREFIX)/$(PRODUCT_DIR)/Scripts/lib; done
162 endif
163
164 ifeq ($(TARGET_PLATFORM),MSW)
165 install: setup
166
167 setup: build/release/$(PRODUCT_DIR)/$(FINAL_EXECUTABLE)
168         mkdir -p ../latest_binaries
169 ifneq ($(WINE_PATH),)
170         ($(WINE_PATH)/wine ../../Inno\ Setup\ 5/ISCC.exe molby$(PRODUCT_SUFFIX).iss || exit 1)
171 else
172         (/c/Program\ Files\ \(x86\)/Inno\ Setup\ 5/iscc molby$(PRODUCT_SUFFIX).iss || exit 1)
173 endif
174         mv Output/SetupMolbyWin$(PRODUCT_SUFFIX).exe ../latest_binaries
175         (cd build/release/$(PRODUCT_DIR) && rm -rf $(MAKEDIR)/../latest_binaries/MolbyWin$(PRODUCT_SUFFIX).zip && zip -r $(MAKEDIR)/../latest_binaries/MolbyWin$(PRODUCT_SUFFIX).zip * -x \*.DS_Store \*.svn*)
176 endif
177
178 clean:
179         rm -f $(DESTPREFIX)/*.o $(DESTPREFIX)/*.a $(DESTPREFIX)/$(EXECUTABLE)
180         rm -rf $(DESTPREFIX)/$(PRODUCT_DIR)
181         rm -f $(DESTPREFIX)/MolLib/*.o
182         rm -f $(DESTPREFIX)/MolLib/MD/*.o
183         rm -f $(DESTPREFIX)/MolLib/Ruby_bind/*.o
184
185 #       rm -f $(EXECUTABLE) $(OBJECTS)
186 #       rm -rf $(PRODUCT)
187 #       cd ../MolLib; $(MAKE) clean
188 #       cd ../MolLib/Ruby_bind; $(MAKE) clean
189