# # Copyright (C) 2017 Jared Boone, ShareBrained Technology, Inc. # Copyright (C) 2024 jLynx.net https://github.com/jLynx # # This file is part of PortaPack. # # 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 2, 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; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 51 Franklin Street, # Boston, MA 02110-1301, USA. # Makefile based on Altera Quartus documentation example, topic # "About Using Quartus II from the Command Line" ################################################################### # Project Configuration: # # Specify the name of the design (project) and Quartus II Settings # File (.qsf) and the list of source files used. ################################################################### PROJECT=portapack_h4m_cpld SOURCE_FILES=top.vhd ASSIGNMENT_FILES=$(PROJECT).qpf $(PROJECT).qsf $(PROJECT).sdc OUTPUT_DIR=output_files ################################################################### # Main Targets # # all: build everything # clean: remove output files and database ################################################################### all: smart.log $(OUTPUT_DIR)/$(PROJECT).asm.rpt $(OUTPUT_DIR)/$(PROJECT).sta.rpt clean: rm -rf *.chg *.qws smart.log db/ incremental_db/ $(OUTPUT_DIR)/ map: smart.log $(OUTPUT_DIR)/$(PROJECT).map.rpt fit: smart.log $(OUTPUT_DIR)/$(PROJECT).fit.rpt asm: smart.log $(OUTPUT_DIR)/$(PROJECT).asm.rpt sta: smart.log $(OUTPUT_DIR)/$(PROJECT).sta.rpt smart: smart.log ################################################################### # Executable Configuration ################################################################### MAP_ARGS= FIT_ARGS= ASM_ARGS= STA_ARGS= ################################################################### # Target implementations ################################################################### STAMP = echo done > $(OUTPUT_DIR)/$(PROJECT).map.rpt: $(SOURCE_FILES) quartus_map $(MAP_ARGS) $(PROJECT) $(STAMP) fit.chg $(OUTPUT_DIR)/$(PROJECT).fit.rpt: fit.chg $(OUTPUT_DIR)/$(PROJECT).map.rpt quartus_fit $(FIT_ARGS) $(PROJECT) $(STAMP) asm.chg $(STAMP) sta.chg $(OUTPUT_DIR)/$(PROJECT).asm.rpt: asm.chg $(OUTPUT_DIR)/$(PROJECT).fit.rpt quartus_asm $(ASM_ARGS) $(PROJECT) $(OUTPUT_DIR)/$(PROJECT).sta.rpt: sta.chg $(OUTPUT_DIR)/$(PROJECT).fit.rpt quartus_sta $(STA_ARGS) $(PROJECT) smart.log: $(ASSIGNMENT_FILES) $(OUTPUT_DIR) quartus_sh --determine_smart_action $(PROJECT) > smart.log ################################################################### # Project initialization ################################################################### $(OUTPUT_DIR): mkdir $(OUTPUT_DIR) $(ASSIGNMENT_FILES): $(OUTPUT_DIR) quartus_sh --prepare $(PROJECT) fit.chg: $(STAMP) fit.chg sta.chg: $(STAMP) sta.chg asm.chg: $(STAMP) asm.chg