summaryrefslogtreecommitdiff
path: root/archived/projt-launcher/buildconfig/Makefile
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