#$Id: Make1  $ -*- Makefile -*-
# Copyright (C) 2001 Albert Davis
# Author: Albert Davis <aldavis@gnu.org>
#
# This file is part of "Gnucap", the Gnu Circuit Analysis Package
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
#------------------------------------------------------------------------
TARGET = gnucap-default-plugins
#------------------------------------------------------------------------
INSTALL_FILES = $(TARGET)$(TARGET_EXT)
#------------------------------------------------------------------------
INSTALL_DIR = $(PREFIX)/lib/gnucap
#------------------------------------------------------------------------
DELETED =
#------------------------------------------------------------------------
# These source files can be omitted, and supplied as plugins.
# device models defined in high level .model files
MODELS = \
d_mos1.model d_mos2.model d_mos3.model \
d_mos4.model d_mos5.model d_mos6.model d_mos7.model d_mos8.model \
d_mos123.model d_mos_base.model d_mos.model \
d_bjt.model d_diode.model

# device models hand coded in C++
D_SRCS = \
d_admit.cc d_cap.cc d_cccs.cc d_ccvs.cc d_coil.cc \
d_cs.cc d_poly_g.cc d_poly_cap.cc d_res.cc d_switch.cc \
d_trln.cc d_vcg.cc d_vcr.cc d_vcvs.cc d_vs.cc \
d_meter.cc

# behavioral modeling functions
BM_SRCS = \
bm_complex.cc bm_exp.cc bm_fit.cc bm_generator.cc \
bm_model.cc bm_poly.cc bm_posy.cc bm_pulse.cc bm_pwl.cc bm_sffm.cc \
bm_sin.cc bm_tanh.cc bmm_table.cc bmm_semi.cc

# utility commands, usually one file per command
# some have multiple commands in a file
C_SRCS = \
c_clear.cc c_comand.cc c_delete.cc c_exp.cc  c_genrat.cc \
c_help.cc \
c_list.cc c_measure.cc c_modify.cc c_param.cc c_prbcmd.cc \
c_status.cc c_sweep.cc c_sim.cc c_system.cc

# simulation commands, usually multiple files for one command
S_SRCS = \
s__init.cc s__out.cc s__solve.cc \
s_ac.cc s_dc.cc s_fo.cc \
s_tr.cc s_tr_set.cc s_tr_swp.cc

# netlist languages
LANG_SRCS = \
lang_spice.cc lang_spectre.cc lang_verilog.cc

# parameter functions
FUNC_SRCS = \
func_core.cc measure_eval.cc \
measure_max.cc measure_min.cc measure_slewrate.cc measure_cross.cc \
measure_integral.cc measure_average.cc measure_rms.cc measure_at.cc

# other stuff
OTHER_SRCS = \
signon.cc
#------------------------------------------------------------------------
RAW_SRCS = \
$(D_SRCS) \
$(BM_SRCS) \
$(C_SRCS) \
$(S_SRCS) \
$(LANG_SRCS) \
$(FUNC_SRCS) \
$(OTHER_SRCS)
#------------------------------------------------------------------------
RAW_OTHER = Make1 Make2.g++ Make2.Debug Make2.mingw32 configure test_readline.cc
#------------------------------------------------------------------------
RAW = $(RAW_HDRS) $(RAW_SRCS) $(RAW_OTHER) $(MODELS)
#------------------------------------------------------------------------
#------------------------------------------------------------------------
IMPORTED_SRCS =
IMPORTED_HDRS =
IMPORTED_OTHER =
IMPORTED = $(IMPORTED_SRCS) $(IMPORTED_HDRS) $(IMPORTED_OTHER)
#------------------------------------------------------------------------
#------------------------------------------------------------------------
GENERATED_SRCS = ${MODELS:.model=.cc}
GENERATED_HDRS = ${MODELS:.model=.h}
GENERATED_OTHER = Make.aux
GENERATED = $(GENERATED_HDRS) $(GENERATED_SRCS) $(GENERATED_OTHER)
#------------------------------------------------------------------------
#------------------------------------------------------------------------
GENERATED_DIST = Make.depend
IMPORTED_DIST = $(IMPORTED)
DIST_FILES = $(RAW) $(GENERATED_DIST) $(IMPORTED_DIST)
#------------------------------------------------------------------------
#------------------------------------------------------------------------
SRCS = $(IMPORTED_SRCS) $(GENERATED_SRCS) $(RAW_SRCS)
HDRS = $(RAW_HDRS) $(GENERATED_HDRS) $(IMPORTED_HDRS)
OBJS = ${SRCS:.cc=.o}
TARGET_DEPENDS = $(OBJS) $(RAW) $(MODELS)
#------------------------------------------------------------------------
#------------------------------------------------------------------------
MOSTLYCLEANFILES = $(OBJS) $(GENERATED)
CLEANFILES = $(MOSTLYCLEANFILES)
DISTCLEANFILES = $(CLEANFILES)
MAINTAINERCLEANFILES = $(DISTCLEANFILES)
#------------------------------------------------------------------------
#------------------------------------------------------------------------
LIBPATH = `pwd | sed 's/\(.*\)apps/\1lib/'`
MODELGEN = `pwd | sed 's/\(.*\)apps/\1modelgen/'`/gnucap-modelgen
#------------------------------------------------------------------------
%.h : %.model
	(export LD_LIBRARY_PATH=$(LIBPATH); $(MODELGEN) -h $<)
#------------------------------------------------------------------------
%.cc : %.model
	(export LD_LIBRARY_PATH=$(LIBPATH); $(MODELGEN) -cc $<)
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
