126 lignes
3.8 KiB
Makefile
126 lignes
3.8 KiB
Makefile
|
|
# Makefile pour illustrer la notion de surcharge d'opérateur en c++
|
||
|
|
# incluant une nouvelle façon de créer un binaire exécutable
|
||
|
|
# + une nouvelle façon de sécuriser ce binaire.
|
||
|
|
|
||
|
|
# Auteur : Eric Bachard
|
||
|
|
# Ce document est sous Licence GPL v2 23 Septembre 2024
|
||
|
|
# voir : http://www.gnu.org/licenses/gpl-2.0.html
|
||
|
|
|
||
|
|
UNAME_S = `uname -s`
|
||
|
|
BUILD_DIR = build
|
||
|
|
INCLUDE_DIR = inc
|
||
|
|
APPLICATION_NAME = Modulations_Numeriques
|
||
|
|
BINARY_NAME = ${BUILD_DIR}/${APPLICATION_NAME}
|
||
|
|
|
||
|
|
# please adapt the value to the gcc version
|
||
|
|
# available on your machine
|
||
|
|
#G++_VERSION = ...
|
||
|
|
|
||
|
|
CXX = g++${G++_VERSION}
|
||
|
|
|
||
|
|
SOURCES_DIR = src
|
||
|
|
DEBUG_EXT = _debug
|
||
|
|
CXX_STD=-std=c++20
|
||
|
|
|
||
|
|
INC_BACKEND = ${INCLUDE_DIR}/backend
|
||
|
|
INC_FRONTEND = ${INCLUDE_DIR}/frontend
|
||
|
|
LOCALIZATION_INC = localization
|
||
|
|
|
||
|
|
CXX_FLAGS += -I ${INCLUDE_DIR} -I ${LOCALIZATION_INC} -I ${INC_BACKEND} -I ${INC_FRONTEND} -I ${SOURCES_DIR}/gl3w/
|
||
|
|
|
||
|
|
CXX_FLAGS += -Wall -ansi -pedantic ${CXX_STD}
|
||
|
|
|
||
|
|
CXX_FLAGS += `pkg-config --cflags --libs sdl3`
|
||
|
|
|
||
|
|
LDD_CXX_FLAGS += `pkg-config --libs sdl3`
|
||
|
|
|
||
|
|
CXX_FLAGS_DEBUG = -g -DDEBUG -Wall -Wformat
|
||
|
|
|
||
|
|
|
||
|
|
LIBS += -lm -lGL -dl ${LDD_CXX_FLAGS}
|
||
|
|
|
||
|
|
include secu.mk
|
||
|
|
|
||
|
|
# à modifier en fonction de vos besoins !!
|
||
|
|
SRC_BACKEND = ${SOURCES_DIR}/backend
|
||
|
|
SRC_FRONTEND = ${SOURCES_DIR}/frontend
|
||
|
|
|
||
|
|
SOURCES = \
|
||
|
|
${SOURCES_DIR}/gl_helpers.cxx \
|
||
|
|
${SOURCES_DIR}/modulations.cxx \
|
||
|
|
${SOURCES_DIR}/imgui_utils.cxx \
|
||
|
|
${SOURCES_DIR}/application.cxx \
|
||
|
|
${SOURCES_DIR}/engine.cxx \
|
||
|
|
${SOURCES_DIR}/main.cxx
|
||
|
|
|
||
|
|
SOURCES += \
|
||
|
|
${SRC_FRONTEND}/imgui.cxx \
|
||
|
|
${SRC_FRONTEND}/imgui_themes.cxx \
|
||
|
|
${SRC_FRONTEND}/imgui_demo.cxx \
|
||
|
|
${SRC_FRONTEND}/imgui_draw.cxx \
|
||
|
|
${SRC_FRONTEND}/imgui_tables.cxx \
|
||
|
|
${SRC_FRONTEND}/imgui_widgets.cxx
|
||
|
|
|
||
|
|
SOURCES += \
|
||
|
|
${SRC_BACKEND}/imgui_impl_sdl3.cxx \
|
||
|
|
${SRC_BACKEND}/imgui_impl_opengl3.cxx
|
||
|
|
|
||
|
|
|
||
|
|
# todo : embed the DroidSans font
|
||
|
|
# ${SOURCES_DIR}/${SRC_FRONTEND}/droidsans.cxx
|
||
|
|
|
||
|
|
|
||
|
|
# works but looks buggy (only the first item of the list contains the right prefix)
|
||
|
|
# that's the reason why the rule is slightly modified in the final collect
|
||
|
|
OBJS = $(addsuffix .o, $(basename $(notdir $(SOURCES))))
|
||
|
|
D_OBJS = $(addsuffix .do, $(basename $(notdir $(SOURCES))))
|
||
|
|
|
||
|
|
##---------------------------------------------------------------------
|
||
|
|
## BUILD RULES
|
||
|
|
##---------------------------------------------------------------------
|
||
|
|
|
||
|
|
#%.o:${SOURCES_DIR}/%.cxx
|
||
|
|
# $(CXX) $(CXX_STD) ${EXTRA_CXX_FLAGS} ${CXX_FLAGS} -c -o ${BUILD_DIR}/$@ $<
|
||
|
|
|
||
|
|
#%.do:${SOURCES_DIR}/%.cxx
|
||
|
|
# $(CXX) $(CXX_STD) ${CXX_FLAGS} ${CXX_FLAGS_DEBUG} ${EXTRA_CXX_FLAGS} ${CXX_FLAGS} ${CXX_FLAGS_DEBUG} -c -o ${BUILD_DIR}/$@ $<
|
||
|
|
|
||
|
|
%.o:${SOURCES_DIR}/%.cxx
|
||
|
|
$(CXX) $(CXX_STD) ${CXX_FLAGS} ${EXTRA_CXX_FLAGS} $(CXXFLAGS) -c -o ${BUILD_DIR}/$@ $<
|
||
|
|
|
||
|
|
%.o:${SRC_BACKEND}/%.cxx
|
||
|
|
$(CXX) $(CXX_STD) ${CXX_FLAGS} ${EXTRA_CXX_FLAGS} $(CXXFLAGS) -c -o ${BUILD_DIR}/$@ $<
|
||
|
|
|
||
|
|
%.o:${SRC_FRONTEND}/%.cxx
|
||
|
|
$(CXX) $(CXX_STD) ${CXX_FLAGS} ${EXTRA_CXX_FLAGS} $(CXXFLAGS) -c -o ${BUILD_DIR}/$@ $<
|
||
|
|
|
||
|
|
%.do:${SOURCES_DIR}/%.cxx
|
||
|
|
$(CXX) $(CXX_STD) ${CXX_FLAGS} ${CXX_FLAGS_DEBUG} ${EXTRA_CXX_FLAGS} $(CXXFLAGS) -c -o ${BUILD_DIR}/$@ $<
|
||
|
|
|
||
|
|
%.do:${SRC_BACKEND}/%.cxx
|
||
|
|
$(CXX) $(CXX_STD) ${CXX_FLAGS} ${CXX_FLAGS_DEBUG} ${EXTRA_CXX_FLAGS} $(CXXFLAGS) -c -o ${BUILD_DIR}/$@ $<
|
||
|
|
|
||
|
|
%.do:${SRC_FRONTEND}/%.cxx
|
||
|
|
$(CXX) $(CXX_STD) ${CXX_FLAGS} ${CXX_FLAGS_DEBUG} ${EXTRA_CXX_FLAGS} $(CXXFLAGS) -c -o ${BUILD_DIR}/$@ $<
|
||
|
|
|
||
|
|
%.do:${SOURCES_DIR}/gl3w/GL/%.c
|
||
|
|
$(CC) $(CFLAGS) -c -o ${BUILD_DIR}/$@ $<
|
||
|
|
|
||
|
|
all: ${BINARY_NAME} ${BINARY_NAME}${DEBUG_EXT}
|
||
|
|
@echo Build complete for ${UNAME_S}
|
||
|
|
|
||
|
|
${BINARY_NAME}: ${OBJS}
|
||
|
|
$(CXX) $(CXX_STD) ${CXX_FLAGS} ${EXTRA_CXX_FLAGS} -DNDEBUG -o $@ ${BUILD_DIR}/*.o ${LIBS}
|
||
|
|
strip $@
|
||
|
|
rm -f ${BUILD_DIR}/*.o
|
||
|
|
|
||
|
|
${BINARY_NAME}_debug: ${D_OBJS}
|
||
|
|
$(CXX) $(CXX_STD) ${CXX_FLAGS} ${CXX_FLAGS_DEBUG} ${EXTRA_CXX_FLAGS} -o $@ ${BUILD_DIR}/*.do ${LIBS}
|
||
|
|
rm -f ${BUILD_DIR}/*.do
|
||
|
|
|
||
|
|
clean:
|
||
|
|
echo Effacement de : ${BINARY_NAME}*
|
||
|
|
rm -f ${BINARY_NAME}* ${BUILD_DIR}/*.o ${BUILD_DIR}/*.do
|
||
|
|
|
||
|
|
|