|
10 | 10 | # 'DEBUG' turns on all warnings as well as flags to help with debugging/finding |
11 | 11 | # problematic code. 'RELEASE' turns on all optimisations as well as warnings. |
12 | 12 | # |
13 | | -# LANGUAGE - selects which programming language to target. Currently C and C++ |
14 | | -# are the only valid options. |
| 13 | +# LANGUAGE - selects which programming language (and standard) to use. Available |
| 14 | +# values: c99, c11, c17, c18, c2x/c23, c++11, c++14, c++17, c++20, etc. |
15 | 15 |
|
16 | 16 | CC = clang |
17 | 17 | PLATFORM = DEFAULT |
18 | 18 | MODE = FAST |
19 | | -LANGUAGE = C |
| 19 | +LANGUAGE = c23 |
20 | 20 |
|
21 | 21 |
|
22 | 22 | # General building options: |
@@ -75,14 +75,15 @@ ifeq ($(PLATFORM),DEFAULT) |
75 | 75 | endif |
76 | 76 |
|
77 | 77 |
|
78 | | -ifeq ($(LANGUAGE),C) |
79 | | - ifeq ($(or $(filter OS_X,$(PLATFORM)),$(USE_C2X_FLAG)),) |
80 | | - GNU_FLAGS = -std=c23 -x c -Wvla |
81 | | - else |
82 | | - GNU_FLAGS = -std=c2x -x c -Wvla |
83 | | - endif |
84 | | -else ifeq ($(LANGUAGE),CPP) |
85 | | - GNU_FLAGS = -std=c++11 -x c++ -fno-exceptions |
| 78 | +# |
| 79 | +# GNU compiler configurations |
| 80 | +# |
| 81 | +ifneq ($(PLATFORM),WIN32_MSVC) |
| 82 | + |
| 83 | +ifneq (,$(filter cpp%,$(LANGUAGE))) |
| 84 | + GNU_FLAGS = -std=$(LANGUAGE) -x c++ -fno-exceptions |
| 85 | +else |
| 86 | + GNU_FLAGS = -std=$(LANGUAGE) -x c -Wvla |
86 | 87 | endif |
87 | 88 |
|
88 | 89 |
|
@@ -150,30 +151,8 @@ endif |
150 | 151 |
|
151 | 152 | GNU_INCLUDES = -I"." -I"include" |
152 | 153 |
|
153 | | - |
154 | | -ifeq ($(PLATFORM),DEFAULT) |
155 | | - ifneq (,$(filter $(CC),mingw32-gcc x86_64-w64-mingw32-g++ w64gcc w32gcc)) |
156 | | - PLATFORM = WIN32_GNU |
157 | | - else ifneq (,$(filter $(CC),cl)) |
158 | | - PLATFORM = WIN32_MSVC |
159 | | - else ifneq (,$(filter $(CC), wasi)) |
160 | | - PLATFORM = WASM_WASI |
161 | | - else ifneq (,$(filter $(CC), emcc)) |
162 | | - PLATFORM = WASM_EMCC |
163 | | - else |
164 | | - DETECTED_OS := $(shell uname 2>/dev/null || echo Unknown) |
165 | | - |
166 | | - ifeq ($(DETECTED_OS),Darwin) |
167 | | - PLATFORM = OS_X |
168 | | - else ifeq ($(DETECTED_OS),Linux) |
169 | | - PLATFORM = LINUX |
170 | | - else |
171 | | - $(error Unsupported platform. Please refer to the Makefile for supported platofmrs.) |
172 | | - endif |
173 | | - endif |
174 | 154 | endif |
175 | 155 |
|
176 | | - |
177 | 156 | ifeq ($(PLATFORM),WIN32_GNU) |
178 | 157 | FLAGS = $(GNU_FLAGS) |
179 | 158 | INCLUDES = $(GNU_INCLUDES) |
@@ -280,7 +259,11 @@ clean: |
280 | 259 |
|
281 | 260 |
|
282 | 261 | $(EXE): $(SRC) sili.h Makefile examples/* |
283 | | - $(CC) $(FLAGS) $(EXTRA_FLAGS) $(SRC) $(INCLUDES) $(LIBS) -o "$@" |
| 262 | + ifneq (,$(filter $(PLATFORM),WIN32_GNU OS_X LINUX WASM_WASI WASM_EMCC)) |
| 263 | + $(CC) $(FLAGS) $(EXTRA_FLAGS) $(SRC) $(INCLUDES) $(LIBS) -o "$@" |
| 264 | + else ifneq (,$(filter $(PLATFORM),WIN32_MSVC)) |
| 265 | + $(CC) $(FLAGS) $(EXTRA_FLAGS) $(SRC) $(INCLUDES) $(LIBS) /Fe"$@" |
| 266 | + endif |
284 | 267 |
|
285 | 268 | static: |
286 | 269 | ifneq (,$(filter $(PLATFORM),WIN32_GNU OS_X LINUX WASM_WASI WASM_EMCC)) |
|
0 commit comments