# SPDX-License-Identifier: GPL-2.0-only # BuildConfig module - compiles build configuration from pre-generated source # # NOTE: BuildConfig.cpp is generated by mk/configure.mk into build/obj/generated/ # This Makefile only compiles it into libbuildconfig.a srctree ?= $(shell dirname $(CURDIR)) KBUILD_OUTPUT ?= $(srctree)/build # Use the generated BuildConfig.cpp from configure.mk GENERATED_DIR := $(KBUILD_OUTPUT)/obj/generated OBJDIR := $(KBUILD_OUTPUT)/obj/buildconfig LIBDIR := $(KBUILD_OUTPUT)/lib # Qt paths - use defaults if .config doesn't exist -include $(KBUILD_OUTPUT)/.config QT_INSTALL_PREFIX ?= $(if $(CONFIG_QT_PREFIX),$(CONFIG_QT_PREFIX),/usr) # Source files - use the pre-generated BuildConfig.cpp GENERATED_SOURCE := $(GENERATED_DIR)/BuildConfig.cpp OBJECTS := $(OBJDIR)/BuildConfig.o # Detect Qt include path QT_INCLUDE := $(shell pkg-config --cflags-only-I Qt6Core 2>/dev/null | sed 's/-I//g') ifeq ($(QT_INCLUDE),) QT_INCLUDE := $(QT_INSTALL_PREFIX)/include/qt6 endif # Compiler flags CXXFLAGS ?= -O2 -g -fPIC -std=c++17 -Wall -pipe INCLUDES := -I$(srctree)/include \ -I$(GENERATED_DIR) \ -I$(srctree)/buildconfig \ $(shell pkg-config --cflags Qt6Core Qt6Gui 2>/dev/null || echo "-I$(QT_INCLUDE) -I$(QT_INCLUDE)/QtCore -I$(QT_INCLUDE)/QtGui") ifeq ($(V),1) Q := else Q := @ endif all: $(LIBDIR)/libbuildconfig.a $(LIBDIR)/libbuildconfig.a: $(OBJECTS) @mkdir -p $(@D) $(Q)$(AR) rcs $@ $^ @echo " Built " # Compile the pre-generated BuildConfig.cpp $(OBJDIR)/BuildConfig.o: $(GENERATED_SOURCE) | $(OBJDIR) @echo " CXX $<" $(Q)$(CXX) $(CXXFLAGS) $(INCLUDES) -c -o $@ $< $(OBJDIR): @mkdir -p $@ clean: $(Q)rm -rf $(OBJDIR) $(LIBDIR)/libbuildconfig.a .PHONY: all clean