Files
vortex/driver/sw/Makefile
2020-03-16 18:13:58 -04:00

71 lines
1.7 KiB
Makefile

DRV_CFLAGS += -O0 -g -Wall -Wextra -pedantic -Wfatal-errors
DRV_CFLAGS += -I/tools/opae/1.4.0/include
DRV_LDFLAGS += -L/tools/opae/1.4.0/lib
# stack execution protection
DRV_LDFLAGS +=-z noexecstack
# data relocation and projection
DRV_LDFLAGS +=-z relro -z now
# stack buffer overrun detection
# Note that CentOS 7 has gcc 4.8 by default. When we switch
# to a system with gcc 4.9 or newer this should be changed to
# CFLAGS="-fstack-protector-strong"
DRV_CFLAGS +=-fstack-protector
# Position independent code
DRV_CFLAGS += -fPIC
DRV_LDFLAGS += -luuid
DRV_LDFLAGS += -shared
FPGA_LIBS += -lopae-c
ASE_LIBS += -lopae-c-ase
CXXFLAGS += -std=c++17 -O0 -g -Wall -Wextra -pedantic -Wfatal-errors
LDFLAGS += -L.
PROJECT = libvxdrv.so
PROJECT_ASE = libvxdrv_ase.so
AFU_JSON_INFO = vortex_afu.h
all: $(PROJECT) $(PROJECT_ASE) test test_ase
# AFU info from JSON file, including AFU UUID
$(AFU_JSON_INFO): ../hw/vortex_afu.json
afu_json_mgr json-info --afu-json=$^ --c-hdr=$@
$(PROJECT): vx_driver.o
$(CC) $(DRV_CFLAGS) $^ $(DRV_LDFLAGS) $(FPGA_LIBS) -o $@
$(PROJECT_ASE): vx_driver.o
$(CC) $(DRV_CFLAGS) -DUSE_ASE $^ $(DRV_LDFLAGS) $(ASE_LIBS) -o $@
test: test.o utils.o $(PROJECT)
$(CXX) $(CXXFLAGS) test.o utils.o $(LDFLAGS) -lvxdrv -o $@
test_ase: test.o utils.o $(PROJECT_ASE)
$(CXX) $(CXXFLAGS) -DUSE_ASE test.o utils.o $(LDFLAGS) -lvxdrv_ase -o $@
vx_driver.o: vx_driver.c
$(CC) $(DRV_CFLAGS) -c $^ -o $@
test.o: test.cpp $(AFU_JSON_INFO)
$(CXX) $(CXXFLAGS) -c test.cpp -o $@
.depend: vx_driver.c test.cpp
$(CXX) $(CXXFLAGS) -MM $^ > .depend;
clean:
rm -rf $(PROJECT) $(PROJECT_ASE) test test_ase $(AFU_JSON_INFO) *.so *.o .depend
ifneq ($(MAKECMDGOALS),clean)
-include .depend
endif