Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
d010dbe
milestone: macOS CLI build and artifact packaging on LittlePaul
sync0x Mar 20, 2026
2ab6fe7
Corrected a typo; from `ToolTine` to `ToolTime`.
sync0x Mar 20, 2026
f9d379e
cmake: allow explicit git hash for source mirrors without .git
sync0x Mar 21, 2026
aee2b1a
windows: bootstrap pinned ANGLE submodule in build helpers
sync0x Mar 21, 2026
79c0ace
Mac cross compilation differences
sync0x Mar 21, 2026
ce72fc8
mac cross: bundle libz in app and use toolchain install_name_tool
sync0x Mar 21, 2026
30667e5
mac gui: fallback when MainMenu nib is missing
sync0x Mar 21, 2026
d5c134d
mac: recover Save/Export dialog path under cross build
sync0x Mar 21, 2026
02c008d
mac: tidy save-dialog diagnostics after recovery
sync0x Mar 21, 2026
2db11ae
build scripts: auto-sync mac and win cross-build outputs
sync0x Mar 21, 2026
ec1ac08
mac/win: stamp About dialog and restore fallback app menu
sync0x Mar 21, 2026
83a0114
mac: ship SolveSpace.app bundle + split About release/snapshot/revision
sync0x Mar 21, 2026
94451db
win: refresh tracked binaries for About provenance prefix
sync0x Mar 21, 2026
b98e063
build: add umbrella ubuntu all-target script placeholder
sync0x Mar 21, 2026
7ebb380
dev setup: track VS Code tasks and add all-target build orchestrator
sync0x Mar 21, 2026
247e7f4
Prepare proposed upgrade to export format.
sync0x Mar 21, 2026
53d3d98
Not a particuarly advanced remotely hosted project.
sync0x Mar 21, 2026
b0c76b5
win: MSYS2 mingw32/ucrt64 native builds; naming convention; cross-com…
sync0x Mar 22, 2026
bfa8e32
Alternative to JSON when the overload of punctuation becomes a problem.
sync0x Mar 22, 2026
aceb053
docs(export): unify layer naming conventions and simplify preference …
sync0x Mar 22, 2026
3058898
export: make normalized indexed layer names the default for DXF+SVG
sync0x Mar 22, 2026
3608554
build(cmake): restore target-based vendored zlib/png linkage ordering
sync0x Mar 22, 2026
de926c7
Update binaries to reflect latest build where we settle on a common c…
sync0x Mar 22, 2026
c49222c
export(svg): add Illustrator layer compatibility attributes
sync0x Mar 23, 2026
511ecf6
Binaries updated to reflect production ready source commit.
sync0x Mar 23, 2026
b5c98d7
Establish this child repository as distinct from the parent.
sync0x Mar 30, 2026
ff1c7f7
Disable automatic cloud side rebuilds until further notice. The paren…
sync0x Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@
*.slvs binary
ToolTime_win/bin/*.exe filter=lfs diff=lfs merge=lfs -text
ToolTime_win/bin/*.dll filter=lfs diff=lfs merge=lfs -text
ToolTime_mac/bin/SolveSpace.app/Contents/MacOS/* filter=lfs diff=lfs merge=lfs -text
ToolTime_mac/bin/SolveSpace.app/Contents/Frameworks/*.dylib filter=lfs diff=lfs merge=lfs -text
14 changes: 14 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ jobs:
access_token: ${{ github.token }}

test_ubuntu:
# Disabled: compilation operations paused.
if: false
needs: [cancel_previous_runs]
runs-on: ubuntu-latest
name: Test Ubuntu
Expand All @@ -31,6 +33,8 @@ jobs:
run: .github/scripts/build-ubuntu.sh

test_windows:
# Disabled: compilation operations paused.
if: false
needs: [cancel_previous_runs]
runs-on: windows-2019
name: Test Windows
Expand All @@ -44,6 +48,8 @@ jobs:
shell: bash

test_macos:
# Disabled: compilation operations paused.
if: false
needs: [cancel_previous_runs]
runs-on: macos-latest
name: Test macOS
Expand All @@ -55,6 +61,8 @@ jobs:
run: .github/scripts/build-macos.sh debug arm64 && .github/scripts/build-macos.sh debug x86_64

build_release_windows:
# Disabled: compilation operations paused.
if: false
needs: [test_ubuntu, test_windows, test_macos]
name: Build Release Windows
runs-on: windows-2019
Expand All @@ -73,6 +81,8 @@ jobs:
path: build/bin/RelWithDebInfo/solvespace.exe

build_release_windows_openmp:
# Disabled: compilation operations paused.
if: false
needs: [test_ubuntu, test_windows, test_macos]
name: Build Release Windows (OpenMP)
runs-on: windows-2019
Expand All @@ -91,6 +101,8 @@ jobs:
path: build/bin/RelWithDebInfo/solvespace-openmp.exe

build_release_macos:
# Disabled: compilation operations paused.
if: false
needs: [test_ubuntu, test_windows, test_macos]
name: Build Release macOS
runs-on: macos-latest
Expand All @@ -115,6 +127,8 @@ jobs:
path: build/bin/SolveSpace.dmg

deploy_snap_amd64:
# Disabled: compilation operations paused.
if: false
needs: [test_ubuntu, test_windows, test_macos]
name: Deploy AMD64 Snap
runs-on: ubuntu-latest
Expand Down
62 changes: 33 additions & 29 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,37 +11,41 @@ on:
- v*

jobs:
test_ubuntu:
runs-on: ubuntu-latest
name: Test Ubuntu
steps:
- uses: actions/checkout@v2
- name: Install Dependencies
run: .github/scripts/install-ubuntu.sh
- name: Build & Test
run: .github/scripts/build-ubuntu.sh
# Disabled compile/test classes (kept for easy re-enable):
# - Ubuntu
# - Windows
# - macOS
# test_ubuntu:
# runs-on: ubuntu-latest
# name: Test Ubuntu
# steps:
# - uses: actions/checkout@v2
# - name: Install Dependencies
# run: .github/scripts/install-ubuntu.sh
# - name: Build & Test
# run: .github/scripts/build-ubuntu.sh

test_windows:
runs-on: windows-2019
name: Test Windows
steps:
- uses: actions/checkout@v2
- name: Install Dependencies
run: .github/scripts/install-windows.sh
shell: bash
- name: Build & Test
run: .github/scripts/build-windows.sh
shell: bash
# test_windows:
# runs-on: windows-2019
# name: Test Windows
# steps:
# - uses: actions/checkout@v2
# - name: Install Dependencies
# run: .github/scripts/install-windows.sh
# shell: bash
# - name: Build & Test
# run: .github/scripts/build-windows.sh
# shell: bash

test_macos:
runs-on: macos-latest
name: Test macOS
steps:
- uses: actions/checkout@v2
- name: Install Dependencies
run: .github/scripts/install-macos.sh ci
- name: Build & Test
run: .github/scripts/build-macos.sh debug arm64 && .github/scripts/build-macos.sh debug x86_64
# test_macos:
# runs-on: macos-latest
# name: Test macOS
# steps:
# - uses: actions/checkout@v2
# - name: Install Dependencies
# run: .github/scripts/install-macos.sh ci
# - name: Build & Test
# run: .github/scripts/build-macos.sh debug arm64 && .github/scripts/build-macos.sh debug x86_64

test_flatpak:
name: Test Flatpak x86_64
Expand Down
26 changes: 25 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,37 @@
/build*/
/tooltime_*/
/ToolTime_*/
/ToolTime_*/build/
!/ToolTime_mac/
/ToolTime_mac/*
!/ToolTime_mac/bin/
/ToolTime_mac/bin/*
!/ToolTime_mac/bin/SolveSpace.app/
!/ToolTime_mac/bin/SolveSpace.app/**
!/ToolTime_win/
/ToolTime_win/*
!/ToolTime_win/bin/
/ToolTime_win/bin/*
!/ToolTime_win/bin/*.exe
!/ToolTime_win/bin/*.dll
!/ToolTime_win_ucrt64/
/ToolTime_win_ucrt64/*
!/ToolTime_win_ucrt64/bin/
/ToolTime_win_ucrt64/bin/*
!/ToolTime_win_ucrt64/bin/*.exe
!/ToolTime_win_ucrt64/bin/*.dll
!/ToolTime_win_ming32/
/ToolTime_win_ming32/*
!/ToolTime_win_ming32/bin/
/ToolTime_win_ming32/bin/*
!/ToolTime_win_ming32/bin/*.exe
!/ToolTime_win_ming32/bin/*.dll
!/ToolTime_win_msvc/
/ToolTime_win_msvc/*
!/ToolTime_win_msvc/bin/
/ToolTime_win_msvc/bin/*
!/ToolTime_win_msvc/bin/*.exe
!/ToolTime_win_msvc/bin/*.dll
/test/**/*.diff.*
/test/**/*.curr.*
*.trace
Expand All @@ -21,7 +46,6 @@
/debian/libslvs1-dev/
/obj-*/
/*.slvs
.vscode/
.playwright-mcp/

# Local macOS SDK / osxcross safety guards
Expand Down
10 changes: 10 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"git.repositoryScanIgnoredFolders": [
"extlib/cairo",
"extlib/pixman",
"extlib/libdxfrw",
"extlib/eigen",
"extlib/mimalloc"
],
"sarif-viewer.connectToGithubCodeScanning": "off"
}
15 changes: 15 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Build ToolTime (all targets)",
"type": "shell",
"command": "${workspaceFolder}/asyn0c/,test,tooltime,x,ubuntu,all",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
}
]
}
129 changes: 99 additions & 30 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ include(GetGitCommitHash)
# set(GIT_COMMIT_HASH 0000000000000000000000000000000000000000)

string(SUBSTRING "${GIT_COMMIT_HASH}" 0 8 solvespace_GIT_HASH)
if(NOT DEFINED GIT_COMMIT_DESCRIBE OR "${GIT_COMMIT_DESCRIBE}" STREQUAL "")
set(GIT_COMMIT_DESCRIBE "${solvespace_GIT_HASH}")
endif()
project(solvespace
VERSION 3.1
LANGUAGES C CXX ASM)
Expand Down Expand Up @@ -91,6 +94,10 @@ endif()
if(MINGW)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++")
# Some vendored dependency interfaces may still contribute plain
# `-l<name>` tokens (e.g. -lzlibstatic). Ensure the build output
# directory is in the link search path for MinGW executables.
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_BINARY_DIR}/bin")
# Link 32 bit SolveSpace with --large-address-aware which allows it to access
# up to 3GB on a properly configured 32 bit Windows and up to 4GB on 64 bit.
# See https://msdn.microsoft.com/en-us/library/aa366778
Expand Down Expand Up @@ -187,6 +194,7 @@ endif()

if(APPLE)
set(CMAKE_FIND_FRAMEWORK LAST)
find_library(COREFOUNDATION_LIBRARY CoreFoundation REQUIRED)
endif()

if(EMSCRIPTEN)
Expand Down Expand Up @@ -228,34 +236,93 @@ if(WIN32 OR APPLE OR EMSCRIPTEN)
include(FindVendoredPackage)
include(AddVendoredSubdirectory)

set(FORCE_VENDORED_ZLIB ON)
set(FORCE_VENDORED_PNG ON)
set(FORCE_VENDORED_Freetype ON)

find_vendored_package(ZLIB zlib
ZLIB_LIBRARY zlibstatic
ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/extlib/zlib)
list(APPEND ZLIB_INCLUDE_DIR ${CMAKE_BINARY_DIR}/extlib/zlib)

find_vendored_package(PNG libpng
SKIP_INSTALL_ALL ON
PNG_LIBRARY png_static
PNG_ARM_NEON "off"
PNG_SHARED OFF
PNG_STATIC ON
PNG_EXECUTABLES OFF
PNG_TESTS OFF
PNG_FRAMEWORK OFF
PNG_PNG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/extlib/libpng)
list(APPEND PNG_PNG_INCLUDE_DIR ${CMAKE_BINARY_DIR}/extlib/libpng)

find_vendored_package(Freetype freetype
WITH_ZLIB OFF
WITH_BZip2 OFF
WITH_PNG OFF
WITH_HarfBuzz OFF
FREETYPE_LIBRARY freetype
FREETYPE_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extlib/freetype/include)
if(NOT DEFINED FORCE_VENDORED_ZLIB)
set(FORCE_VENDORED_ZLIB ON)
endif()
if(NOT DEFINED FORCE_VENDORED_PNG)
set(FORCE_VENDORED_PNG ON)
endif()
if(NOT DEFINED FORCE_VENDORED_Freetype)
set(FORCE_VENDORED_Freetype ON)
endif()

if(FORCE_VENDORED_ZLIB)
find_vendored_package(ZLIB zlib
ZLIB_LIBRARY zlibstatic
ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/extlib/zlib)
list(APPEND ZLIB_INCLUDE_DIR ${CMAKE_BINARY_DIR}/extlib/zlib)

# Some vendored consumers still pass a plain `-lzlibstatic` token on
# MinGW. Ensure the produced static archive name matches that token.
if(WIN32 AND MINGW AND TARGET zlibstatic)
set_target_properties(zlibstatic PROPERTIES OUTPUT_NAME zlibstatic)
endif()

# Keep link dependencies target-based so generated buildsystems keep
# proper target-level ordering; avoid file-path forcing here.
else()
find_package(ZLIB REQUIRED)
if(NOT ZLIB_LIBRARY AND ZLIB_LIBRARIES)
set(ZLIB_LIBRARY ${ZLIB_LIBRARIES})
endif()
endif()

if(FORCE_VENDORED_PNG)
find_vendored_package(PNG libpng
SKIP_INSTALL_ALL ON
PNG_LIBRARY png_static
PNG_ARM_NEON "off"
PNG_SHARED OFF
PNG_STATIC ON
PNG_EXECUTABLES OFF
PNG_TESTS OFF
PNG_FRAMEWORK OFF
PNG_PNG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/extlib/libpng)
list(APPEND PNG_PNG_INCLUDE_DIR ${CMAKE_BINARY_DIR}/extlib/libpng)

# On MinGW, libpng can propagate a raw `zlibstatic` token via its
# interface link libraries. Rewrite that to the concrete archive path
# so the final executable link does not fail with "cannot find
# zlibstatic".
if(WIN32 AND MINGW AND TARGET png_static AND TARGET zlibstatic)
get_target_property(PNG_IFACE_LIBS png_static INTERFACE_LINK_LIBRARIES)
if(PNG_IFACE_LIBS)
string(REPLACE "zlibstatic" "$<TARGET_FILE:zlibstatic>" PNG_IFACE_LIBS "${PNG_IFACE_LIBS}")
set_property(TARGET png_static PROPERTY
INTERFACE_LINK_LIBRARIES "${PNG_IFACE_LIBS}")
endif()
unset(PNG_IFACE_LIBS)
endif()
else()
find_package(PNG REQUIRED)
if(NOT PNG_LIBRARY AND PNG_LIBRARIES)
set(PNG_LIBRARY ${PNG_LIBRARIES})
endif()
if(NOT PNG_PNG_INCLUDE_DIR AND PNG_INCLUDE_DIRS)
set(PNG_PNG_INCLUDE_DIR ${PNG_INCLUDE_DIRS})
endif()
endif()

if(APPLE AND CMAKE_CROSSCOMPILING)
set(SLVS_FREETYPE_WITH_ZLIB ON)
else()
set(SLVS_FREETYPE_WITH_ZLIB OFF)
endif()

if(FORCE_VENDORED_Freetype)
find_vendored_package(Freetype freetype
WITH_ZLIB ${SLVS_FREETYPE_WITH_ZLIB}
WITH_BZip2 OFF
WITH_PNG OFF
WITH_HarfBuzz OFF
FREETYPE_LIBRARY freetype
FREETYPE_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extlib/freetype/include)
else()
find_package(Freetype REQUIRED)
if(NOT FREETYPE_LIBRARY AND FREETYPE_LIBRARIES)
set(FREETYPE_LIBRARY ${FREETYPE_LIBRARIES})
endif()
endif()

message(STATUS "Using in-tree pixman")
set(PIXMAN_FOUND YES)
Expand Down Expand Up @@ -303,8 +370,10 @@ if(ENABLE_GUI)
find_package(OpenGL REQUIRED)
endif()

if(MSVC AND ${CMAKE_SIZEOF_VOID_P} EQUAL 4)
message(STATUS "Using prebuilt SpaceWare")
if(${CMAKE_SIZEOF_VOID_P} EQUAL 4 AND
EXISTS "${CMAKE_SOURCE_DIR}/extlib/si/siapp.h" AND
EXISTS "${CMAKE_SOURCE_DIR}/extlib/si/siapp.lib")
message(STATUS "Using prebuilt 32-bit SpaceWare SDK")
set(SPACEWARE_FOUND TRUE)
set(SPACEWARE_INCLUDE_DIR
"${CMAKE_SOURCE_DIR}/extlib/si")
Expand Down
Loading
Loading