mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 04:28:18 +00:00
Adjust makefiles to work with out-of-tree builds
This is based on work done by Larry Doolittle
This commit is contained in:
parent
c43f38c81b
commit
e4ef000b70
26
Makefile
26
Makefile
|
@ -36,8 +36,10 @@ SMALL = 0
|
||||||
|
|
||||||
all: top-all
|
all: top-all
|
||||||
|
|
||||||
YOSYS_SRC := $(shell pwd)
|
YOSYS_SRC := $(dir $(firstword $(MAKEFILE_LIST)))
|
||||||
CXXFLAGS = -Wall -Wextra -ggdb -I"$(YOSYS_SRC)" -MD -D_YOSYS_ -fPIC -I$(DESTDIR)/include
|
VPATH := $(YOSYS_SRC)
|
||||||
|
|
||||||
|
CXXFLAGS = -Wall -Wextra -ggdb -I. -I"$(YOSYS_SRC)" -MD -D_YOSYS_ -fPIC -I$(DESTDIR)/include
|
||||||
LDFLAGS = -L$(DESTDIR)/lib
|
LDFLAGS = -L$(DESTDIR)/lib
|
||||||
LDLIBS = -lstdc++ -lm
|
LDLIBS = -lstdc++ -lm
|
||||||
SED = sed
|
SED = sed
|
||||||
|
@ -190,7 +192,7 @@ define add_share_file
|
||||||
EXTRA_TARGETS += $(subst //,/,$(1)/$(notdir $(2)))
|
EXTRA_TARGETS += $(subst //,/,$(1)/$(notdir $(2)))
|
||||||
$(subst //,/,$(1)/$(notdir $(2))): $(2)
|
$(subst //,/,$(1)/$(notdir $(2))): $(2)
|
||||||
$$(P) mkdir -p $(1)
|
$$(P) mkdir -p $(1)
|
||||||
$$(Q) cp $(2) $(subst //,/,$(1)/$(notdir $(2)))
|
$$(Q) cp "$(YOSYS_SRC)"/$(2) $(subst //,/,$(1)/$(notdir $(2)))
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define add_include_file
|
define add_include_file
|
||||||
|
@ -250,10 +252,10 @@ OBJS += libs/minisat/SimpSolver.o
|
||||||
OBJS += libs/minisat/Solver.o
|
OBJS += libs/minisat/Solver.o
|
||||||
OBJS += libs/minisat/System.o
|
OBJS += libs/minisat/System.o
|
||||||
|
|
||||||
include frontends/*/Makefile.inc
|
include $(YOSYS_SRC)/frontends/*/Makefile.inc
|
||||||
include passes/*/Makefile.inc
|
include $(YOSYS_SRC)/passes/*/Makefile.inc
|
||||||
include backends/*/Makefile.inc
|
include $(YOSYS_SRC)/backends/*/Makefile.inc
|
||||||
include techlibs/*/Makefile.inc
|
include $(YOSYS_SRC)/techlibs/*/Makefile.inc
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
@ -297,20 +299,22 @@ libyosys.so: $(filter-out kernel/driver.o,$(OBJS))
|
||||||
$(P) $(CXX) -o libyosys.so -shared -Wl,-soname,libyosys.so $(LDFLAGS) $^ $(LDLIBS)
|
$(P) $(CXX) -o libyosys.so -shared -Wl,-soname,libyosys.so $(LDFLAGS) $^ $(LDLIBS)
|
||||||
|
|
||||||
%.o: %.cc
|
%.o: %.cc
|
||||||
|
$(Q) mkdir -p $(dir $@)
|
||||||
$(P) $(CXX) -o $@ -c $(CXXFLAGS) $<
|
$(P) $(CXX) -o $@ -c $(CXXFLAGS) $<
|
||||||
|
|
||||||
%.o: %.cpp
|
%.o: %.cpp
|
||||||
|
$(Q) mkdir -p $(dir $@)
|
||||||
$(P) $(CXX) -o $@ -c $(CXXFLAGS) $<
|
$(P) $(CXX) -o $@ -c $(CXXFLAGS) $<
|
||||||
|
|
||||||
kernel/version_$(GIT_REV).cc: Makefile
|
kernel/version_$(GIT_REV).cc: $(YOSYS_SRC)/Makefile
|
||||||
$(P) rm -f kernel/version_*.o kernel/version_*.d kernel/version_*.cc
|
$(P) rm -f kernel/version_*.o kernel/version_*.d kernel/version_*.cc
|
||||||
$(Q) echo "namespace Yosys { extern const char *yosys_version_str; const char *yosys_version_str=\"Yosys $(YOSYS_VER) (git sha1 $(GIT_REV), $(notdir $(CXX)) ` \
|
$(Q) mkdir -p kernel && echo "namespace Yosys { extern const char *yosys_version_str; const char *yosys_version_str=\"Yosys $(YOSYS_VER) (git sha1 $(GIT_REV), $(notdir $(CXX)) ` \
|
||||||
$(CXX) --version | tr ' ()' '\n' | grep '^[0-9]' | head -n1` $(filter -f% -m% -O% -DNDEBUG,$(CXXFLAGS)))\"; }" > kernel/version_$(GIT_REV).cc
|
$(CXX) --version | tr ' ()' '\n' | grep '^[0-9]' | head -n1` $(filter -f% -m% -O% -DNDEBUG,$(CXXFLAGS)))\"; }" > kernel/version_$(GIT_REV).cc
|
||||||
|
|
||||||
yosys-config: misc/yosys-config.in
|
yosys-config: misc/yosys-config.in
|
||||||
$(P) $(SED) -e 's,@CXXFLAGS@,$(subst -I"$(YOSYS_SRC)",-I"$(TARGET_DATDIR)/include",$(CXXFLAGS)),;' \
|
$(P) $(SED) -e 's,@CXXFLAGS@,$(subst -I. -I"$(YOSYS_SRC)",-I"$(TARGET_DATDIR)/include",$(CXXFLAGS)),;' \
|
||||||
-e 's,@CXX@,$(CXX),;' -e 's,@LDFLAGS@,$(LDFLAGS),;' -e 's,@LDLIBS@,$(LDLIBS),;' \
|
-e 's,@CXX@,$(CXX),;' -e 's,@LDFLAGS@,$(LDFLAGS),;' -e 's,@LDLIBS@,$(LDLIBS),;' \
|
||||||
-e 's,@BINDIR@,$(TARGET_BINDIR),;' -e 's,@DATDIR@,$(TARGET_DATDIR),;' < misc/yosys-config.in > yosys-config
|
-e 's,@BINDIR@,$(TARGET_BINDIR),;' -e 's,@DATDIR@,$(TARGET_DATDIR),;' < $< > yosys-config
|
||||||
$(Q) chmod +x yosys-config
|
$(Q) chmod +x yosys-config
|
||||||
|
|
||||||
abc/abc-$(ABCREV)$(EXE):
|
abc/abc-$(ABCREV)$(EXE):
|
||||||
|
|
|
@ -5,13 +5,15 @@ GENFILES += frontends/ilang/ilang_parser.output
|
||||||
GENFILES += frontends/ilang/ilang_lexer.cc
|
GENFILES += frontends/ilang/ilang_lexer.cc
|
||||||
|
|
||||||
frontends/ilang/ilang_parser.tab.cc: frontends/ilang/ilang_parser.y
|
frontends/ilang/ilang_parser.tab.cc: frontends/ilang/ilang_parser.y
|
||||||
$(P) $(BISON) -d -r all -b frontends/ilang/ilang_parser frontends/ilang/ilang_parser.y
|
$(Q) mkdir -p $(dir $@)
|
||||||
|
$(P) $(BISON) -d -r all -b frontends/ilang/ilang_parser $<
|
||||||
$(Q) mv frontends/ilang/ilang_parser.tab.c frontends/ilang/ilang_parser.tab.cc
|
$(Q) mv frontends/ilang/ilang_parser.tab.c frontends/ilang/ilang_parser.tab.cc
|
||||||
|
|
||||||
frontends/ilang/ilang_parser.tab.h: frontends/ilang/ilang_parser.tab.cc
|
frontends/ilang/ilang_parser.tab.h: frontends/ilang/ilang_parser.tab.cc
|
||||||
|
|
||||||
frontends/ilang/ilang_lexer.cc: frontends/ilang/ilang_lexer.l
|
frontends/ilang/ilang_lexer.cc: frontends/ilang/ilang_lexer.l
|
||||||
$(P) flex -o frontends/ilang/ilang_lexer.cc frontends/ilang/ilang_lexer.l
|
$(Q) mkdir -p $(dir $@)
|
||||||
|
$(P) flex -o frontends/ilang/ilang_lexer.cc $<
|
||||||
|
|
||||||
OBJS += frontends/ilang/ilang_parser.tab.o frontends/ilang/ilang_lexer.o
|
OBJS += frontends/ilang/ilang_parser.tab.o frontends/ilang/ilang_lexer.o
|
||||||
OBJS += frontends/ilang/ilang_frontend.o
|
OBJS += frontends/ilang/ilang_frontend.o
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#pragma clang diagnostic ignored "-Wdeprecated-register"
|
#pragma clang diagnostic ignored "-Wdeprecated-register"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "ilang_frontend.h"
|
#include "frontends/ilang/ilang_frontend.h"
|
||||||
#include "ilang_parser.tab.h"
|
#include "ilang_parser.tab.h"
|
||||||
|
|
||||||
USING_YOSYS_NAMESPACE
|
USING_YOSYS_NAMESPACE
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
%{
|
%{
|
||||||
#include <list>
|
#include <list>
|
||||||
#include "ilang_frontend.h"
|
#include "frontends/ilang/ilang_frontend.h"
|
||||||
YOSYS_NAMESPACE_BEGIN
|
YOSYS_NAMESPACE_BEGIN
|
||||||
namespace ILANG_FRONTEND {
|
namespace ILANG_FRONTEND {
|
||||||
std::istream *lexin;
|
std::istream *lexin;
|
||||||
|
|
|
@ -5,13 +5,15 @@ GENFILES += frontends/verilog/verilog_parser.output
|
||||||
GENFILES += frontends/verilog/verilog_lexer.cc
|
GENFILES += frontends/verilog/verilog_lexer.cc
|
||||||
|
|
||||||
frontends/verilog/verilog_parser.tab.cc: frontends/verilog/verilog_parser.y
|
frontends/verilog/verilog_parser.tab.cc: frontends/verilog/verilog_parser.y
|
||||||
$(P) $(BISON) -d -r all -b frontends/verilog/verilog_parser frontends/verilog/verilog_parser.y
|
$(Q) mkdir -p $(dir $@)
|
||||||
|
$(P) $(BISON) -d -r all -b frontends/verilog/verilog_parser $<
|
||||||
$(Q) mv frontends/verilog/verilog_parser.tab.c frontends/verilog/verilog_parser.tab.cc
|
$(Q) mv frontends/verilog/verilog_parser.tab.c frontends/verilog/verilog_parser.tab.cc
|
||||||
|
|
||||||
frontends/verilog/verilog_parser.tab.h: frontends/verilog/verilog_parser.tab.cc
|
frontends/verilog/verilog_parser.tab.h: frontends/verilog/verilog_parser.tab.cc
|
||||||
|
|
||||||
frontends/verilog/verilog_lexer.cc: frontends/verilog/verilog_lexer.l
|
frontends/verilog/verilog_lexer.cc: frontends/verilog/verilog_lexer.l
|
||||||
$(P) flex -o frontends/verilog/verilog_lexer.cc frontends/verilog/verilog_lexer.l
|
$(Q) mkdir -p $(dir $@)
|
||||||
|
$(P) flex -o frontends/verilog/verilog_lexer.cc $<
|
||||||
|
|
||||||
OBJS += frontends/verilog/verilog_parser.tab.o
|
OBJS += frontends/verilog/verilog_parser.tab.o
|
||||||
OBJS += frontends/verilog/verilog_lexer.o
|
OBJS += frontends/verilog/verilog_lexer.o
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "kernel/log.h"
|
#include "kernel/log.h"
|
||||||
#include "verilog_frontend.h"
|
#include "frontends/verilog/verilog_frontend.h"
|
||||||
#include "frontends/ast/ast.h"
|
#include "frontends/ast/ast.h"
|
||||||
#include "verilog_parser.tab.h"
|
#include "verilog_parser.tab.h"
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
%{
|
%{
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "verilog_frontend.h"
|
#include "frontends/verilog/verilog_frontend.h"
|
||||||
#include "kernel/log.h"
|
#include "kernel/log.h"
|
||||||
|
|
||||||
USING_YOSYS_NAMESPACE
|
USING_YOSYS_NAMESPACE
|
||||||
|
|
|
@ -24,6 +24,7 @@ endif
|
||||||
GENFILES += passes/techmap/techmap.inc
|
GENFILES += passes/techmap/techmap.inc
|
||||||
|
|
||||||
passes/techmap/techmap.inc: techlibs/common/techmap.v
|
passes/techmap/techmap.inc: techlibs/common/techmap.v
|
||||||
|
$(Q) mkdir -p $(dir $@)
|
||||||
$(P) echo "// autogenerated from $<" > $@.new
|
$(P) echo "// autogenerated from $<" > $@.new
|
||||||
$(Q) echo "static char stdcells_code[] = {" >> $@.new
|
$(Q) echo "static char stdcells_code[] = {" >> $@.new
|
||||||
$(Q) od -v -td1 -An $< | $(SED) -e 's/[0-9][0-9]*/&,/g' >> $@.new
|
$(Q) od -v -td1 -An $< | $(SED) -e 's/[0-9][0-9]*/&,/g' >> $@.new
|
||||||
|
@ -37,6 +38,7 @@ TARGETS += yosys-filterlib$(EXE)
|
||||||
EXTRA_OBJS += passes/techmap/filterlib.o
|
EXTRA_OBJS += passes/techmap/filterlib.o
|
||||||
|
|
||||||
yosys-filterlib$(EXE): passes/techmap/filterlib.o
|
yosys-filterlib$(EXE): passes/techmap/filterlib.o
|
||||||
|
$(Q) mkdir -p $(dir $@)
|
||||||
$(P) $(CXX) -o yosys-filterlib$(EXE) $(LDFLAGS) $^ $(LDLIBS)
|
$(P) $(CXX) -o yosys-filterlib$(EXE) $(LDFLAGS) $^ $(LDLIBS)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -3,16 +3,9 @@ ifneq ($(SMALL),1)
|
||||||
OBJS += techlibs/common/synth.o
|
OBJS += techlibs/common/synth.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
EXTRA_TARGETS += techlibs/common/blackbox.v
|
|
||||||
|
|
||||||
techlibs/common/blackbox.v: techlibs/common/blackbox.sed techlibs/common/simlib.v techlibs/common/simcells.v
|
|
||||||
$(P) cat techlibs/common/simlib.v techlibs/common/simcells.v | $(SED) -rf techlibs/common/blackbox.sed > techlibs/common/blackbox.v.new
|
|
||||||
$(Q) mv techlibs/common/blackbox.v.new techlibs/common/blackbox.v
|
|
||||||
|
|
||||||
$(eval $(call add_share_file,share,techlibs/common/simlib.v))
|
$(eval $(call add_share_file,share,techlibs/common/simlib.v))
|
||||||
$(eval $(call add_share_file,share,techlibs/common/simcells.v))
|
$(eval $(call add_share_file,share,techlibs/common/simcells.v))
|
||||||
$(eval $(call add_share_file,share,techlibs/common/techmap.v))
|
$(eval $(call add_share_file,share,techlibs/common/techmap.v))
|
||||||
$(eval $(call add_share_file,share,techlibs/common/blackbox.v))
|
|
||||||
$(eval $(call add_share_file,share,techlibs/common/pmux2mux.v))
|
$(eval $(call add_share_file,share,techlibs/common/pmux2mux.v))
|
||||||
$(eval $(call add_share_file,share,techlibs/common/adff2dff.v))
|
$(eval $(call add_share_file,share,techlibs/common/adff2dff.v))
|
||||||
$(eval $(call add_share_file,share,techlibs/common/cells.lib))
|
$(eval $(call add_share_file,share,techlibs/common/cells.lib))
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/sed -r
|
|
||||||
/^(wire|assign|reg|event|integer|localparam|\/\/|[\/ ]\*| *$|`)/ d;
|
|
||||||
/^(genvar|generate|always|initial|task|function)/,/^end/ d;
|
|
||||||
/^endmodule/ s/$/\n/;
|
|
||||||
s/ reg / /;
|
|
|
@ -11,7 +11,7 @@ EXTRA_OBJS += techlibs/ice40/brams_init.mk
|
||||||
.SECONDARY: techlibs/ice40/brams_init.mk
|
.SECONDARY: techlibs/ice40/brams_init.mk
|
||||||
|
|
||||||
techlibs/ice40/brams_init.mk: techlibs/ice40/brams_init.py
|
techlibs/ice40/brams_init.mk: techlibs/ice40/brams_init.py
|
||||||
$(P) cd techlibs/ice40 && python brams_init.py
|
$(P) cd share/ice40 && python $<
|
||||||
$(Q) touch techlibs/ice40/brams_init.mk
|
$(Q) touch techlibs/ice40/brams_init.mk
|
||||||
|
|
||||||
techlibs/ice40/brams_init1.vh: techlibs/ice40/brams_init.mk
|
techlibs/ice40/brams_init1.vh: techlibs/ice40/brams_init.mk
|
||||||
|
@ -23,7 +23,4 @@ $(eval $(call add_share_file,share/ice40,techlibs/ice40/cells_map.v))
|
||||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/cells_sim.v))
|
$(eval $(call add_share_file,share/ice40,techlibs/ice40/cells_sim.v))
|
||||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/brams.txt))
|
$(eval $(call add_share_file,share/ice40,techlibs/ice40/brams.txt))
|
||||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/brams_map.v))
|
$(eval $(call add_share_file,share/ice40,techlibs/ice40/brams_map.v))
|
||||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/brams_init1.vh))
|
|
||||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/brams_init2.vh))
|
|
||||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/brams_init3.vh))
|
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,8 @@ EXTRA_OBJS += techlibs/xilinx/brams_init.mk
|
||||||
.SECONDARY: techlibs/xilinx/brams_init.mk
|
.SECONDARY: techlibs/xilinx/brams_init.mk
|
||||||
|
|
||||||
techlibs/xilinx/brams_init.mk: techlibs/xilinx/brams_init.py
|
techlibs/xilinx/brams_init.mk: techlibs/xilinx/brams_init.py
|
||||||
$(P) cd techlibs/xilinx && python brams_init.py
|
$(P) cd share/xilinx && python $<
|
||||||
$(Q) touch techlibs/xilinx/brams_init.mk
|
$(Q) touch $@
|
||||||
|
|
||||||
techlibs/xilinx/brams_init_36.vh: techlibs/xilinx/brams_init.mk
|
techlibs/xilinx/brams_init_36.vh: techlibs/xilinx/brams_init.mk
|
||||||
techlibs/xilinx/brams_init_32.vh: techlibs/xilinx/brams_init.mk
|
techlibs/xilinx/brams_init_32.vh: techlibs/xilinx/brams_init.mk
|
||||||
|
@ -22,10 +22,6 @@ $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/cells_map.v))
|
||||||
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/cells_sim.v))
|
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/cells_sim.v))
|
||||||
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/brams.txt))
|
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/brams.txt))
|
||||||
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/brams_map.v))
|
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/brams_map.v))
|
||||||
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/brams_init_36.vh))
|
|
||||||
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/brams_init_32.vh))
|
|
||||||
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/brams_init_18.vh))
|
|
||||||
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/brams_init_16.vh))
|
|
||||||
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/brams_bb.v))
|
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/brams_bb.v))
|
||||||
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/drams.txt))
|
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/drams.txt))
|
||||||
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/drams_map.v))
|
$(eval $(call add_share_file,share/xilinx,techlibs/xilinx/drams_map.v))
|
||||||
|
|
Loading…
Reference in a new issue