| [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
 | 
|---|