Skip to content

Commit 8c2979f

Browse files
committed
Updated build scripts and dependencies
1 parent 48ce064 commit 8c2979f

File tree

4 files changed

+198
-146
lines changed

4 files changed

+198
-146
lines changed

make/configure.mk

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,9 @@ $(CONFIG_VARS): prepare
318318
echo "$(@)=$($(@))" >> "$(CONFIG)"
319319

320320
config: $(CONFIG_VARS)
321-
echo "Architecture: $(ARCHITECTURE_FAMILY)/$(ARCHITECTURE) ($(ARCHITECTURE_CFLAGS))"
322-
echo "Features: $(FEATURES)"
321+
echo "Host architecture: $(HOST_ARCHITECTURE_FAMILY)/$(HOST_ARCHITECTURE) ($(HOST_ARCHITECTURE_CFLAGS))"
322+
echo "Architecture: $(ARCHITECTURE_FAMILY)/$(ARCHITECTURE) ($(ARCHITECTURE_CFLAGS))"
323+
echo "Features: $(FEATURES)"
323324
echo "Configured OK"
324325

325326
help: | pathvars toolvars sysvars

make/paths.mk

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
ifndef PREFIX
2323
ifeq ($(PLATFORM),Windows)
2424
PREFIX := $(BASEDIR)/INSTALL
25+
else ifeq ($(CROSS_COMPILE),1)
26+
PREFIX := $(BASEDIR)/INSTALL
2527
else
2628
PREFIX := /usr/local
2729
endif
@@ -65,6 +67,15 @@ ifndef INCDIR
6567
INCDIR := $(PREFIX)/include
6668
endif
6769

70+
# Shared resources
71+
ifndef SHAREDDIR
72+
ifeq ($(PLATFORM),Haiku)
73+
SHAREDDIR := $(PREFIX)/data
74+
else
75+
SHAREDDIR := $(PREFIX)/share
76+
endif
77+
endif
78+
6879
# Temporary directory
6980
ifndef TEMPDIR
7081
ifeq ($(PLATFORM),Windows)

make/system.mk

Lines changed: 103 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -38,108 +38,119 @@ ifndef PLATFORM
3838
PLATFORM := Linux
3939
else ifeq ($(findstring SunOS,$(BUILD_SYSTEM)),SunOS)
4040
PLATFORM := Solaris
41+
else ifeq ($(findstring Darwin,$(BUILD_SYSTEM)),Darwin)
42+
PLATFORM := MacOS
43+
else ifeq ($(findstring Haiku,$(BUILD_SYSTEM)),Haiku)
44+
PLATFORM := Haiku
4145
endif
4246
endif
4347

4448
# Detect system processor architecture
45-
ifndef ARCHITECTURE
46-
ifeq ($(PLATFORM),Windows)
47-
BUILD_ARCH := $(PROCESSOR_ARCHITECTURE)
48-
else
49-
BUILD_ARCH := $(shell uname -m)
50-
endif
49+
ifeq ($(PLATFORM),Windows)
50+
HOST_BUILD_ARCH := $(PROCESSOR_ARCHITECTURE)
5151
else
52-
BUILD_ARCH := $(ARCHITECTURE)
52+
HOST_BUILD_ARCH := $(shell uname -m)
5353
endif
54+
BUILD_ARCH := $(if $(ARCHITECTURE),$(ARCHITECTURE),$(HOST_BUILD_ARCH))
5455

55-
# Set actual architecture
56+
# Set actual architecture for HOST and TARGET builds
5657
# The current architecture can be obtained by: gcc -Q --help=target
57-
ifeq ($(BUILD_ARCH),armel)
58-
override ARCHITECTURE = $(BUILD_ARCH)
59-
ARCHITECTURE_FAMILY = generic
60-
ARCHITECTURE_CFLAGS :=
61-
else ifeq ($(BUILD_ARCH),armhf)
62-
override ARCHITECTURE = arm32
63-
ARCHITECTURE_FAMILY = arm32
64-
ARCHITECTURE_CFLAGS := -march=armv7-a+fp -marm
65-
else ifeq ($(patsubst armv6%,armv6,$(BUILD_ARCH)),armv6)
66-
override ARCHITECTURE = arm32
67-
ARCHITECTURE_FAMILY = arm32
68-
ARCHITECTURE_CFLAGS := -march=armv6 -marm
69-
else ifeq ($(patsubst armv7ve%,armv7ve,$(BUILD_ARCH)),armv7ve)
70-
override ARCHITECTURE = arm32
71-
ARCHITECTURE_FAMILY = arm32
72-
ARCHITECTURE_CFLAGS := -march=armv7ve -marm
73-
else ifeq ($(patsubst armv7%,armv7,$(BUILD_ARCH)),armv7)
74-
override ARCHITECTURE = arm32
75-
ARCHITECTURE_FAMILY = arm32
76-
ARCHITECTURE_CFLAGS := -march=armv7-a -marm
77-
else ifeq ($(patsubst armv8%,armv8,$(BUILD_ARCH)),armv8)
78-
override ARCHITECTURE = arm32
79-
ARCHITECTURE_FAMILY = arm32
80-
ARCHITECTURE_CFLAGS := -march=armv7-a -marm
81-
else ifeq ($(patsubst aarch64%,aarch64,$(BUILD_ARCH)),aarch64)
82-
override ARCHITECTURE = aarch64
83-
ARCHITECTURE_FAMILY = aarch64
84-
ARCHITECTURE_CFLAGS := -march=armv8-a
85-
else ifeq ($(BUILD_ARCH),arm64)
86-
override ARCHITECTURE = aarch64
87-
ARCHITECTURE_FAMILY = aarch64
88-
ARCHITECTURE_CFLAGS := -march=armv8-a
89-
else ifeq ($(BUILD_ARCH),arm32)
90-
override ARCHITECTURE = arm32
91-
ARCHITECTURE_FAMILY = arm32
92-
ARCHITECTURE_CFLAGS := -march=armv6 -marm
93-
else ifeq ($(BUILD_ARCH),arm)
94-
override ARCHITECTURE = arm32
95-
ARCHITECTURE_FAMILY = arm32
96-
ARCHITECTURE_CFLAGS := -march=armv6 -marm
97-
else ifeq ($(patsubst %x86_64%,x86_64,$(BUILD_ARCH)),x86_64)
98-
override ARCHITECTURE = x86_64
99-
ARCHITECTURE_FAMILY = x86_64
100-
ARCHITECTURE_CFLAGS := -march=x86-64 -m64
101-
else ifeq ($(patsubst %amd64%,amd64,$(BUILD_ARCH)),amd64)
102-
override ARCHITECTURE = x86_64
103-
ARCHITECTURE_FAMILY = x86_64
104-
ARCHITECTURE_CFLAGS := -march=x86-64 -m64
105-
else ifeq ($(patsubst %AMD64%,AMD64,$(BUILD_ARCH)),AMD64)
106-
override ARCHITECTURE = x86_64
107-
ARCHITECTURE_FAMILY = x86_64
108-
ARCHITECTURE_CFLAGS := -march=x86-64 -m64
109-
else ifeq ($(BUILD_ARCH),i86pc)
110-
override ARCHITECTURE = x86_64
111-
ARCHITECTURE_FAMILY = x86_64
112-
ARCHITECTURE_CFLAGS := -march=x86-64 -m64
113-
else ifeq ($(patsubst %i686%,i686,$(BUILD_ARCH)),i686)
114-
override ARCHITECTURE = i686
115-
ARCHITECTURE_FAMILY = ia32
116-
ARCHITECTURE_CFLAGS := -march=i686 -m32
117-
else ifeq ($(patsubst i%86,i586,$(BUILD_ARCH)),i586)
118-
override ARCHITECTURE = i586
119-
ARCHITECTURE_FAMILY = ia32
120-
ARCHITECTURE_CFLAGS := -march=i586 -m32
121-
else ifeq ($(BUILD_ARCH),x86)
122-
override ARCHITECTURE = i686
123-
ARCHITECTURE_FAMILY = ia32
124-
ARCHITECTURE_CFLAGS := -march=i686 -m32
125-
else ifeq ($(BUILD_ARCH),riscv32)
126-
override ARCHITECTURE = riscv32
127-
ARCHITECTURE_FAMILY = riscv32
128-
ARCHITECTURE_CFLAGS := -march=rv32imafdc -mabi=lp32d
129-
else ifeq ($(BUILD_ARCH),riscv64)
130-
override ARCHITECTURE = riscv64
131-
ARCHITECTURE_FAMILY = riscv64
132-
ARCHITECTURE_CFLAGS := -march=rv64imafdc -mabi=lp64d
133-
else
134-
override ARCHITECTURE = $(BUILD_ARCH)
135-
ARCHITECTURE_FAMILY = generic
136-
ARCHITECTURE_CFLAGS :=
137-
endif
58+
define detect_architecture =
59+
ifeq ($(1),armel)
60+
$(2)_NAME = $(1)
61+
$(2)_FAMILY = generic
62+
$(2)_CFLAGS :=
63+
else ifeq ($(1),armhf)
64+
$(2)_NAME = arm32
65+
$(2)_FAMILY = arm32
66+
$(2)_CFLAGS := -march=armv7-a+fp -marm
67+
else ifeq ($(patsubst armv6%,armv6,$(1)),armv6)
68+
$(2)_NAME = arm32
69+
$(2)_FAMILY = arm32
70+
$(2)_CFLAGS := -march=armv6 -marm
71+
else ifeq ($(patsubst armv7ve%,armv7ve,$(1)),armv7ve)
72+
$(2)_NAME = arm32
73+
$(2)_FAMILY = arm32
74+
$(2)_CFLAGS := -march=armv7ve -marm
75+
else ifeq ($(patsubst armv7%,armv7,$(1)),armv7)
76+
$(2)_NAME = arm32
77+
$(2)_FAMILY = arm32
78+
$(2)_CFLAGS := -march=armv7-a -marm
79+
else ifeq ($(patsubst armv8%,armv8,$(1)),armv8)
80+
$(2)_NAME = arm32
81+
$(2)_FAMILY = arm32
82+
$(2)_CFLAGS := -march=armv7-a -marm
83+
else ifeq ($(patsubst aarch64%,aarch64,$(1)),aarch64)
84+
$(2)_NAME = aarch64
85+
$(2)_FAMILY = aarch64
86+
$(2)_CFLAGS := -march=armv8-a
87+
else ifeq ($(1),arm64)
88+
$(2)_NAME = aarch64
89+
$(2)_FAMILY = aarch64
90+
$(2)_CFLAGS := -march=armv8-a
91+
else ifeq ($(1),arm32)
92+
$(2)_NAME = arm32
93+
$(2)_FAMILY = arm32
94+
$(2)_CFLAGS := -march=armv6 -marm
95+
else ifeq ($(1),arm)
96+
$(2)_NAME = arm32
97+
$(2)_FAMILY = arm32
98+
$(2)_CFLAGS := -march=armv6 -marm
99+
else ifeq ($(patsubst %x86_64%,x86_64,$(1)),x86_64)
100+
$(2)_NAME = x86_64
101+
$(2)_FAMILY = x86_64
102+
$(2)_CFLAGS := -march=x86-64 -m64
103+
else ifeq ($(patsubst %amd64%,amd64,$(1)),amd64)
104+
$(2)_NAME = x86_64
105+
$(2)_FAMILY = x86_64
106+
$(2)_CFLAGS := -march=x86-64 -m64
107+
else ifeq ($(patsubst %AMD64%,AMD64,$(1)),AMD64)
108+
$(2)_NAME = x86_64
109+
$(2)_FAMILY = x86_64
110+
$(2)_CFLAGS := -march=x86-64 -m64
111+
else ifeq ($(1),i86pc)
112+
$(2)_NAME = x86_64
113+
$(2)_FAMILY = x86_64
114+
$(2)_CFLAGS := -march=x86-64 -m64
115+
else ifeq ($(patsubst %i686%,i686,$(1)),i686)
116+
$(2)_NAME = i686
117+
$(2)_FAMILY = ia32
118+
$(2)_CFLAGS := -march=i686 -m32
119+
else ifeq ($(patsubst i%86,i586,$(1)),i586)
120+
$(2)_NAME = i586
121+
$(2)_FAMILY = ia32
122+
$(2)_CFLAGS := -march=i586 -m32
123+
else ifeq ($(1),x86)
124+
$(2)_NAME = i686
125+
$(2)_FAMILY = ia32
126+
$(2)_CFLAGS := -march=i686 -m32
127+
else ifeq ($(1),riscv32)
128+
$(2)_NAME = riscv32
129+
$(2)_FAMILY = riscv32
130+
$(2)_CFLAGS := -march=rv32imafdc -mabi=lp32d
131+
else ifeq ($(1),riscv64)
132+
$(2)_NAME = riscv64
133+
$(2)_FAMILY = riscv64
134+
$(2)_CFLAGS := -march=rv64imafdc -mabi=lp64d
135+
else
136+
$(2)_NAME = $(1)
137+
$(2)_FAMILY = generic
138+
$(2)_CFLAGS :=
139+
endif
140+
endef
141+
142+
$(eval $(call detect_architecture,$(BUILD_ARCH),ARCHITECTURE))
143+
$(eval $(call detect_architecture,$(HOST_BUILD_ARCH),HOST_ARCHITECTURE))
144+
145+
override ARCHITECTURE = $(ARCHITECTURE_NAME)
146+
override HOST_ARCHITECTURE = $(HOST_ARCHITECTURE_NAME)
138147

139148
# Extension of libraries
140149
ifndef LIBRARY_EXT
141150
ifeq ($(PLATFORM),Windows)
142151
LIBRARY_EXT := .dll
152+
else ifeq ($(PLATFORM),MacOS)
153+
LIBRARY_EXT := .dylib
143154
else
144155
LIBRARY_EXT := .so
145156
endif
@@ -185,6 +196,9 @@ COMMON_VARS = \
185196
EXECUTABLE_EXT \
186197
EXPORT_SYMBOLS \
187198
FEATURES \
199+
HOST_ARCHITECTURE \
200+
HOST_ARCHITECTURE_FAMILY \
201+
HOST_ARCHITECTURE_CFLAGS \
188202
INSTALL_HEADERS \
189203
LIBRARY_EXT \
190204
LIBRARY_PREFIX \

0 commit comments

Comments
 (0)