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