| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- ##############################################################################
- # Product: Makefile for Embedded Test (ET) for Windows *HOST*
- # Last Updated for Version: 7.2.2
- # Date of the Last Update: 2023-01-30
- #
- # Q u a n t u m L e a P s
- # ------------------------
- # Modern Embedded Software
- #
- # Copyright (C) 2005 Quantum Leaps, LLC. All rights reserved.
- #
- # This program is open source 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 3 of the License, or
- # (at your option) any later version.
- #
- # Alternatively, this program may be distributed and modified under the
- # terms of Quantum Leaps commercial licenses, which expressly supersede
- # the GNU General Public License and are specifically designed for
- # licensees interested in retaining the proprietary status of their code.
- #
- # 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. If not, see <www.gnu.org/licenses/>.
- #
- # Contact information:
- # <www.state-machine.com/licensing>
- # <info@state-machine.com>
- ##############################################################################
- #
- # examples of invoking this Makefile:
- # make # make and run the Python tests in the current directory
- # make TESTS=test*.py # make and run the selected tests in the curr. dir.
- # make HOST=localhost:7705 # connect to host:port
- # make norun # only make but not run the tests
- # make clean # cleanup the build
- # make debug # only run tests in DEBUG mode
- #
- # NOTE:
- # To use this Makefile on Windows, you will need the GNU make utility, which
- # is included in the QTools collection for Windows, see:
- # https://github.com/QuantumLeaps/qtools
- #
- #-----------------------------------------------------------------------------
- # project name:
- PROJECT := test
- #-----------------------------------------------------------------------------
- # project directories:
- #
- QPC := ../../..
- ET := ../../et
- # list of all source directories used by this project
- VPATH := . \
- $(QPC)/src/qf \
- $(QPC)/src/qs \
- $(ET)
- # list of all include directories needed by this project
- INCLUDES := -I. \
- -I$(QPC)/include \
- -I$(ET)
- #-----------------------------------------------------------------------------
- # project files:
- #
- # C source files...
- C_SRCS := \
- qf_qeq.c \
- qs.c \
- qs_rx.c \
- test.c \
- et.c \
- et_host.c
- # C++ source files...
- CPP_SRCS :=
- LIB_DIRS :=
- LIBS :=
- # defines...
- DEFINES := -DQ_SPY
- #============================================================================
- # Typically you should not need to change anything below this line
- #-----------------------------------------------------------------------------
- # GNU toolset:
- #
- # NOTE:
- # GNU toolset (MinGW) is included in the QTools collection for Windows, see:
- # https://www.state-machine.com/qtools
- # It is assumed that %QTOOLS%\bin directory is added to the PATH
- #
- CC := gcc
- CPP := g++
- LINK := gcc # for C programs
- #LINK := g++ # for C++ programs
- #-----------------------------------------------------------------------------
- # basic utilities (depends on the OS this Makefile runs on):
- #
- ifeq ($(OS),Windows_NT)
- MKDIR := mkdir
- RM := rm
- TARGET_EXT := .exe
- else ifeq ($(OSTYPE),cygwin)
- MKDIR := mkdir -p
- RM := rm -f
- TARGET_EXT := .exe
- else
- MKDIR := mkdir -p
- RM := rm -f
- TARGET_EXT :=
- endif
- #-----------------------------------------------------------------------------
- # build options...
- BIN_DIR := build
- CFLAGS := -c -g -O -fno-pie -std=c11 -pedantic -Wall -Wextra -W \
- $(INCLUDES) $(DEFINES) -DQ_HOST
- CPPFLAGS := -c -g -O -fno-pie -std=c++11 -pedantic -Wall -Wextra \
- -fno-rtti -fno-exceptions \
- $(INCLUDES) $(DEFINES) -DQ_HOST
- ifndef GCC_OLD
- LINKFLAGS := -no-pie
- endif
- ifdef GCOV
- CFLAGS += -fprofile-arcs -ftest-coverage
- CPPFLAGS += -fprofile-arcs -ftest-coverage
- LINKFLAGS += -lgcov --coverage
- endif
- #-----------------------------------------------------------------------------
- C_OBJS := $(patsubst %.c,%.o, $(C_SRCS))
- CPP_OBJS := $(patsubst %.cpp,%.o, $(CPP_SRCS))
- TARGET_EXE := $(BIN_DIR)/$(PROJECT)$(TARGET_EXT)
- C_OBJS_EXT := $(addprefix $(BIN_DIR)/, $(C_OBJS))
- C_DEPS_EXT := $(patsubst %.o,%.d, $(C_OBJS_EXT))
- CPP_OBJS_EXT := $(addprefix $(BIN_DIR)/, $(CPP_OBJS))
- CPP_DEPS_EXT := $(patsubst %.o,%.d, $(CPP_OBJS_EXT))
- #-----------------------------------------------------------------------------
- # rules
- #
- .PHONY : norun clean show
- ifeq ($(MAKECMDGOALS),norun)
- all : $(TARGET_EXE)
- norun : all
- else
- all : $(TARGET_EXE) run
- endif
- $(TARGET_EXE) : $(C_OBJS_EXT) $(CPP_OBJS_EXT)
- $(CC) $(CFLAGS) $(QPC)/src/qs/qstamp.c -o $(BIN_DIR)/qstamp.o
- $(LINK) $(LINKFLAGS) $(LIB_DIRS) -o $@ $^ $(BIN_DIR)/qstamp.o $(LIBS)
- run : $(TARGET_EXE)
- $(TARGET_EXE)
- $(BIN_DIR)/%.d : %.cpp
- $(CPP) -MM -MT $(@:.d=.o) $(CPPFLAGS) $< > $@
- $(BIN_DIR)/%.d : %.c
- $(CC) -MM -MT $(@:.d=.o) $(CFLAGS) $< > $@
- $(BIN_DIR)/%.o : %.c
- $(CC) $(CFLAGS) $< -o $@
- $(BIN_DIR)/%.o : %.cpp
- $(CPP) $(CPPFLAGS) $< -o $@
- # create BIN_DIR and include dependencies only if needed
- ifneq ($(MAKECMDGOALS),clean)
- ifneq ($(MAKECMDGOALS),show)
- ifneq ($(MAKECMDGOALS),debug)
- ifeq ("$(wildcard $(BIN_DIR))","")
- $(shell $(MKDIR) $(BIN_DIR))
- endif
- -include $(C_DEPS_EXT) $(CPP_DEPS_EXT)
- endif
- endif
- endif
- clean :
- -$(RM) $(BIN_DIR)/*.*
- show :
- @echo PROJECT = $(PROJECT)
- @echo TARGET_EXE = $(TARGET_EXE)
- @echo VPATH = $(VPATH)
- @echo C_SRCS = $(C_SRCS)
- @echo CPP_SRCS = $(CPP_SRCS)
- @echo C_DEPS_EXT = $(C_DEPS_EXT)
- @echo C_OBJS_EXT = $(C_OBJS_EXT)
- @echo C_DEPS_EXT = $(C_DEPS_EXT)
- @echo CPP_DEPS_EXT = $(CPP_DEPS_EXT)
- @echo CPP_OBJS_EXT = $(CPP_OBJS_EXT)
- @echo LIB_DIRS = $(LIB_DIRS)
- @echo LIBS = $(LIBS)
- @echo DEFINES = $(DEFINES)
|