1# file : examples/cxx/parser/multiroot/makefile 2# copyright : Copyright (c) 2005-2017 Code Synthesis Tools CC 3# license : GNU GPL v2 + exceptions; see accompanying LICENSE file 4 5include $(dir $(lastword $(MAKEFILE_LIST)))../../../../build/bootstrap.make 6 7xsd := protocol.xsd 8cxx := driver.cxx protocol-pimpl.cxx 9 10obj := $(addprefix $(out_base)/,$(cxx:.cxx=.o) $(xsd:.xsd=-pskel.o)) 11dep := $(obj:.o=.o.d) 12 13driver := $(out_base)/driver 14install := $(out_base)/.install 15dist := $(out_base)/.dist 16dist-win := $(out_base)/.dist-win 17clean := $(out_base)/.clean 18 19 20# Import. 21# 22$(call import,\ 23 $(scf_root)/import/libxerces-c/stub.make,\ 24 l: xerces_c.l,cpp-options: xerces_c.l.cpp-options) 25 26 27# Build. 28# 29$(driver): $(obj) $(xerces_c.l) 30 31$(obj) $(dep): cpp_options := -I$(out_base) -I$(src_base) -I$(src_root)/libxsd 32$(obj) $(dep): $(xerces_c.l.cpp-options) 33 34genf := $(xsd:.xsd=-pskel.hxx) $(xsd:.xsd=-pskel.ixx) $(xsd:.xsd=-pskel.cxx) 35gen := $(addprefix $(out_base)/,$(genf)) 36 37$(gen): xsd := $(out_root)/xsd/xsd 38$(gen): xsd_options += --type-map $(src_base)/protocol.map 39$(gen): $(out_root)/xsd/xsd $(src_base)/protocol.map 40 41$(call include-dep,$(dep),$(obj),$(gen)) 42 43# Convenience alias for default target. 44# 45$(out_base)/: $(driver) 46 47 48# Install & Dist. 49# 50dist-common := $(out_base)/.dist-common 51 52$(install) $(dist) $(dist-win) $(dist-common): path := $(subst $(src_root)/,,$(src_base)) 53 54$(install): 55 $(call install-data,$(src_base)/README,$(install_doc_dir)/xsd/$(path)/README) 56 $(call install-data,$(src_base)/driver.cxx,$(install_doc_dir)/xsd/$(path)/driver.cxx) 57 $(call install-data,$(src_base)/protocol.xsd,$(install_doc_dir)/xsd/$(path)/protocol.xsd) 58 $(call install-data,$(src_base)/balance.xml,$(install_doc_dir)/xsd/$(path)/balance.xml) 59 $(call install-data,$(src_base)/deposit.xml,$(install_doc_dir)/xsd/$(path)/deposit.xml) 60 $(call install-data,$(src_base)/withdraw.xml,$(install_doc_dir)/xsd/$(path)/withdraw.xml) 61 $(call install-data,$(src_base)/protocol.map,$(install_doc_dir)/xsd/$(path)/protocol.map) 62 $(call install-data,$(src_base)/protocol.hxx,$(install_doc_dir)/xsd/$(path)/protocol.hxx) 63 $(call install-data,$(src_base)/protocol-pimpl.hxx,$(install_doc_dir)/xsd/$(path)/protocol-pimpl.hxx) 64 $(call install-data,$(src_base)/protocol-pimpl.cxx,$(install_doc_dir)/xsd/$(path)/protocol-pimpl.cxx) 65 66$(dist-common): 67 $(call install-data,$(src_base)/driver.cxx,$(dist_prefix)/$(path)/driver.cxx) 68 $(call install-data,$(src_base)/protocol.xsd,$(dist_prefix)/$(path)/protocol.xsd) 69 $(call install-data,$(src_base)/balance.xml,$(dist_prefix)/$(path)/balance.xml) 70 $(call install-data,$(src_base)/deposit.xml,$(dist_prefix)/$(path)/deposit.xml) 71 $(call install-data,$(src_base)/withdraw.xml,$(dist_prefix)/$(path)/withdraw.xml) 72 $(call install-data,$(src_base)/protocol.map,$(dist_prefix)/$(path)/protocol.map) 73 $(call install-data,$(src_base)/protocol.hxx,$(dist_prefix)/$(path)/protocol.hxx) 74 $(call install-data,$(src_base)/protocol-pimpl.hxx,$(dist_prefix)/$(path)/protocol-pimpl.hxx) 75 $(call install-data,$(src_base)/protocol-pimpl.cxx,$(dist_prefix)/$(path)/protocol-pimpl.cxx) 76 77$(dist): $(dist-common) 78 $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README) 79 80$(dist-win): $(dist-common) 81 $(call install-data,$(src_base)/README,$(dist_prefix)/$(path)/README.txt) 82 $(call message,,todos $(dist_prefix)/$(path)/README.txt) 83 84# Clean. 85# 86$(clean): $(driver).o.clean \ 87 $(addsuffix .cxx.clean,$(obj)) \ 88 $(addsuffix .cxx.clean,$(dep)) \ 89 $(addprefix $(out_base)/,$(xsd:.xsd=-pskel.cxx.xsd.clean)) 90 91# Generated .gitignore. 92# 93ifeq ($(out_base),$(src_base)) 94$(gen): | $(out_base)/.gitignore 95$(driver): | $(out_base)/.gitignore 96 97$(out_base)/.gitignore: files := driver $(genf) 98$(clean): $(out_base)/.gitignore.clean 99 100$(call include,$(bld_root)/git/gitignore.make) 101endif 102 103# How to. 104# 105$(call include,$(bld_root)/cxx/o-e.make) 106$(call include,$(bld_root)/cxx/cxx-o.make) 107$(call include,$(bld_root)/cxx/cxx-d.make) 108$(call include,$(bld_root)/install.make) 109$(call include,$(scf_root)/xsd/parser/xsd-cxx.make) 110 111# Dependencies. 112# 113$(call import,$(src_root)/xsd/makefile) 114