Backport the enhanced branch's C support

Currently, the Makefile only supports C++, despite Glad being C.
This commit is contained in:
Clownacy 2020-01-15 07:21:41 +00:00
parent d76b074aa0
commit 2a497a4aae

View file

@ -8,6 +8,7 @@ ASSETS_DIRECTORY = assets
# Default options # Default options
RENDERER = SDLTexture RENDERER = SDLTexture
ALL_CFLAGS = $(CFLAGS)
ALL_CXXFLAGS = $(CXXFLAGS) ALL_CXXFLAGS = $(CXXFLAGS)
ALL_LDFLAGS = $(LDFLAGS) ALL_LDFLAGS = $(LDFLAGS)
ALL_LIBS = $(LIBS) ALL_LIBS = $(LIBS)
@ -17,11 +18,13 @@ ifeq ($(WINDOWS), 1)
endif endif
ifeq ($(RELEASE), 1) ifeq ($(RELEASE), 1)
ALL_CFLAGS += -O3 -DNDEBUG
ALL_CXXFLAGS += -O3 -DNDEBUG ALL_CXXFLAGS += -O3 -DNDEBUG
ALL_LDFLAGS += -s ALL_LDFLAGS += -s
FILENAME_DEF = CSE2$(EXE_EXTENSION) FILENAME_DEF = CSE2$(EXE_EXTENSION)
DOCONFIG_FILENAME_DEF = DoConfig$(EXE_EXTENSION) DOCONFIG_FILENAME_DEF = DoConfig$(EXE_EXTENSION)
else else
ALL_CFLAGS += -Og -ggdb3
ALL_CXXFLAGS += -Og -ggdb3 ALL_CXXFLAGS += -Og -ggdb3
FILENAME_DEF = CSE2_debug$(EXE_EXTENSION) FILENAME_DEF = CSE2_debug$(EXE_EXTENSION)
DOCONFIG_FILENAME_DEF = DoConfig_debug$(EXE_EXTENSION) DOCONFIG_FILENAME_DEF = DoConfig_debug$(EXE_EXTENSION)
@ -30,7 +33,7 @@ endif
ifeq ($(JAPANESE), 1) ifeq ($(JAPANESE), 1)
DATA_DIRECTORY = $(ASSETS_DIRECTORY)/data_jp DATA_DIRECTORY = $(ASSETS_DIRECTORY)/data_jp
CSE2_CXXFLAGS += -DJAPANESE DEFINES += -DJAPANESE
else else
DATA_DIRECTORY = $(ASSETS_DIRECTORY)/data_en DATA_DIRECTORY = $(ASSETS_DIRECTORY)/data_en
endif endif
@ -39,20 +42,22 @@ FILENAME ?= $(FILENAME_DEF)
DOCONFIG_FILENAME ?= $(DOCONFIG_FILENAME_DEF) DOCONFIG_FILENAME ?= $(DOCONFIG_FILENAME_DEF)
ifeq ($(FIX_BUGS), 1) ifeq ($(FIX_BUGS), 1)
CSE2_CXXFLAGS += -DFIX_BUGS DEFINES += -DFIX_BUGS
endif endif
ifeq ($(DEBUG_SAVE), 1) ifeq ($(DEBUG_SAVE), 1)
CSE2_CXXFLAGS += -DDEBUG_SAVE DEFINES += -DDEBUG_SAVE
endif endif
ifeq ($(WARNINGS), 1) ifeq ($(WARNINGS), 1)
ALL_CFLAGS += -Wall -Wextra -pedantic
ALL_CXXFLAGS += -Wall -Wextra -pedantic ALL_CXXFLAGS += -Wall -Wextra -pedantic
endif endif
ifeq ($(WARNINGS_ALL), 1) ifeq ($(WARNINGS_ALL), 1)
ifneq ($(findstring clang,$(CXX)),) ifneq ($(findstring clang,$(CXX)),)
# Use clang-specific flag -Weverything # Use clang-specific flag -Weverything
ALL_CFLAGS += -Weverything
ALL_CXXFLAGS += -Weverything ALL_CXXFLAGS += -Weverything
else else
$(warning Couldn't activate all warnings (unsupported compiler)) $(warning Couldn't activate all warnings (unsupported compiler))
@ -60,9 +65,13 @@ ifeq ($(WARNINGS_ALL), 1)
endif endif
ifeq ($(WARNINGS_FATAL), 1) ifeq ($(WARNINGS_FATAL), 1)
ALL_CFLAGS += -Werror
ALL_CXXFLAGS += -Werror ALL_CXXFLAGS += -Werror
endif endif
ALL_CFLAGS += -std=c99 -MMD -MP -MF $@.d
CSE2_CFLAGS += $(shell pkg-config sdl2 --cflags) $(shell pkg-config freetype2 --cflags)
ALL_CXXFLAGS += -std=c++98 -MMD -MP -MF $@.d ALL_CXXFLAGS += -std=c++98 -MMD -MP -MF $@.d
CSE2_CXXFLAGS += $(shell pkg-config sdl2 --cflags) $(shell pkg-config freetype2 --cflags) CSE2_CXXFLAGS += $(shell pkg-config sdl2 --cflags) $(shell pkg-config freetype2 --cflags)
@ -225,6 +234,7 @@ endif
ifeq ($(RENDERER), OpenGL3) ifeq ($(RENDERER), OpenGL3)
SOURCES += src/Backends/Rendering/OpenGL3 external/glad/src/glad SOURCES += src/Backends/Rendering/OpenGL3 external/glad/src/glad
CSE2_CFLAGS += -Iexternal/glad/include
CSE2_CXXFLAGS += -Iexternal/glad/include CSE2_CXXFLAGS += -Iexternal/glad/include
ifeq ($(WINDOWS), 1) ifeq ($(WINDOWS), 1)
@ -262,15 +272,20 @@ $(BUILD_DIRECTORY)/$(FILENAME): $(OBJECTS)
$(info Linking $@) $(info Linking $@)
@$(CXX) $(ALL_CXXFLAGS) $(CSE2_CXXFLAGS) $(ALL_LDFLAGS) $^ -o $@ $(ALL_LIBS) $(CSE2_LIBS) @$(CXX) $(ALL_CXXFLAGS) $(CSE2_CXXFLAGS) $(ALL_LDFLAGS) $^ -o $@ $(ALL_LIBS) $(CSE2_LIBS)
obj/$(FILENAME)/%.o: %.c
@mkdir -p $(@D)
$(info Compiling $<)
@$(CC) $(ALL_CFLAGS) $(CSE2_CFLAGS) $(DEFINES) $< -o $@ -c
obj/$(FILENAME)/%.o: %.cpp obj/$(FILENAME)/%.o: %.cpp
@mkdir -p $(@D) @mkdir -p $(@D)
$(info Compiling $<) $(info Compiling $<)
@$(CXX) $(ALL_CXXFLAGS) $(CSE2_CXXFLAGS) $< -o $@ -c @$(CXX) $(ALL_CXXFLAGS) $(CSE2_CXXFLAGS) $(DEFINES) $< -o $@ -c
obj/$(FILENAME)/src/Resource.o: src/Resource.cpp $(addprefix src/Resource/, $(addsuffix .h, $(RESOURCES))) obj/$(FILENAME)/src/Resource.o: src/Resource.cpp $(addprefix src/Resource/, $(addsuffix .h, $(RESOURCES)))
@mkdir -p $(@D) @mkdir -p $(@D)
$(info Compiling $<) $(info Compiling $<)
@$(CXX) $(ALL_CXXFLAGS) $(CSE2_CXXFLAGS) $< -o $@ -c @$(CXX) $(ALL_CXXFLAGS) $(CSE2_CXXFLAGS) $(DEFINES) $< -o $@ -c
src/Resource/%.h: $(ASSETS_DIRECTORY)/resources/% obj/bin2h src/Resource/%.h: $(ASSETS_DIRECTORY)/resources/% obj/bin2h
@mkdir -p $(@D) @mkdir -p $(@D)