| [0b990d] | 1 | # Emacs should use -*- Makefile -*- mode. | 
|---|
|  | 2 |  | 
|---|
|  | 3 | ################################################# | 
|---|
|  | 4 | # | 
|---|
|  | 5 | # the user can specify the following targets | 
|---|
|  | 6 | # | 
|---|
|  | 7 | #  install_inc:: | 
|---|
|  | 8 | #    installs the include files | 
|---|
|  | 9 | # | 
|---|
|  | 10 | #  default:: | 
|---|
|  | 11 | # | 
|---|
|  | 12 | # the user must define the following: | 
|---|
|  | 13 | # | 
|---|
|  | 14 | # | 
|---|
|  | 15 | # TARGET_TO_MAKE | 
|---|
|  | 16 | # | 
|---|
|  | 17 | # BIN_OR_LIB = BIN or LIB | 
|---|
|  | 18 | # | 
|---|
|  | 19 | # TRUESRC | 
|---|
|  | 20 | # | 
|---|
|  | 21 | # DEPENDINCLUDE | 
|---|
|  | 22 | # | 
|---|
|  | 23 | # TRUEINCLUDES | 
|---|
|  | 24 | # | 
|---|
|  | 25 | # OTHERFILES | 
|---|
|  | 26 | # | 
|---|
|  | 27 | # LIBOBJ | 
|---|
|  | 28 | # BINOBJ | 
|---|
|  | 29 | # | 
|---|
|  | 30 | # LIBS | 
|---|
|  | 31 | # | 
|---|
|  | 32 | # SABER_FILES | 
|---|
|  | 33 | # | 
|---|
|  | 34 | ################################################# | 
|---|
|  | 35 |  | 
|---|
|  | 36 | .PHONY: default install install_devel install_inc install_target clean | 
|---|
|  | 37 |  | 
|---|
|  | 38 | default:: | 
|---|
|  | 39 |  | 
|---|
|  | 40 | install:: | 
|---|
|  | 41 |  | 
|---|
|  | 42 | install_devel:: | 
|---|
|  | 43 |  | 
|---|
|  | 44 | .PHONY: testbuild testrun | 
|---|
|  | 45 |  | 
|---|
|  | 46 | testbuild: $(TESTPROGS) | 
|---|
|  | 47 |  | 
|---|
|  | 48 | testrun: $(TESTPROGS:%=%.testrun) | 
|---|
|  | 49 |  | 
|---|
|  | 50 | # The target specific variable can be set to control testrun: | 
|---|
|  | 51 | # To skip testrun: | 
|---|
|  | 52 | #   %.testrun: DO_TESTRUN=no | 
|---|
|  | 53 | # To give arguments to the command | 
|---|
|  | 54 | #   %.testrun: TESTRUN_ARGS=arglist | 
|---|
|  | 55 | %.testrun: % | 
|---|
|  | 56 | if test "$(DO_TESTRUN)" != no; then \ | 
|---|
|  | 57 | echo ----------- Running $< $(TESTRUN_ARGS) -----------; \ | 
|---|
|  | 58 | if test -f $(SRCDIR)/$<.out; then \ | 
|---|
|  | 59 | ./$< $(TESTRUN_ARGS) > $<.out.testrun 2>&1 || exit 1; \ | 
|---|
|  | 60 | diff -u $<.out.testrun $(SRCDIR)/$<.out || exit 1; \ | 
|---|
|  | 61 | else \ | 
|---|
|  | 62 | ./$< $(TESTRUN_ARGS) || exit 1; \ | 
|---|
|  | 63 | fi \ | 
|---|
|  | 64 | else \ | 
|---|
|  | 65 | echo ----------- Skipping run of $< -----------; \ | 
|---|
|  | 66 | fi | 
|---|
|  | 67 |  | 
|---|
|  | 68 | ifeq ($(BIN_OR_LIB),LIB) | 
|---|
|  | 69 |  | 
|---|
|  | 70 | ifeq ($(TMPLINLIB),yes) | 
|---|
|  | 71 |  | 
|---|
|  | 72 | $(TOPDIR)/lib/$(TARGET_TO_MAKE).a: $(LIBOBJ) | 
|---|
|  | 73 | /bin/rm -f $@ | 
|---|
|  | 74 | $(AR) $(ARFLAGS) $@ $^ $(wildcard $(TMPLREPO)/*.o) | 
|---|
|  | 75 | $(RANLIB) $@ | 
|---|
|  | 76 |  | 
|---|
|  | 77 | $(TOPDIR)/lib/$(TARGET_TO_MAKE).la: $(LIBOBJ) | 
|---|
|  | 78 | $(LTLINK) $(CXX) -o $@ $^ $(wildcard $(TMPLREPO)/*.o) $(LTLINKLIBOPTS) | 
|---|
|  | 79 |  | 
|---|
|  | 80 | else | 
|---|
|  | 81 |  | 
|---|
|  | 82 | ifeq ($(TMPLINST),yes) | 
|---|
|  | 83 |  | 
|---|
|  | 84 | SCLIBS := $(shell $(LISTLIBS) $(INCLUDE) $(SRCDIR)/LIBS.h) | 
|---|
|  | 85 | SCLIBSOTHER := $(SCLIBS:$(TARGET_TO_MAKE).$(LIBSUF)=) | 
|---|
|  | 86 | SCLIBSEXIST := $(wildcard $(SCLIBSOTHER:%=$(TOPDIR)/lib/%)) | 
|---|
|  | 87 |  | 
|---|
|  | 88 | $(TOPDIR)/lib/$(TARGET_TO_MAKE).a: $(LIBOBJ) $(SCLIBSEXIST) | 
|---|
|  | 89 | @echo "Doing template instantiations (expect errors)." | 
|---|
|  | 90 | -$(LD) $(LDFLAGS) -o a.out.tmplinst $^ $(SYSLIBS) 2> /dev/null | 
|---|
|  | 91 | /bin/rm -f a.out.tmplinst | 
|---|
|  | 92 | @echo "Finished template instantiations (errors were expected)." | 
|---|
|  | 93 | /bin/rm -f $@ | 
|---|
|  | 94 | $(AR) $(ARFLAGS) $@ $(LIBOBJ) | 
|---|
|  | 95 | $(RANLIB) $@ | 
|---|
|  | 96 |  | 
|---|
|  | 97 | else | 
|---|
|  | 98 |  | 
|---|
|  | 99 | $(TOPDIR)/lib/$(TARGET_TO_MAKE).a: $(LIBOBJ) | 
|---|
|  | 100 | /bin/rm -f $@ | 
|---|
|  | 101 | $(AR) $(ARFLAGS) $@ $(LIBOBJ) | 
|---|
|  | 102 | $(RANLIB) $@ | 
|---|
|  | 103 |  | 
|---|
|  | 104 | endif | 
|---|
|  | 105 |  | 
|---|
|  | 106 | $(TOPDIR)/lib/$(TARGET_TO_MAKE).la: $(LIBOBJ) | 
|---|
|  | 107 | $(LTLINK) $(CXX) -o $@ $^ $(LTLINKLIBOPTS) | 
|---|
|  | 108 |  | 
|---|
|  | 109 | endif | 
|---|
|  | 110 |  | 
|---|
|  | 111 | default:: $(TOPDIR)/lib/$(TARGET_TO_MAKE).$(LIBSUF) | 
|---|
|  | 112 |  | 
|---|
|  | 113 | ifneq ($(ENABLESHARED),yes) | 
|---|
|  | 114 |  | 
|---|
|  | 115 | install_devel:: install_inc install_target | 
|---|
|  | 116 |  | 
|---|
|  | 117 | install:: | 
|---|
|  | 118 |  | 
|---|
|  | 119 | endif | 
|---|
|  | 120 |  | 
|---|
|  | 121 | ifeq ($(ENABLESHARED),yes) | 
|---|
|  | 122 |  | 
|---|
|  | 123 | install_devel:: install_inc | 
|---|
|  | 124 |  | 
|---|
|  | 125 | install:: install_target | 
|---|
|  | 126 |  | 
|---|
|  | 127 | endif | 
|---|
|  | 128 |  | 
|---|
|  | 129 | install_inc:: | 
|---|
|  | 130 | $(INSTALL) $(INSTALLDIROPT) $(installroot)$(includedir)/$(SRCDIR:$(SRCTOPDIR)/src/lib/%=%) | 
|---|
|  | 131 | -$(INSTALL) $(INSTALLLIBOPT) $(SRCDIR)/*.h $(installroot)$(includedir)/$(SRCDIR:$(SRCTOPDIR)/src/lib/%=%) | 
|---|
|  | 132 | -$(INSTALL) $(INSTALLLIBOPT) *.h $(installroot)$(includedir)/$(SRCDIR:$(SRCTOPDIR)/src/lib/%=%) | 
|---|
|  | 133 |  | 
|---|
|  | 134 | install_target:: $(TOPDIR)/lib/$(TARGET_TO_MAKE).$(LIBSUF) | 
|---|
|  | 135 | $(INSTALL) $(INSTALLDIROPT) $(installroot)$(libdir) | 
|---|
|  | 136 | $(LTINST) $(INSTALL) $(INSTALLLIBOPT) $< $(installroot)$(libdir) | 
|---|
|  | 137 | endif | 
|---|
|  | 138 |  | 
|---|
|  | 139 | ifeq ($(BIN_OR_LIB),BIN) | 
|---|
|  | 140 |  | 
|---|
|  | 141 | $(TARGET_TO_MAKE): $(BINOBJ) $(LIBS) | 
|---|
|  | 142 | $(LD) $(LDFLAGS) $^ -o $(@F) $(SYSLIBS) | 
|---|
|  | 143 |  | 
|---|
|  | 144 | install_devel:: | 
|---|
|  | 145 |  | 
|---|
|  | 146 | install:: install_target | 
|---|
|  | 147 |  | 
|---|
|  | 148 | install_target:: $(TARGET_TO_MAKE) | 
|---|
|  | 149 | $(INSTALL) $(INSTALLDIROPT) $(installroot)$(bindir) | 
|---|
|  | 150 | $(LTINST) $(INSTALL) $(INSTALLBINOPT) $(TARGET_TO_MAKE) $(installroot)$(bindir) | 
|---|
|  | 151 |  | 
|---|
|  | 152 | endif | 
|---|
|  | 153 |  | 
|---|
|  | 154 | %.$(OBJSUF): %.c | 
|---|
|  | 155 | $(CC) $(CPPFLAGS) $(CFLAGS) -c $< $(OUTPUT_OPTION) | 
|---|
|  | 156 |  | 
|---|
|  | 157 | %.lo: %.c | 
|---|
|  | 158 | $(LTCOMP) $(CC) $(CPPFLAGS) $(CFLAGS) -c $< $(OUTPUT_OPTION) | 
|---|
|  | 159 |  | 
|---|
|  | 160 | ifneq ($(OBJSUF),lo) | 
|---|
|  | 161 |  | 
|---|
|  | 162 | %.$(OBJSUF): %.f | 
|---|
|  | 163 | $(FC) $(FFLAGS) -c $< $(OUTPUT_OPTION) | 
|---|
|  | 164 |  | 
|---|
|  | 165 | %.$(OBJSUF): %.C | 
|---|
|  | 166 | $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< $(OUTPUT_OPTION) | 
|---|
|  | 167 |  | 
|---|
|  | 168 | %.$(OBJSUF): %.cc | 
|---|
|  | 169 | $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< $(OUTPUT_OPTION) | 
|---|
|  | 170 |  | 
|---|
|  | 171 | endif | 
|---|
|  | 172 |  | 
|---|
|  | 173 | %.lo: %.C | 
|---|
|  | 174 | $(LTCOMP) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< $(OUTPUT_OPTION) | 
|---|
|  | 175 |  | 
|---|
|  | 176 | %.lo: %.cc | 
|---|
|  | 177 | $(LTCOMP) $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< $(OUTPUT_OPTION) | 
|---|
|  | 178 |  | 
|---|
|  | 179 | %.lo: %.f | 
|---|
|  | 180 | $(LTCOMP) $(FC) $(FFLAGS) -c $< $(OUTPUT_OPTION) | 
|---|
|  | 181 |  | 
|---|
|  | 182 | # | 
|---|
|  | 183 | # cleans | 
|---|
|  | 184 | # | 
|---|
|  | 185 | clean:: oclean targetclean dclean miscclean | 
|---|
|  | 186 |  | 
|---|
|  | 187 | distclean:: oclean targetclean dclean genclean miscclean | 
|---|
|  | 188 |  | 
|---|
|  | 189 | miscclean:: | 
|---|
|  | 190 | -rm -f *~ | 
|---|
|  | 191 |  | 
|---|
|  | 192 | oclean:: | 
|---|
|  | 193 | -rm -rf *.o $(TMPLREPO) cxx_tmpl_repo ti_files *.lo | 
|---|
|  | 194 | -rm -rf *.rpo | 
|---|
|  | 195 | -rm -rf .libs | 
|---|
|  | 196 |  | 
|---|
|  | 197 | dclean:: | 
|---|
|  | 198 | -rm -f *.d | 
|---|
|  | 199 |  | 
|---|
|  | 200 | genclean:: | 
|---|
|  | 201 | ifdef GENINC | 
|---|
|  | 202 | -rm -f $(GENINC) | 
|---|
|  | 203 | endif | 
|---|
|  | 204 | ifdef GENSRC | 
|---|
|  | 205 | -rm -f $(GENSRC) | 
|---|
|  | 206 | endif | 
|---|
|  | 207 |  | 
|---|
|  | 208 | targetclean:: | 
|---|
|  | 209 | ifdef TARGET_TO_MAKE | 
|---|
|  | 210 | ifeq ($(BIN_OR_LIB),BIN) | 
|---|
|  | 211 | -rm -f $(TARGET_TO_MAKE) | 
|---|
|  | 212 | endif | 
|---|
|  | 213 | ifeq ($(BIN_OR_LIB),LIB) | 
|---|
|  | 214 | -rm -f $(TARGET_TO_MAKE).a | 
|---|
|  | 215 | endif | 
|---|
|  | 216 | endif | 
|---|
|  | 217 |  | 
|---|
|  | 218 | targetclean:: | 
|---|
|  | 219 | -rm -f $(TESTPROGS) $(TESTPROGS:%=%.out.testrun) | 
|---|
|  | 220 |  | 
|---|
|  | 221 | testclean:: | 
|---|
|  | 222 | /bin/rm -f $(TESTPROGS) $(TESTPROGS:%=%.out.testrun) | 
|---|
|  | 223 |  | 
|---|
|  | 224 | # | 
|---|
|  | 225 | # dependencies | 
|---|
|  | 226 | # | 
|---|
|  | 227 |  | 
|---|
|  | 228 | ifneq ($(CCDEPENDSUF),none) | 
|---|
|  | 229 | %.d: %.c | 
|---|
|  | 230 | $(CCDEPEND) $(CCDEPENDFLAGS) -c $(CPPFLAGS) $(CFLAGS) $< > /dev/null | 
|---|
|  | 231 | sed 's/^$*.o/$*.$(OBJSUF) $*.d/g' < $(*F).$(CCDEPENDSUF) > $(@F) | 
|---|
|  | 232 | /bin/rm -f $(*F).$(CCDEPENDSUF) | 
|---|
|  | 233 | else | 
|---|
|  | 234 | %.d: %.c | 
|---|
|  | 235 | $(CCDEPEND) $(CCDEPENDFLAGS) -c $(CPPFLAGS) $(CFLAGS) $< | sed 's/^$*.o/$*.$(OBJSUF) $*.d/g' > $(@F) | 
|---|
|  | 236 | endif | 
|---|
|  | 237 |  | 
|---|
|  | 238 | ifneq ($(CXXDEPENDSUF),none) | 
|---|
|  | 239 | %.d: %.cc | 
|---|
|  | 240 | $(CXXDEPEND) $(CXXDEPENDFLAGS) -c $(CPPFLAGS) $(CXXFLAGS) $< > /dev/null | 
|---|
|  | 241 | sed 's/^$*.o/$*.$(OBJSUF) $*.d/g' < $(*F).$(CXXDEPENDSUF) > $(@F) | 
|---|
|  | 242 | /bin/rm -f $(*F).$(CXXDEPENDSUF) | 
|---|
|  | 243 | else | 
|---|
|  | 244 | %.d: %.cc | 
|---|
|  | 245 | $(CXXDEPEND) $(CXXDEPENDFLAGS) -c $(CPPFLAGS) $(CXXFLAGS) $< | sed 's/^$*.o/$*.$(OBJSUF) $*.d/g' > $(@F) | 
|---|
|  | 246 | endif | 
|---|
|  | 247 |  | 
|---|
|  | 248 | # | 
|---|
|  | 249 | # sometimes it's nice to get assembler source | 
|---|
|  | 250 | # | 
|---|
|  | 251 | %.s: %.c | 
|---|
|  | 252 | $(CC) $(CPPFLAGS) $(CFLAGS) -S $< | 
|---|
|  | 253 |  | 
|---|
|  | 254 | %.s: %.cc | 
|---|
|  | 255 | $(CXX) $(CPPFLAGS) $(CXXFLAGS) -S $< | 
|---|
|  | 256 |  | 
|---|
|  | 257 | # | 
|---|
|  | 258 | # sometimes it's nice to get preprocessed source | 
|---|
|  | 259 | # | 
|---|
|  | 260 | %.i: %.c | 
|---|
|  | 261 | $(CC) $(CPPFLAGS) $(CFLAGS) -E $< -o $@ | 
|---|
|  | 262 |  | 
|---|
|  | 263 | %.ii: %.cc | 
|---|
|  | 264 | $(CXX) $(CPPFLAGS) $(CXXFLAGS) -E $< -o $@ | 
|---|
|  | 265 |  | 
|---|
|  | 266 | values:: | 
|---|
|  | 267 | @echo TOPDIR=$(TOPDIR) | 
|---|
|  | 268 | @echo SRCDIR=$(SRCDIR) | 
|---|
|  | 269 | @echo VPATH=$(VPATH) | 
|---|
|  | 270 | @echo BIN_OR_LIB=$(BIN_OR_LIB) | 
|---|
|  | 271 | @echo TARGET_TO_MAKE=$(TARGET_TO_MAKE) | 
|---|
|  | 272 | ifdef LIBS | 
|---|
|  | 273 | @echo LIBS=$(LIBS) | 
|---|
|  | 274 | endif | 
|---|
|  | 275 | ifeq ($(BIN_OR_LIB),LIB) | 
|---|
|  | 276 | @echo LIBOBJ=$(LIBOBJ) | 
|---|
|  | 277 | endif | 
|---|
|  | 278 | ifeq ($(BIN_OR_LIB),BIN) | 
|---|
|  | 279 | @echo BINOBJ=$(BINOBJ) | 
|---|
|  | 280 | endif | 
|---|
|  | 281 |  | 
|---|
|  | 282 | # | 
|---|
|  | 283 | # rules for cca component code | 
|---|
|  | 284 | # | 
|---|
|  | 285 |  | 
|---|
|  | 286 | $(GEN_SRCS): .babel-stamp | 
|---|
|  | 287 | @if test -f $@; then \ | 
|---|
|  | 288 | touch $@; \ | 
|---|
|  | 289 | else \ | 
|---|
|  | 290 | rm -f .babel-stamp; \ | 
|---|
|  | 291 | $(MAKE) .babel-stamp; \ | 
|---|
|  | 292 | fi | 
|---|
|  | 293 |  | 
|---|
|  | 294 | $(EXTRA_CXX_SRCS): .babel-stamp | 
|---|
|  | 295 |  | 
|---|
|  | 296 | .babel-stamp: $(SIDL_FILES) | 
|---|
|  | 297 | @rm -f .babel-stamp .babel-temp; touch .babel-temp | 
|---|
|  | 298 | for i in $(IMPLHDRS) $(IMPLSRCS) $(EXTRA_CXX_SRCS) $(EXTRA_INCLUDES); \ | 
|---|
|  | 299 | do \ | 
|---|
|  | 300 | if test ! -e $${i}; then \ | 
|---|
|  | 301 | ln -s $(SRCDIR)/$${i}; \ | 
|---|
|  | 302 | fi; \ | 
|---|
|  | 303 | done | 
|---|
|  | 304 | $(INSTALL) $(INSTALLDIROPT) $(REPO) | 
|---|
|  | 305 | /bin/rm -f $(REPO)/MPQC* | 
|---|
|  | 306 | $(BABEL) -e'^sidl.*' -e'^gov.*' \ | 
|---|
|  | 307 | -R$(CCA_CHEM_REPO) -R$(CCA_SPEC_BABEL_SHARE)/xml \ | 
|---|
|  | 308 | -R$(CCAFE_SHARE)/xml --text=xml -o$(REPO) $(SIDL_FILES) | 
|---|
|  | 309 | $(BABEL) $(BABEL_ARGS) $(BABEL_PACKAGES) $(BABEL_ENUMS) \ | 
|---|
|  | 310 | $(BABEL_CLASSES) | 
|---|
|  | 311 | @mv -f .babel-temp $@ | 
|---|
|  | 312 |  | 
|---|
|  | 313 | clean-components: oclean targetclean dclean miscclean | 
|---|
|  | 314 | rm -f $(IORHDRS) $(IORSRCS) $(STUBHDRS) $(STUBSRCS) \ | 
|---|
|  | 315 | $(SKELHDRS) $(SKELSRCS) | 
|---|
|  | 316 | rm -f babel.make .babel-stamp | 
|---|
|  | 317 | for i in $(IMPLHDRS) $(IMPLSRCS) $(EXTRA_CXX_SRCS) $(EXTRA_INCLUDES); \ | 
|---|
|  | 318 | do \ | 
|---|
|  | 319 | if test -L $${i}; then \ | 
|---|
|  | 320 | /bin/rm $${i}; \ | 
|---|
|  | 321 | fi; \ | 
|---|
|  | 322 | done | 
|---|