Skip to content

Commit b2ecd8f

Browse files
Forcing Clang unilaterally. Will update docs for build instructions.
1 parent d41a8af commit b2ecd8f

File tree

5 files changed

+44
-1
lines changed

5 files changed

+44
-1
lines changed

.github/workflows/test-debug-builds.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ jobs:
2323
libwxgtk3.2-dev
2424
libpcap-dev
2525
cmake
26+
llvm
27+
clang
2628
ninja-build
2729
- name: Windows 64bits (MSYS2)
2830
os: windows-latest

.github/workflows/test-release-builds.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ jobs:
2323
libwxgtk3.2-dev
2424
libpcap-dev
2525
cmake
26+
llvm
27+
clang
2628
ninja-build
2729
- name: Windows 64bits (MSYS2)
2830
os: windows-latest

.github/workflows/test-relwithdebinfo-builds.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ jobs:
2323
libwxgtk3.2-dev
2424
libpcap-dev
2525
cmake
26+
llvm
27+
clang
2628
ninja-build
2729
- name: Windows 64bits (MSYS2)
2830
os: windows-latest

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- Added RAM disk preloaded with RAW/VHD images (*.rdimg;*.rdvhd)
88
- Load up to 2GB disks to temporary disk (doesn't modify the image file)
99
- Mounts as read-only if memory allocation fails (mind the 32bit PCem memory limits)
10+
- 32-bit Windows builds will now be deprecated due to technical issues. v17 will be the last 32-bit PCem.
1011

1112
## Added the following machines to v18
1213
- Hyundai SUPER-16T
@@ -33,6 +34,7 @@
3334
## Developer Changes to v18
3435
- First release to switch from autotools/make to CMake/Ninja
3536
- Legacy autotools and mingw makefiles are removed
37+
- Windows and Linux builds now will be built in Clang, and are required to be built with Clang
3638

3739
# PCem v17
3840
- New machines added - Amstrad PC5086, Compaq Deskpro, Samsung SPC-6033P, Samsung SPC-6000A, Intel VS440FX, Gigabyte GA-686BX

CMakeLists.txt

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
1-
cmake_minimum_required(VERSION 3.7)
1+
cmake_minimum_required(VERSION 3.20)
2+
3+
# We are going to force clang on both Linux and Windows builds to be uniform
4+
set(CMAKE_C_COMPILER "clang" CACHE FILEPATH "C compiler")
5+
set(CMAKE_CXX_COMPILER "clang++" CACHE FILEPATH "C++ compiler")
26

37
project(PCem)
48

9+
# Dont allow GCC Building anymore, force Clang
10+
if(NOT (CMAKE_C_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
11+
message(FATAL_ERROR "Detected compiler is not Clang! Please ensure Clang is in your PATH or specified correctly.")
12+
endif()
13+
514
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
615
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules)
716

@@ -76,6 +85,32 @@ if(USE_EXPERIMENTAL)
7685
message(" Printer Support: ${USE_EXPERIMENTAL_PRINTER}")
7786
endif()
7887

88+
if(CMAKE_BUILD_TYPE STREQUAL "Release")
89+
option(USE_PGO "Build PCem using PGO Data" OFF)
90+
option(GENERATE_PGO "Build PCem to generate PGO Data for PGO" OFF)
91+
92+
message("Generate PGO Data: ${GENERATE_PGO}")
93+
message("Use PGO Data: ${USE_PGO}")
94+
endif()
95+
96+
if(GENERATE_PGO)
97+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fprofile-generate")
98+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-generate")
99+
endif()
100+
101+
if(USE_PGO)
102+
if(GENERATE_PGO)
103+
message(FATAL_ERROR "USE_PGO cannot be used with GENERATE_PGO enabled")
104+
endif()
105+
106+
if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/default.profdata")
107+
message(FATAL_ERROR "Missing default.profdata in output directory. Make sure you run llvm-profdata merge -output=default.profdata *.profraw")
108+
endif()
109+
110+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fprofile-use")
111+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fprofile-use")
112+
endif()
113+
79114
if(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
80115
option(PCEM_RELDEB_AS_RELEASE "Build PCem RelWithDebInfo as Release Mode" OFF)
81116
message("Build PCem RelWithDebInfo as Release Mode: ${PCEM_RELDEB_AS_RELEASE}")

0 commit comments

Comments
 (0)