You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
3.7 KiB
184 lines
3.7 KiB
# The master makefile to make spiceopus (TM) like codemodels
|
|
# Under the GPLV2 or later license
|
|
# 2003 - Stefan Jones <stefan.jones@multigig.com>
|
|
|
|
|
|
include makedefs
|
|
|
|
|
|
# The codemodels to make
|
|
CMDIRS = spice2poly digital analog xtradev xtraevt table
|
|
|
|
|
|
all:
|
|
for cm in $(CMDIRS) ; do \
|
|
$(MAKE) cm=$$cm $$cm/$$cm.cm \
|
|
|| exit 1; \
|
|
done
|
|
|
|
|
|
install: all
|
|
$(MKDIR_P) "$(DESTDIR)$(pkglibdir)"
|
|
$(MKDIR_P) "$(DESTDIR)$(pkgdatadir)"
|
|
for cm in $(CMDIRS) ; do \
|
|
$(INSTALL_PROGRAM) $$cm/$$cm.cm "$(DESTDIR)$(pkglibdir)" \
|
|
|| exit 1; \
|
|
done
|
|
$(INSTALL_DATA) $(srcdir)/dlmain.c "$(DESTDIR)$(pkgdatadir)" || exit $$?;
|
|
|
|
|
|
uninstall:
|
|
for cm in $(CMDIRS) ; do \
|
|
-rm -f "$(DESTDIR)$(pkglibdir)/$$cm.cm"; \
|
|
done
|
|
|
|
|
|
clean:
|
|
for cm in $(CMDIRS) ; do \
|
|
$(MAKE) cm=$$cm cm-clean \
|
|
|| exit 1; \
|
|
done
|
|
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
ifdef cm
|
|
|
|
modlst := $(shell cat $(srcdir)/$(cm)/modpath.lst)
|
|
udnlst := $(shell cat $(srcdir)/$(cm)/udnpath.lst)
|
|
|
|
cm-dirs := $(cm) $(udnlst:%=$(cm)/%) $(modlst:%=$(cm)/%)
|
|
cm-dep-dirs := $(cm-dirs:%=%/.deps)
|
|
|
|
|
|
cm-gens := \
|
|
$(modlst:%=$(cm)/%/cfunc.c) \
|
|
$(modlst:%=$(cm)/%/ifspec.c)
|
|
|
|
cm-objs := \
|
|
$(cm)/dlmain.o \
|
|
$(modlst:%=$(cm)/%/cfunc.o) \
|
|
$(modlst:%=$(cm)/%/ifspec.o) \
|
|
$(udnlst:%=$(cm)/%/udnfunc.o)
|
|
|
|
cm-deps := \
|
|
$(cm)/.deps/dlmain.P \
|
|
$(modlst:%=$(cm)/%/.deps/cfunc.P) \
|
|
$(modlst:%=$(cm)/%/.deps/ifspec.P) \
|
|
$(udnlst:%=$(cm)/%/.deps/udnfunc.P)
|
|
|
|
cm-descr := \
|
|
$(cm)/cmextrn.h \
|
|
$(cm)/cminfo.h \
|
|
$(cm)/udnextrn.h \
|
|
$(cm)/udninfo.h \
|
|
$(cm)/objects.inc
|
|
|
|
|
|
-include $(cm-deps)
|
|
|
|
|
|
.SECONDARY : $(cm-gens)
|
|
|
|
|
|
cm-clean :
|
|
-rm -f $(cm)/$(cm).cm
|
|
-rm -f $(cm-descr) $(cm-objs) $(cm-gens)
|
|
-rm -f $(cm-deps)
|
|
|
|
cm-distclean :
|
|
-rm -rf $(cm-dep-dirs)
|
|
|
|
#-----
|
|
|
|
$(cm)/$(cm).cm : $(cm-objs)
|
|
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(VIS_CFLAGS) $(LDFLAGS) $^ $(LIBS) -o $@
|
|
|
|
# "order-only" prerequisites
|
|
# (info "(make) Prerequisite Types")
|
|
|
|
$(cm-gens) $(cm-objs) $(cm-descr) : | cm-dirs
|
|
|
|
cm-dirs : $(cm-dirs) $(cm-dep-dirs)
|
|
|
|
$(cm-dirs) $(cm-dep-dirs) :
|
|
$(MKDIR_P) $(cm-dirs) $(cm-dep-dirs)
|
|
|
|
#-----
|
|
# cancel builtin rules
|
|
|
|
%.o : %.c
|
|
%.o : %.mod
|
|
|
|
# multiple targets in a pattern group ...
|
|
# (info "(make) Pattern Intro")
|
|
|
|
%/cmextrn.h %/cminfo.h %/udnextrn.h %/udninfo.h %/objects.inc : $(srcdir)/%/modpath.lst $(srcdir)/%/udnpath.lst
|
|
CMPP_IDIR=$(srcdir)/$(@D) CMPP_ODIR=$(@D) $(CMPP) -lst
|
|
|
|
%/ifspec.c : $(srcdir)/%/ifspec.ifs
|
|
CMPP_IDIR=$(srcdir)/$(@D) CMPP_ODIR=$(@D) $(CMPP) -ifs
|
|
|
|
%/cfunc.c : $(srcdir)/%/cfunc.mod
|
|
CMPP_IDIR=$(srcdir)/$(@D) CMPP_ODIR=$(@D) $(CMPP) -mod
|
|
|
|
|
|
gen_pp = $(DEPFLAGS) $(@D)/.deps/$(basename $(<F)).pp
|
|
|
|
define do-deps
|
|
@x=$(@D)/.deps/$(basename $(<F)) ; \
|
|
cp $$x.pp $$x.P; \
|
|
tr ' ' '\012' < $$x.pp \
|
|
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
|
|
>> $$x.P; \
|
|
rm $$x.pp
|
|
endef
|
|
|
|
COMPILE = $(CC) $(INCLUDES) -I$(cm) -I$(srcdir)/$(cm) $(CFLAGS) $(EXTRA_CFLAGS) $(VIS_CFLAGS)
|
|
|
|
$(cm)/dlmain.o : $(srcdir)/dlmain.c $(cm-descr)
|
|
$(COMPILE) $(gen_pp) -o $@ -c $<
|
|
$(do-deps)
|
|
|
|
$(cm)/%/cfunc.o : $(cm)/%/cfunc.c
|
|
$(COMPILE) $(gen_pp) -I$(srcdir)/$(<D) -o $@ -c $<
|
|
$(do-deps)
|
|
|
|
$(cm)/%/ifspec.o : $(cm)/%/ifspec.c
|
|
$(COMPILE) $(gen_pp) -I$(srcdir)/$(<D) -o $@ -c $<
|
|
$(do-deps)
|
|
|
|
$(cm)/%/udnfunc.o : $(srcdir)/$(cm)/%/udnfunc.c
|
|
$(COMPILE) $(gen_pp) -I$(srcdir)/$(<D) -o $@ -c $<
|
|
$(do-deps)
|
|
|
|
endif
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
GNUmakefile makedefs : % : $(srcdir)/%.in $(top_builddir)/config.status
|
|
cd $(top_builddir) \
|
|
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
|
|
|
maintainer-clean: distclean
|
|
|
|
distclean: clean
|
|
for cm in $(CMDIRS) ; do \
|
|
$(MAKE) cm=$$cm cm-distclean \
|
|
|| exit 1; \
|
|
done
|
|
-rm -f GNUmakefile makedefs
|
|
|
|
distdir:
|
|
|
|
check:
|
|
|
|
pdf:
|
|
|
|
ps:
|
|
|
|
dvi:
|
|
|
|
html:
|
|
|
|
info:
|