Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
15 years ago

Difference between command and GUI builds

When I try to build with *.qxp files through the GUI, the GUI finds the qxp files with no problems. They are in a sub-dir called "qxp" under the dir that I start the GUI from. But if I use a Makefile it can not find the qxp files and errors with "undefined entity". Has anyone seen this issue before?

The Makfile works fine when not using qxp files and I use other sub-dirs in the build for *.v files.

Here is the Makefile which is taken from Altera suggestions.

PROJECT = mp_fpga

SOURCE_FILES = mp_fpga.v# ASSIGNMENT_FILES = ../scripts/mp_fpga.qpf ../scripts/mp_fpga.qsf # ASSIGNMENT_FILES = ../scripts/mp_fpga.qpf mp_fpga.qsf

ASSIGNMENT_FILES = mp_fpga.qpf mp_fpga.qsf

# ################################################################### Main Targets# # all: build everything# clean: remove output files and database# ##################################################################

all: smart.log $(PROJECT).asm.rpt $(PROJECT).tan.rpt

clean:

rm -rf *.rpt *.chg smart.log *.htm *.eqn *.pin *.sof *.pof db

map: smart.log $(PROJECT).map.rpt

fit: smart.log $(PROJECT).fit.rpt

asm: smart.log $(PROJECT).asm.rpt

tan: smart.log $(PROJECT).tan.rpt

smart: smart.log

# ################################################################### Executable Configuration# ##################################################################

MAP_ARGS = --family=STRATIXII --source=$(SOURCE_FILES)

FIT_ARGS = --part=EP2S90F1020C5

ASM_ARGS =# TAN_ARGS =

TAN_ARGS = --sdc=mp_fpga.sdc

# ################################################################### Target implementations# ##################################################################

STAMP = echo done >

$(PROJECT).map.rpt: map.chg $(SOURCE_FILES)

quartus_map $(MAP_ARGS) $(PROJECT)

$(STAMP) fit.chg

$(PROJECT).fit.rpt: fit.chg $(PROJECT).map.rpt

quartus_fit $(FIT_ARGS) $(PROJECT)

$(STAMP) asm.chg

$(STAMP) tan.chg

$(PROJECT).asm.rpt: asm.chg $(PROJECT).fit.rpt

quartus_asm $(ASM_ARGS) $(PROJECT)

$(PROJECT).tan.rpt: tan.chg $(PROJECT).fit.rpt

quartus_sta $(TAN_ARGS) $(PROJECT)

smart.log: $(ASSIGNMENT_FILES)

quartus_sh --determine_smart_action $(PROJECT) > smart.log

# ################################################################### Project initialization# ##################################################################

$(ASSIGNMENT_FILES):

quartus_sh --prepare $(PROJECT)

map.chg:

$(STAMP) map.chg

fit.chg:

$(STAMP) fit.chg

tan.chg:

$(STAMP) tan.chg

asm.chg:

$(STAMP) asm.chg

3 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Here is an update:

    - using quartus version 10.1

    - I run both the Makefile and the GUI in a linux environment

    - When I run "quartus_sh --flow compile mp_fpga" from a perl script it also finds the qxp dir.

    Running from a perl script solves my problem but I still would like to know why running from a Makefile fails.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    If you use a makefile, then you will need to call the exact same EXEs that "--flow" calls. Simply look at the *.flow.rpt report to learn what --flow does. Then simply emulate that from your make file.

    Hope that helps
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    To be clear, I am talking about the "Flow Log" section in the .flow.rpt file. That will show you the exact commands that the internal flow used.