summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/build/makefile
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/build/makefile')
-rw-r--r--src/lib/netlist/build/makefile104
1 files changed, 62 insertions, 42 deletions
diff --git a/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile
index 82f9f1c12b6..27414e9439d 100644
--- a/src/lib/netlist/build/makefile
+++ b/src/lib/netlist/build/makefile
@@ -49,7 +49,7 @@ TIDY_FLAGSX += -llvmlibc-restrict-system-libc-headers,-llvmlibc-implementation-i
space :=
space +=
TIDY_FLAGS = -p $(OBJ) $(subst $(space),,$(TIDY_FLAGSX))
-TIDY_SOURCES = $(SOURCES)
+TIDY_SOURCES = $(ALLSOURCES)
#TIDY_SOURCES = $(SRC)/devices/nld_7442.cpp $(SRC)/devices/nld_7492.cpp
@@ -71,6 +71,8 @@ DOXYGEN = @./doxygen
HOSTARCH = NIX
endif
+PYTHON=@python
+
TIDY_DB = $(OBJ)/compile_commands.json
@@ -120,7 +122,7 @@ OBJDIRS = $(OBJ) \
$(OBJ)/generated \
-OBJS = $(POBJS) $(NLOBJS) $(TESTOBJS)
+OBJS = $(POBJS) $(NLOBJS) $(NLDEVOBJS) $(TESTOBJS)
POBJS := \
$(POBJ)/pstring.o \
@@ -136,20 +138,22 @@ POBJS := \
PMAIN := $(POBJ)/pmain.o
NLOBJS := \
- $(NLOBJ)/solver/nld_solver.o \
$(NLOBJ)/solver/nld_matrix_solver.o \
$(NLOBJ)/nl_base.o \
$(NLOBJ)/nl_parser.o \
$(NLOBJ)/nl_setup.o \
$(NLOBJ)/nl_factory.o \
+ $(NLOBJ)/tools/nl_convert.o \
+ $(NLOBJ)/generated/static_solvers.o \
+
+NLDEVOBJS := \
+ $(NLOBJ)/solver/nld_solver.o \
$(NLOBJ)/analog/nld_bjt.o \
$(NLOBJ)/analog/nld_mosfet.o \
$(NLOBJ)/analog/nlid_fourterm.o \
$(NLOBJ)/analog/nld_switches.o \
$(NLOBJ)/analog/nlid_twoterm.o \
$(NLOBJ)/analog/nld_opamps.o \
- $(NLOBJ)/tools/nl_convert.o \
- $(NLOBJ)/generated/static_solvers.o \
$(NLOBJ)/devices/nld_2102A.o \
$(NLOBJ)/devices/nld_tms4800.o \
$(NLOBJ)/devices/nld_4006.o \
@@ -240,11 +244,12 @@ DOCS = \
ALL_OBJS = $(OBJS) $(PMAIN) $(NLOBJ)/prg/nltool.o $(NLOBJ)/prg/nlwav.o
ALL_TIDY_FILES = $(ALL_OBJS:.o=.json)
-SOURCES = $(patsubst $(OBJ)%, $(SRC)%, $(ALL_OBJS:.o=.cpp))
-ALLFILES = $(SOURCES) $(VSBUILDS) $(DOCS)
-
-MAKEFILE_TARGETS_WITHOUT_INCLUDE := gcc9 clang clang-5 mingw doc native maketree tidy runtests
+ALLSOURCES = $(patsubst $(OBJ)%, $(SRC)%, $(ALL_OBJS:.o=.cpp))
+DEVSOURCES = $(patsubst $(OBJ)%, $(SRC)%, $(NLDEVOBJS:.o=.cpp))
+ALLFILES = $(ALLSOURCES) $(VSBUILDS) $(DOCS)
+MAKEFILE_TARGETS_WITHOUT_INCLUDE := all gcc9 clang clang-5 mingw doc native maketree tidy runtests generated manpages
+BUILD_DIRS = $(OBJDIRS) man html
# git archive HEAD --prefix=project-name-version/ \
# --format=zip -o project-name-version.zip
@@ -253,7 +258,7 @@ MAKEFILE_TARGETS_WITHOUT_INCLUDE := gcc9 clang clang-5 mingw doc native maketree
# PHONY
#-------------------------------------------------
-.PHONY: all gcc9 clang clang-5 mingw doc man native maketree $(DEPEND) depend runtests
+.PHONY: $(MAKEFILE_TARGETS_WITHOUT_INCLUDE)
#-------------------------------------------------
# all
@@ -285,10 +290,10 @@ nlwav$(EXESUFFIX): $(OBJ)/prg/nlwav.o $(PMAIN) $(OBJS)
# directories
#-------------------------------------------------
-$(sort $(OBJDIRS)):
+$(sort $(BUILD_DIRS)):
$(MD) -p $@
-maketree: $(sort $(OBJDIRS))
+maketree: $(sort $(BUILD_DIRS))
#-------------------------------------------------
# Special targets
@@ -338,53 +343,60 @@ nvcc:
-Xcompiler -O6 -Xcompiler -march=native -ccbin g++-8 " \
DEPENDCC=g++
-runtests:
- ./nltool$(EXESUFFIX) -c tests
-
-tidy_db: compile_commands_prefix $(ALL_TIDY_FILES) compile_commands_postfix
-
-#
-# Mostly done: -Wno-weak-vtables -Wno-cast-align
-# FIXME: -Wno-weak-vtables -Wno-weak-template-vtables -Wno-exit-time-destructors
-# FIXME: -Winconsistent-missing-destructor-override : c++ community has diverging opinions on this https://github.com/isocpp/CppCoreGuidelines/issues/721
-# FIXME: -Wunreachable-code : False warnings, this a documented clang bug: https://llvm.org/bugs/show_bug.cgi?id=28994
-# -Wweak-template-vtables
-#
-# These have to be given:
-# -Wno-missing-variable-declarations : Device factory code, on purpose
-
mingw:
$(MAKE) CEXTRAFLAGS="-DUNICODE -D_UNICODE -D_WIN32_WINNT=0x0501 \
-DWIN32_LEAN_AND_MEAN" LDEXTRAFLAGS="-Wl,--subsystem,console \
-municode" LIBS= MD=@mkdir.exe SHELL=sh.exe DOXYGEN=doxygen.exe $(PARAMS)
-#
-# FIXME: Unicode
-# CEXTRAFLAGS = -DUNICODE -D_UNICODE -municode
-# LDEXTRAFLAGS = -municode
-#
+#-------------------------------------------------
+# regression tests
+#-------------------------------------------------
+
+runtests:
+ ./nltool$(EXESUFFIX) -c tests
+
+#-------------------------------------------------
+# man pages
+#-------------------------------------------------
-man: nltool$(EXESUFFIX) nlwav$(EXESUFFIX)
- @mkdir -p man
- @mkdir -p html
- help2man --include=nltool.help2man --no-info ./nltool$(EXESUFFIX) > man/nltool.1
- groff -mandoc -Thtml man/nltool.1 > html/nltool.html
+manpages: maketree man/nltool.1 man/nlwav.1 html/nltool.html html/nlwav.html
+
+#-------------------------------------------------
+# documentation
+#-------------------------------------------------
doc:
./nltool$(EXESUFFIX) -c docheader > ../documentation/devsyn.dox.h
$(DOXYGEN) doxygen.conf
#-------------------------------------------------
+# generated
+#-------------------------------------------------
+
+../generated/lib_entries.hxx: $(DEVSOURCES)
+ @echo creating $@
+ $(PYTHON) create_lib_entries.py $^ > $@
+
+../generated/nld_devinc.h: $(DEVSOURCES)
+ @echo creating $@
+ $(PYTHON) create_devinc.py $^ > $@
+
+.PHONY: generated
+generated: ../generated/lib_entries.hxx ../generated/nld_devinc.h
+
+#-------------------------------------------------
# depends
#-------------------------------------------------
-$(DEPEND): maketree $(SOURCES)
+.PHONY: $(DEPEND)
+$(DEPEND): maketree $(ALLSOURCES)
@echo creating $(DEPEND)
@rm -f $(DEPEND)
- @for i in $(SOURCES); do \
+ @for i in $(ALLSOURCES); do \
$(DEPENDCC) $(CCOREFLAGS) -MM $$i -MT `echo $$i | sed -e 's+$(SRC)+$(OBJ)+' -e 's+.cpp+.o+' ` >> $(DEPEND); \
done
+.PHONY: depend
depend: $(DEPEND)
# Include only if the goal needs it
@@ -395,15 +407,15 @@ endif
#-------------------------------------------------
# clang tidy
#-------------------------------------------------
+
+tidy_db: compile_commands_prefix $(ALL_TIDY_FILES) compile_commands_postfix
+
tidy: tidy_db
@echo running tidy
@for i in $(TIDY_SOURCES); do \
$(CLANG_TIDY) $$i $(TIDY_FLAGS) -header-filter=.*; \
done
-tidy_db: compile_commands_prefix $(ALL_TIDY_FILES) compile_commands_postfix
-
-
#-------------------------------------------------
# generic rules
#-------------------------------------------------
@@ -432,6 +444,14 @@ $(OBJ)/%.json: $(SRC)/%.cpp
@echo \"file\": \"$(CURDIR)/$<\" } >> $(TIDY_DB)
@echo "," >> $(TIDY_DB)
+man/%.1: %$(EXESUFFIX)
+ @echo Building $@...
+ @help2man --include=$*.help2man --no-info ./$< > $@
+
+html/%.html: man/%.1
+ @echo Building $@...
+ @groff -mandoc -Thtml $< > $@
+
compile_commands_prefix:
@echo "[" > $(TIDY_DB)