OSDN Git Service

'Filter' mode is implemented (experimentally)
[molby/Molby.git] / Makefile
1 ifeq ($(TARGET_PLATFORM),MAC)
2  WXCONFIG_PREFIX = $(HOME)/Development/wxMac/osx-build/
3  CPP_EXTRA_FLAGS = -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch ppc -arch i386 -DUSE_RUBY=1 -g
4  LD_EXTRA_FLAGS = -framework Accelerate -framework GLUT
5  RUBY_DIR = $(HOME)/Development/ruby-1.8.7-static
6  RUBY_CFLAGS = -I$(RUBY_DIR)
7  RUBY_LDFLAGS = -L$(RUBY_DIR) -lruby-static
8  EXECUTABLE = Molby
9 endif
10
11 ifeq ($(TARGET_PLATFORM),MSW)
12  WXCONFIG_PREFIX = $(HOME)/wxMSW-2.8.9/msw-build/
13  CPP_EXTRA_FLAGS = -O2 -I/lib/clapack -g
14  LD_EXTRA_FLAGS = -L/lib/clapack -llapack -lblas -lf2c_nomain
15  RUBY_DIR = $(HOME)/ruby-1.8.7-static
16  RUBY_CFLAGS = -I$(RUBY_DIR)
17 # RUBY_LDFLAGS = -L$(RUBY_DIR) -lruby-static /c/Ruby/bin/msvcrt-ruby18.dll
18  RUBY_LDFLAGS = -L$(RUBY_DIR) -lmsvcrt-ruby18-static -lws2_32
19  EXECUTABLE = _Molby.exe_
20  FINAL_EXECUTABLE = Molby.exe
21 endif
22
23 WXLIB_LIST = core,base,gl,adv
24 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 docview.o RubyDialogFrame.o MyIPCSupport.o MyVersion.o MyThread.o
25 LIBS = MolLib.a Ruby_bind.a
26 RUBY_EXTLIB = scanf.rb
27
28 ifeq ($(TARGET_PLATFORM),MAC)
29 PRODUCT = Molby.app
30 else
31 PRODUCT_DIR = Molby
32 PRODUCT = $(PRODUCT_DIR)/$(EXECUTABLE)
33 endif
34
35 CC = g++
36 CFLAGS = $(CPPFLAGS) $(CPP_EXTRA_FLAGS) $(RUBY_CFLAGS) $(shell $(WXCONFIG_PREFIX)wx-config --cppflags)
37 LDFLAGS = $(shell $(WXCONFIG_PREFIX)wx-config --libs $(WXLIB_LIST)) $(LD_EXTRA_FLAGS) $(RUBY_LDFLAGS)
38 DESTPREFIX = build
39 DESTDIR = $(PWD)/$(DESTPREFIX)
40 export CFLAGS
41 export LDFLAGS
42 export DESTDIR
43
44 all: $(DESTPREFIX) $(DESTPREFIX)/$(PRODUCT)
45
46 $(DESTPREFIX) :
47         mkdir -p $(DESTPREFIX)
48
49 amber11 : ../amber11/src/antechamber/*.[ch] ../amber11/src/sqm/*.f ../amber11/src/config.h
50         make -f ../Makefile_amber11
51
52 ifeq ($(TARGET_PLATFORM),MSW)
53 EXTRA_OBJECTS = listctrl.o event.o
54 RESOURCE = molby_rc.o
55 #  The following HOMETEMP kludges are to work around a bug where '#include "..."' 
56 #  does not work when the include path is on the C: drive whereas the source is 
57 #  on the Z: drive. 2009.7.24. Toshi Nagata
58 HOMETEMP = $(HOME)/__molby_temp_build__
59 $(DESTPREFIX)/$(RESOURCE) : molby.rc
60         mkdir -p $(HOMETEMP)/msw_build $(HOMETEMP)/bitmaps
61         cp molby.rc $(HOMETEMP)/msw_build
62         cp ../bitmaps/*.ico $(HOMETEMP)/bitmaps
63         (cd $(HOMETEMP)/msw_build; windres -i molby.rc -o molby_rc.o -I$(HOME)/wxMSW-2.8.9/include)
64         cp $(HOMETEMP)/msw_build/molby_rc.o $@
65         rm -rf $(HOMETEMP)
66 endif
67
68 depend: cleandep $(DESTPREFIX) $(OBJECTS:%.o=$(DESTPREFIX)/%.d) $(EXTRA_OBJECTS:%.o=$(DESTPREFIX)/%.d)
69         cat $(DESTPREFIX)/*.d > $(DESTPREFIX)/Makefile.depend
70
71 cleandep:
72         rm -f $(DESTPREFIX)/Makefile.depend
73
74 -include $(DESTPREFIX)/Makefile.depend
75
76 $(DESTPREFIX)/%.d : ../wxSources/%.cpp
77         $(CC) -MM $< >$@ $(subst -arch ppc,,$(CFLAGS))
78
79 $(DESTPREFIX)/%.d : ../wxSources/%.c
80         $(CC) -MM $< >$@ $(subst -arch ppc,,$(CFLAGS))
81
82 $(DESTPREFIX)/%.o : ../wxSources/%.cpp
83         $(CC) -c $< -o $@ $(CFLAGS)
84
85 $(DESTPREFIX)/%.o : ../wxSources/%.c
86         $(CC) -c $< -o $@ $(CFLAGS)
87
88 $(DESTPREFIX)/MolLib.a : ../MolLib/*.[ch] ../MolLib/MD/*.[ch]
89         mkdir -p $(DESTPREFIX)/MolLib/MD; cd ../MolLib; $(MAKE)
90
91 $(DESTPREFIX)/Ruby_bind.a : ../MolLib/Ruby_bind/*.[ch]
92         mkdir -p $(DESTPREFIX)/MolLib/Ruby_bind; cd ../MolLib/Ruby_bind; $(MAKE)
93
94 ALL_OBJECTS = $(OBJECTS) $(EXTRA_OBJECTS) $(LIBS) $(RESOURCE)
95 DESTOBJECTS = $(addprefix $(DESTPREFIX)/,$(ALL_OBJECTS))
96 $(DESTPREFIX)/$(EXECUTABLE) : $(DESTOBJECTS)
97         $(CC) -o $@ $(DESTOBJECTS) $(CFLAGS) $(LDFLAGS)
98
99 $(DESTPREFIX)/$(PRODUCT) : $(DESTPREFIX)/$(EXECUTABLE) ../Scripts/*.rb amber11
100 ifeq ($(TARGET_PLATFORM),MAC)
101         sh ../record_build_date.sh --with-svn-status
102         rm -rf $(DESTPREFIX)/$(PRODUCT)
103         mkdir -p $(DESTPREFIX)/$(PRODUCT)/Contents/MacOS
104         mkdir -p $(DESTPREFIX)/$(PRODUCT)/Contents/Resources
105         cp -f Info.plist $(DESTPREFIX)/$(PRODUCT)/Contents
106         cp -f buildInfo.txt $(DESTPREFIX)/$(PRODUCT)/Contents/Resources
107         cp -f ../revisionInfo.txt $(DESTPREFIX)/$(PRODUCT)/Contents/Resources
108         echo -n "APPL????" > $(DESTPREFIX)/$(PRODUCT)/Contents/PkgInfo
109         cp -r ../Scripts $(DESTPREFIX)/$(PRODUCT)/Contents/Resources
110         cp -r amber11 $(DESTPREFIX)/$(PRODUCT)/Contents/Resources
111         mkdir -p $(DESTPREFIX)/$(PRODUCT)/Contents/Resources/Scripts/lib
112         for i in $(RUBY_EXTLIB); do cp $(RUBY_DIR)/lib/$$i $(DESTPREFIX)/$(PRODUCT)/Contents/Resources/Scripts/lib; done
113         cp $(DESTPREFIX)/$(EXECUTABLE) $(DESTPREFIX)/$(PRODUCT)/Contents/MacOS
114 endif
115 ifeq ($(TARGET_PLATFORM),MSW)
116         sh ../record_build_date.sh
117         rm -rf $(DESTPREFIX)/$(PRODUCT_DIR)
118         mkdir -p $(DESTPREFIX)/$(PRODUCT_DIR)
119         cp $(DESTPREFIX)/$(EXECUTABLE) $(DESTPREFIX)/$(PRODUCT_DIR)/$(FINAL_EXECUTABLE)
120         cp `which mingwm10.dll` $(DESTPREFIX)/$(PRODUCT_DIR)
121         cp -f buildInfo.txt $(DESTPREFIX)/$(PRODUCT_DIR)
122         if [ -e ../revisionInfo.txt ]; then cp -f ../revisionInfo.txt $(DESTPREFIX)/$(PRODUCT_DIR); fi
123         cp -r ../Scripts $(DESTPREFIX)/$(PRODUCT_DIR)
124         cp -r amber11 $(DESTPREFIX)/$(PRODUCT_DIR)
125         mkdir -p $(DESTPREFIX)/$(PRODUCT_DIR)/Scripts/lib
126         for i in $(RUBY_EXTLIB); do cp $(RUBY_DIR)/lib/$$i $(DESTPREFIX)/$(PRODUCT_DIR)/Scripts/lib; done
127 endif
128
129 ifeq ($(TARGET_PLATFORM),MSW)
130 setup: $(DESTPREFIX)/$(PRODUCT_DIR)/$(FINAL_EXECUTABLE)
131         /c/Program\ Files/Inno\ Setup\ 5/iscc molby.iss
132 endif
133
134 clean:
135         rm -rf $(DESTPREFIX)
136 #       rm -f $(EXECUTABLE) $(OBJECTS)
137 #       rm -rf $(PRODUCT)
138 #       cd ../MolLib; $(MAKE) clean
139 #       cd ../MolLib/Ruby_bind; $(MAKE) clean
140