Skip to content

Commit 881c68c

Browse files
authored
Merge pull request #8 from SteamClientHomebrew/next
Next
2 parents 9a57c49 + f84eaa4 commit 881c68c

75 files changed

Lines changed: 1125 additions & 76924 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,41 +20,28 @@ jobs:
2020
steps:
2121
- name: Checkout repository
2222
uses: actions/checkout@v4
23-
with:
24-
submodules: true
2523

2624
- name: (Setup) Node.js
2725
uses: actions/setup-node@v3
2826
with:
2927
node-version: 20
3028

31-
- name: Cache vcpkg
32-
uses: actions/cache@v4
33-
with:
34-
path: |
35-
vendor/vcpkg/installed
36-
vendor/vcpkg/buildtrees
37-
vendor/vcpkg/packages
38-
key: vcpkg-windows-${{ runner.os }}-${{ hashFiles('vcpkg.json') }}
39-
restore-keys: |
40-
vcpkg-windows-${{ runner.os }}-
41-
4229
- name: (Setup) Semantic Release
4330
run: npm install --save-dev semantic-release @semantic-release/github @semantic-release/exec @semantic-release/changelog @semantic-release/git
4431
env:
4532
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4633

4734
- name: (Setup) Get Next Version
48-
run: . resources\version.ps1
35+
run: . resources\versioning\version.ps1
4936
env:
5037
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5138

5239
- name: Build Millennium
5340
run: |
54-
cmake --preset=release
55-
cmake --build build --config Release
41+
cmake --preset=windows-release
42+
cmake --build build
5643
mkdir -p D:/a/build/unsigned
57-
mv build/Release/Installer.exe D:/a/build/unsigned/MillenniumInstaller-Windows.exe
44+
mv build/Installer.exe D:/a/build/unsigned/MillenniumInstaller-Windows.exe
5845
5946
- name: Upload Build Artifact
6047
id: upload-unsigned-artifact
@@ -86,6 +73,6 @@ jobs:
8673
path: "signed-millennium/MillenniumInstaller-Windows.exe"
8774

8875
- name: Create GitHub Release
89-
run: npx semantic-release
76+
run: cd resources/versioning && npx semantic-release
9077
env:
9178
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
/build
2-
/.vscode
2+
/.vscode
3+
/.zed

.gitmodules

Lines changed: 0 additions & 9 deletions
This file was deleted.

CMakeLists.txt

Lines changed: 58 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,34 @@
11
cmake_minimum_required(VERSION 3.31.6)
2-
# Set the project name and version
2+
33
project(Installer VERSION 1.0 LANGUAGES CXX)
4-
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>" CACHE STRING "" FORCE)
4+
set(CMAKE_MSVC_RUNTIME_LIBRARY
5+
"MultiThreaded$<$<CONFIG:Debug>:Debug>" CACHE STRING "" FORCE
6+
)
7+
58
add_compile_definitions(UNICODE _UNICODE)
6-
# Read the Millennium version from the version file
7-
file(STRINGS "version" VERSION_LINES LIMIT_COUNT 2)
9+
10+
file(STRINGS "resources/versioning/version" VERSION_LINES LIMIT_COUNT 2)
811
list(GET VERSION_LINES 1 MILLENNIUM_VERSION)
912
string(STRIP "${MILLENNIUM_VERSION}" MILLENNIUM_VERSION)
1013

11-
# Make cmake re-run if the version file changes
12-
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "version")
14+
set_property(DIRECTORY
15+
APPEND PROPERTY
16+
CMAKE_CONFIGURE_DEPENDS "resources/versioning/version"
17+
)
1318

14-
# Generate version.h from version.h.in
1519
configure_file(src/include/version.h.in ${CMAKE_BINARY_DIR}/version.h)
16-
1720
add_compile_definitions(MILLENNIUM_VERSION="${MILLENNIUM_VERSION}")
1821

19-
# Specify the C++ standard
2022
set(CMAKE_CXX_STANDARD 20)
2123
set(CMAKE_CXX_STANDARD_REQUIRED True)
2224

23-
set(BUILD_SHARED_LIBS OFF)
24-
25-
set(GLFW_BUILD_DOCS OFF)
26-
set(GLFW_BUILD_TESTS OFF)
27-
set(GLFW_BUILD_EXAMPLES OFF)
28-
set(GLFW_BUILD_STATIC ON)
29-
3025
add_compile_definitions(
3126
CURL_STATICLIB
3227
FMT_HEADER_ONLY
3328
IMGUI_USE_WCHAR32
29+
IMGUI_DEFINE_MATH_OPERATORS
3430
)
3531

36-
# Additional size optimizations for release builds
3732
if (CMAKE_BUILD_TYPE STREQUAL "Release")
3833
add_compile_definitions(
3934
IMGUI_DISABLE_DEMO_WINDOWS
@@ -42,14 +37,32 @@ if (CMAKE_BUILD_TYPE STREQUAL "Release")
4237
)
4338
endif()
4439

45-
# Define source files
46-
set(IMGUI_DIR "../..")
40+
include(${CMAKE_CURRENT_SOURCE_DIR}/resources/cmake/bootstrap_deps.cmake)
41+
42+
add_library(imgui_lib STATIC
43+
${imgui_SOURCE_DIR}/imgui.cpp
44+
${imgui_SOURCE_DIR}/imgui_draw.cpp
45+
${imgui_SOURCE_DIR}/imgui_tables.cpp
46+
${imgui_SOURCE_DIR}/imgui_widgets.cpp
47+
${imgui_SOURCE_DIR}/backends/imgui_impl_glfw.cpp
48+
${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp
49+
${imgui_SOURCE_DIR}/misc/freetype/imgui_freetype.cpp
50+
${imgui_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp
51+
)
52+
target_include_directories(imgui_lib SYSTEM PUBLIC
53+
${imgui_SOURCE_DIR}
54+
${imgui_SOURCE_DIR}/backends
55+
${imgui_SOURCE_DIR}/misc/cpp
56+
)
57+
target_link_libraries(imgui_lib PUBLIC freetype glfw)
58+
4759
set(SOURCES
4860
src/main.cc
49-
src/texture.cc
50-
src/wndproc.cc
51-
src/renderer.cc
52-
src/updater.cc
61+
src/window/texture.cc
62+
src/window/wndproc.cc
63+
src/window/renderer.cc
64+
src/util/updater.cc
65+
src/routes/router.cc
5366
src/routes/home.cc
5467
src/routes/install_prompt.cc
5568
src/routes/installer.cc
@@ -58,48 +71,42 @@ set(SOURCES
5871
src/components/checkbox.cc
5972
src/components/bottombar.cc
6073
src/components/message.cc
61-
src/animate.cc
62-
src/router.cc
63-
src/dpi.cc
64-
src/semver.cc
74+
src/util/animate.cc
75+
src/util/semver.cc
76+
src/window/dpi.cc
6577
src/installer/task_scheduler.cc
6678
src/installer/unzip.cc
67-
vendor/imgui/src/imgui.cpp
68-
vendor/imgui/src/imgui_draw.cpp
69-
vendor/imgui/src/imgui_tables.cpp
70-
vendor/imgui/src/imgui_widgets.cpp
71-
vendor/imgui/src/imgui_impl_glfw.cpp
72-
vendor/imgui/src/imgui_impl_opengl3.cpp
73-
vendor/imgui/include/misc/freetype/imgui_freetype.cpp
74-
vendor/imgui/src/imgui_stdlib.cpp
79+
src/util/worker.cc
7580
)
7681

77-
# Add the executable
7882
if(WIN32)
7983
set(RESOURCE_FILE "${CMAKE_SOURCE_DIR}/resources/win32/Installer.rc")
8084
add_executable(${PROJECT_NAME} WIN32 ${SOURCES} ${RESOURCE_FILE})
8185
else()
8286
add_executable(${PROJECT_NAME} ${SOURCES})
8387
endif()
8488

85-
# Include directories
8689
include_directories(src/include)
87-
include_directories(vendor/imgui/include)
88-
include_directories(vendor/imgui/extern)
89-
include_directories(vendor/nlohmann/include)
90-
include_directories(vendor/ini/src)
90+
include_directories(SYSTEM ${imgui_SOURCE_DIR})
91+
include_directories(SYSTEM ${imgui_SOURCE_DIR}/backends)
92+
include_directories(SYSTEM ${imgui_SOURCE_DIR}/misc/cpp)
93+
include_directories(SYSTEM ${imgui_markdown_SOURCE_DIR})
94+
include_directories(SYSTEM ${imspinner_SOURCE_DIR})
95+
include_directories(SYSTEM ${nlohmann_json_SOURCE_DIR}/include)
96+
include_directories(SYSTEM ${mini_SOURCE_DIR}/src)
97+
include_directories(SYSTEM ${stb_SOURCE_DIR})
98+
include_directories(SYSTEM ${zlib_SOURCE_DIR} ${zlib_BINARY_DIR})
99+
100+
target_link_libraries(${PROJECT_NAME} PRIVATE imgui_lib)
101+
target_link_options(${PROJECT_NAME} PRIVATE /FORCE:MULTIPLE)
91102

92-
# Platform-specific settings
93103
if(UNIX AND NOT APPLE)
94-
message(STATUS "Building on Linux")
95104
find_package(PkgConfig REQUIRED)
96105
pkg_check_modules(GLFW REQUIRED glfw3)
97106

98107
target_compile_options(${PROJECT_NAME} PRIVATE ${GLFW_CFLAGS})
99108
target_link_libraries(${PROJECT_NAME} PRIVATE ${GLFW_LDFLAGS} GL)
100-
101109
elseif(APPLE)
102-
message(STATUS "Building on macOS")
103110
find_library(COCOA_LIBRARY Cocoa REQUIRED)
104111
find_library(IOKIT_LIBRARY IOKit REQUIRED)
105112
find_library(COREVIDEO_LIBRARY CoreVideo REQUIRED)
@@ -113,28 +120,20 @@ elseif(APPLE)
113120
${OPENGL_LIBRARY}
114121
${GLFW_LIBRARY}
115122
)
116-
117123
elseif(WIN32)
118-
message(STATUS "Building on Windows")
119-
find_package(Freetype REQUIRED)
120-
find_package(Stb REQUIRED)
121-
find_package(glfw3 CONFIG REQUIRED)
122-
find_package(GLEW CONFIG REQUIRED)
123-
find_package(CURL REQUIRED)
124-
find_package(unofficial-minizip CONFIG REQUIRED) # used for extracting zip files
125-
126-
target_include_directories(${PROJECT_NAME} PRIVATE ${Stb_INCLUDE_DIR})
127-
124+
target_include_directories(${PROJECT_NAME}
125+
SYSTEM PRIVATE ${minizip_ng_SOURCE_DIR}
126+
)
128127
target_link_libraries(${PROJECT_NAME} PRIVATE
129-
Freetype::Freetype
128+
freetype
130129
glfw
131130
gdi32
132131
opengl32
133-
GLEW::GLEW
132+
libglew_static
134133
imm32
135134
CURL::libcurl
136135
dwmapi
137-
unofficial::minizip::minizip
136+
minizip
138137
winmm
139138
bcrypt
140139
)

CMakePresets.json

Lines changed: 53 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,72 @@
33
"configurePresets": [
44
{
55
"name": "default",
6-
"generator": "Visual Studio 17 2022",
6+
"generator": "Ninja",
77
"binaryDir": "${sourceDir}/build",
88
"hidden": true,
99
"cacheVariables": {
10-
"CMAKE_TOOLCHAIN_FILE": "./vendor/vcpkg/scripts/buildsystems/vcpkg.cmake",
11-
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
12-
"VCPKG_TARGET_TRIPLET": "x64-windows-static"
10+
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
1311
}
1412
},
1513
{
16-
"name": "debug",
14+
"name": "windows",
15+
"hidden": true,
1716
"inherits": "default",
17+
"generator": "Ninja",
18+
"vendor": {
19+
"microsoft.com/VisualStudioSettings/CMake/1.0": {
20+
"hostOS": [
21+
"Windows"
22+
]
23+
}
24+
},
1825
"cacheVariables": {
19-
"CMAKE_BUILD_TYPE": "Debug"
26+
"CMAKE_C_COMPILER": "clang-cl.exe",
27+
"CMAKE_CXX_COMPILER": "clang-cl.exe",
28+
"CMAKE_CXX_FLAGS": "/EHsc"
29+
},
30+
"displayName": "windows"
31+
},
32+
{
33+
"inherits": "windows",
34+
"name": "windows-release",
35+
"displayName": "windows-release",
36+
"description": "windows release build.",
37+
"cacheVariables": {
38+
"CMAKE_BUILD_TYPE": "Release",
39+
"CMAKE_CXX_FLAGS_RELEASE": "/O1 /GL /GF /Gy /Zi /DNDEBUG",
40+
"CMAKE_SHARED_LINKER_FLAGS_RELEASE": "/LTCG /OPT:REF /OPT:ICF /DEBUG:FULL"
41+
}
42+
},
43+
{
44+
"inherits": "windows",
45+
"name": "windows-debug",
46+
"displayName": "windows-debug",
47+
"description": "windows debug build.",
48+
"cacheVariables": {
49+
"CMAKE_BUILD_TYPE": "Debug",
50+
"CMAKE_CXX_FLAGS_DEBUG": "/Z7 -fstandalone-debug",
51+
"CMAKE_C_FLAGS_DEBUG": "/Z7 -fstandalone-debug"
2052
}
2153
},
2254
{
23-
"name": "release",
2455
"inherits": "default",
56+
"name": "osx-release",
57+
"displayName": "osx-release",
58+
"description": "MacOS release build.",
59+
"binaryDir": "${sourceDir}/build/osx-release",
2560
"cacheVariables": {
26-
"CMAKE_BUILD_TYPE": "Release",
27-
"CMAKE_CXX_FLAGS_RELEASE": "/O1 /GL /GF /Gy /DNDEBUG",
28-
"CMAKE_SHARED_LINKER_FLAGS_RELEASE": "/LTCG /OPT:REF /OPT:ICF /DEBUG:NONE"
61+
"CMAKE_BUILD_TYPE": "Release"
62+
}
63+
},
64+
{
65+
"inherits": "default",
66+
"name": "osx-debug",
67+
"displayName": "osx-debug",
68+
"description": "MacOS debug build.",
69+
"binaryDir": "${sourceDir}/build/osx-debug",
70+
"cacheVariables": {
71+
"CMAKE_BUILD_TYPE": "Debug"
2972
}
3073
}
3174
]
File renamed without changes.

0 commit comments

Comments
 (0)