blob: 37fe5b74a3eb1bff2c0d8c3b3d22a49c4dbf62a2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# SPDX-License-Identifier: GPL-2.0
# 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
|