OSDN Git Service

Makefile is updated so that MSW version is properly built
[molby/Molby.git] / Makefile
1 ifeq ($(TARGET_PLATFORM),MAC)
2  WX_DIR = $(PWD)/../../wxWidgets-3.0.0
3  WX_LIB_DIR = $(WX_DIR)/osx-build/lib
4  WX_ARCH_DIR = $(WX_LIB_DIR)/wx/include/osx_cocoa-unicode-static-3.0
5  WX_CPPFLAGS = -isystem $(WX_ARCH_DIR) -isystem $(WX_DIR)/include -D_FILE_OFFSET_BITS=64 -D__WXMAC__ -D__WXOSX__ -D__WXOSX_COCOA__
6  WX_LDFLAGS = -L$(WX_LIB_DIR)  -framework IOKit -framework Carbon -framework Cocoa -framework AudioToolbox -framework System -framework OpenGL -framework QuickTime -lwx_osx_cocoau-3.0 -lwx_osx_cocoau_gl-3.0 -framework WebKit -lwxregexu-3.0 -lwxtiff-3.0 -lwxjpeg-3.0 -lwxpng-3.0 -lz -lpthread -liconv 
7  CPP_EXTRA_FLAGS = -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5 -arch ppc -arch i386 -DUSE_RUBY=1 -g -isystem $(PWD)/../../fftw-3.3.2/osx-build/include
8  LD_EXTRA_FLAGS = -framework Accelerate -framework GLUT -L$(PWD)/../../fftw-3.3.2/osx-build/lib -lfftw3
9  RUBY_DIR = $(PWD)/../../ruby-1.8.7-p160
10  RUBY_CFLAGS = -isystem $(RUBY_DIR)/osx-build/include
11  RUBY_LDFLAGS = -L$(RUBY_DIR)/osx-build/lib -lruby-static
12  EXECUTABLE = Molby
13  EXE_SUFFIX =
14 endif
15
16 ifeq ($(TARGET_PLATFORM),MSW)
17  WX_DIR = $(PWD)/../../wxWidgets-3.0.0
18  WX_LIB_DIR = $(WX_DIR)/msw-build/lib
19  WX_ARCH_DIR = $(WX_LIB_DIR)/wx/include/msw-unicode-static-3.0
20  WX_CPPFLAGS = -isystem $(WX_ARCH_DIR) -isystem $(WX_DIR)/include -D_LARGEFIILE_SOURCE=unknown -D__WXMSW__
21  WX_LDFLAGS = -L$(WX_LIB_DIR) -Wl,--subsystem,windows -mwindows -lwx_mswu_gl-3.0 -lopengl32 -lglu32 -lwx_mswu-3.0 -lwxregexu-3.0 -lwxexpat-3.0 -lwxtiff-3.0 -lwxjpeg-3.0 -lwxpng-3.0 -lwxzlib-3.0 -lrpcrt4 -loleaut32 -lole32 -luuid -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
22  CPP_EXTRA_FLAGS = -isystem $(PWD)/../../CLAPACK-3.1.1.1-mingw/INCLUDE -isystem $(PWD)/../../fftw-3.3.2/msw-build/include
23  LD_EXTRA_FLAGS = -L$(PWD)/../../CLAPACK-3.1.1.1-mingw/lib -L$(PWD)/../../fftw-3.3.2/msw-build/lib -llapackMinGW -lblasMinGW -lf2c_nomain -lfftw3
24  RUBY_DIR = $(PWD)/../../ruby-2.0.0-p353
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/i386-mingw32
26  RUBY_LDFLAGS = -L$(RUBY_DIR)/msw-build/lib -lmsvcrt-ruby200-static -lmsvcrt-ruby200 -lws2_32 -lshlwapi -limagehlp
27  EXECUTABLE = _Molby.exe_
28  FINAL_EXECUTABLE = Molby.exe
29  EXE_SUFFIX = .exe
30 endif
31
32 WXLIB_LIST = core,base,gl,adv
33 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
34 LIBS = MolLib.a Ruby_bind.a
35 RUBY_EXTLIB = scanf.rb
36
37 ifeq ($(TARGET_PLATFORM),MAC)
38 PRODUCT = Molby.app
39 else
40 PRODUCT_DIR = Molby
41 PRODUCT = $(PRODUCT_DIR)/$(EXECUTABLE)
42 endif
43
44 CPP = g++
45 CC = gcc
46
47 ifeq ($(MAKECMDGOALS),debug)
48  DEBUG = 1
49 endif
50
51 ifeq ($(DEBUG),1)
52  DESTPREFIX = build/debug
53  COPT = -O0 -g
54 else
55  DESTPREFIX = build/release
56  COPT = -O2
57 endif
58 DESTDIR = $(PWD)/$(DESTPREFIX)
59 CFLAGS = $(CPPFLAGS) $(COPT) $(CPP_EXTRA_FLAGS) $(RUBY_CFLAGS) $(WX_CPPFLAGS)
60 LDFLAGS = $(WX_LDFLAGS) $(LD_EXTRA_FLAGS) $(RUBY_LDFLAGS)
61 export CFLAGS
62 export LDFLAGS
63 export DESTDIR
64 export CC
65 export TARGET_PLATFORM
66
67 release: all
68
69 debug: all
70
71 all: $(DESTPREFIX) $(DESTPREFIX)/$(PRODUCT)
72
73 $(DESTPREFIX) :
74         mkdir -p $(DESTPREFIX)
75
76 amber11 : ../amber11/src/antechamber/*.[ch] ../amber11/src/sqm/*.f ../amber11/src/config.h
77         make -f ../Makefile_amber11
78
79 mopac/mopac606$(EXE_SUFFIX) : 
80         make -f ../Makefile_mopac606_nbo
81
82 ortep3/ortep3$(EXE_SUFFIX) :
83         make -f ../Makefile_ortep3
84
85 ifeq ($(TARGET_PLATFORM),MSW)
86 EXTRA_OBJECTS = listctrl.o window_msw.o textctrl_msw.o
87 RESOURCE = molby_rc.o
88 #  The following HOMETEMP kludges are to work around a bug where '#include "..."' 
89 #  does not work when the include path is on the C: drive whereas the source is 
90 #  on the Z: drive. 2009.7.24. Toshi Nagata
91 HOMETEMP = $(HOME)/__molby_temp_build__
92 $(DESTPREFIX)/$(RESOURCE) : molby.rc
93         mkdir -p $(HOMETEMP)/msw_build $(HOMETEMP)/bitmaps
94         cp molby.rc $(HOMETEMP)/msw_build
95         cp ../bitmaps/*.ico $(HOMETEMP)/bitmaps
96         (cd $(HOMETEMP)/msw_build; windres -i molby.rc -o molby_rc.o -I$(WX_DIR)/include)
97         cp $(HOMETEMP)/msw_build/molby_rc.o $@
98         rm -rf $(HOMETEMP)
99 endif
100
101 depend: cleandep $(DESTPREFIX) $(OBJECTS:%.o=$(DESTPREFIX)/%.d) $(EXTRA_OBJECTS:%.o=$(DESTPREFIX)/%.d)
102         cat $(DESTPREFIX)/*.d > build/Makefile.depend
103
104 cleandep:
105         rm -f build/Makefile.depend
106
107 -include build/Makefile.depend
108
109 $(DESTPREFIX)/%.d : ../wxSources/%.cpp
110         $(CPP) -MM $< >$@ $(subst -arch ppc,,$(CFLAGS))
111
112 $(DESTPREFIX)/%.d : ../wxSources/%.c
113         $(CC) -MM $< >$@ $(subst -arch ppc,,$(CFLAGS))
114
115 $(DESTPREFIX)/%.o : ../wxSources/%.cpp
116         $(CPP) -c $< -o $@ $(CFLAGS)
117
118 $(DESTPREFIX)/%.o : ../wxSources/%.c
119         $(CC) -c $< -o $@ $(CFLAGS)
120
121 $(DESTPREFIX)/MolLib.a : ../MolLib/*.[ch] ../MolLib/MD/*.[ch]
122         mkdir -p $(DESTPREFIX)/MolLib/MD; cd ../MolLib; $(MAKE)
123
124 $(DESTPREFIX)/Ruby_bind.a : ../MolLib/Ruby_bind/*.[ch]
125         mkdir -p $(DESTPREFIX)/MolLib/Ruby_bind; cd ../MolLib/Ruby_bind; $(MAKE)
126
127 ALL_OBJECTS = $(OBJECTS) $(EXTRA_OBJECTS) $(LIBS) $(RESOURCE)
128 DESTOBJECTS = $(addprefix $(DESTPREFIX)/,$(ALL_OBJECTS))
129 $(DESTPREFIX)/$(EXECUTABLE) : $(DESTOBJECTS)
130 ifeq ($(TARGET_PLATFORM),MAC)
131         sh ../record_build_date.sh --with-svn-status
132 endif
133 ifeq ($(TARGET_PLATFORM),MSW)
134         sh ../record_build_date.sh
135 endif
136         $(CC) -c buildInfo.c -o $(DESTPREFIX)/buildInfo.o $(CFLAGS)
137         $(CPP) -o $@ $(DESTOBJECTS) $(DESTPREFIX)/buildInfo.o $(CFLAGS) $(LDFLAGS)
138
139 $(DESTPREFIX)/$(PRODUCT) : $(DESTPREFIX)/$(EXECUTABLE) ../Scripts/*.rb amber11 mopac/mopac606$(EXE_SUFFIX) ortep3/ortep3$(EXE_SUFFIX)
140 ifeq ($(TARGET_PLATFORM),MAC)
141         rm -rf $(DESTPREFIX)/$(PRODUCT)
142         mkdir -p $(DESTPREFIX)/$(PRODUCT)/Contents/MacOS
143         mkdir -p $(DESTPREFIX)/$(PRODUCT)/Contents/Resources
144         cp -f Info.plist $(DESTPREFIX)/$(PRODUCT)/Contents
145         echo -n "APPL????" > $(DESTPREFIX)/$(PRODUCT)/Contents/PkgInfo
146         cp -r ../Scripts $(DESTPREFIX)/$(PRODUCT)/Contents/Resources
147         cp -r amber11 $(DESTPREFIX)/$(PRODUCT)/Contents/Resources
148         cp -r mopac $(DESTPREFIX)/$(PRODUCT)/Contents/Resources
149         cp -r ortep3 $(DESTPREFIX)/$(PRODUCT)/Contents/Resources
150         mkdir -p $(DESTPREFIX)/$(PRODUCT)/Contents/Resources/Scripts/lib
151         for i in $(RUBY_EXTLIB); do cp $(RUBY_DIR)/lib/$$i $(DESTPREFIX)/$(PRODUCT)/Contents/Resources/Scripts/lib; done
152         cp $(DESTPREFIX)/$(EXECUTABLE) $(DESTPREFIX)/$(PRODUCT)/Contents/MacOS
153 endif
154 ifeq ($(TARGET_PLATFORM),MSW)
155         rm -rf $(DESTPREFIX)/$(PRODUCT_DIR)
156         mkdir -p $(DESTPREFIX)/$(PRODUCT_DIR)
157         cp $(DESTPREFIX)/$(EXECUTABLE) $(DESTPREFIX)/$(PRODUCT_DIR)/$(FINAL_EXECUTABLE)
158         cp `which mingwm10.dll` $(DESTPREFIX)/$(PRODUCT_DIR)
159         cp -r ../Scripts $(DESTPREFIX)/$(PRODUCT_DIR)
160         cp -r amber11 $(DESTPREFIX)/$(PRODUCT_DIR)
161         cp -r mopac $(DESTPREFIX)/$(PRODUCT_DIR)
162         cp -r ortep3 $(DESTPREFIX)/$(PRODUCT_DIR)
163         mkdir -p $(DESTPREFIX)/$(PRODUCT_DIR)/Scripts/lib
164         for i in $(RUBY_EXTLIB); do cp $(RUBY_DIR)/lib/$$i $(DESTPREFIX)/$(PRODUCT_DIR)/Scripts/lib; done
165 endif
166
167 ifeq ($(TARGET_PLATFORM),MSW)
168 setup: build/release/$(PRODUCT_DIR)/$(FINAL_EXECUTABLE)
169         /c/Program\ Files\ \(x86\)/Inno\ Setup\ 5/iscc molby.iss
170 endif
171
172 clean:
173         rm -f $(DESTPREFIX)/*.o $(DESTPREFIX)/*.a $(DESTPREFIX)/$(EXECUTABLE)
174         rm -rf $(DESTPREFIX)/$(PRODUCT_DIR)
175         rm -f $(DESTPREFIX)/MolLib/*.o
176         rm -f $(DESTPREFIX)/MolLib/MD/*.o
177         rm -f $(DESTPREFIX)/MolLib/Ruby_bind/*.o
178
179 #       rm -f $(EXECUTABLE) $(OBJECTS)
180 #       rm -rf $(PRODUCT)
181 #       cd ../MolLib; $(MAKE) clean
182 #       cd ../MolLib/Ruby_bind; $(MAKE) clean
183