Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
58 changes: 56 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ jobs:
sudo apt-get update
sudo apt-get install -y gcc make libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxinerama-dev libwayland-dev libxkbcommon-dev libcurl4-openssl-dev

- name: Build raylib
run: make raylib

- name: Compile and Bundle Linux
run: make linux

Expand All @@ -38,6 +41,44 @@ jobs:
path: dist/TLEscope-Linux-Portable/
retention-days: 14

build-linux-arm64:
name: Build Linux ARM64
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Setup ARM64 Cross-Compile
uses: cyberjunk/gha-ubuntu-cross@v5
with:
arch: arm64

- name: Install ARM64 Build Dependencies
run: |
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
sudo apt-get install -y -o Dpkg::Options::="--force-overwrite" \
libcurl4-openssl-dev:arm64 libgl-dev:arm64 libx11-dev:arm64 \
libxrandr-dev:arm64 libxi-dev:arm64 libxcursor-dev:arm64 \
libxinerama-dev:arm64 libwayland-dev:arm64 libxkbcommon-dev:arm64

- name: Build raylib for ARM64
run: ./scripts/raylib-build.sh linux-arm64

- name: Compile and Bundle Linux ARM64
run: |
make linux \
CC_LINUX=aarch64-linux-gnu-gcc \
LIB_LIN_PATH="-Ilib/raylib_lin_arm64/include -Llib/raylib_lin_arm64/lib" \
LDFLAGS_LIN="-Ilib/raylib_lin_arm64/include -Llib/raylib_lin_arm64/lib -lraylib -lcurl -lGL -lm -lpthread -ldl -lrt -lX11" \
DIST_LINUX=dist/TLEscope-Linux-arm64-Portable

- name: Upload Linux ARM64 Artifact
uses: actions/upload-artifact@v4
with:
name: TLEscope-Linux-arm64-Portable
path: dist/TLEscope-Linux-arm64-Portable/
retention-days: 14

build-windows:
name: Build Windows
runs-on: windows-latest
Expand All @@ -55,6 +96,7 @@ jobs:
update: true
install: >-
make
git
mingw-w64-x86_64-gcc
mingw-w64-x86_64-curl
mingw-w64-x86_64-ngtcp2
Expand All @@ -66,6 +108,9 @@ jobs:
mingw-w64-x86_64-nsis
mingw-w64-x86_64-imagemagick

- name: Build raylib
run: make raylib

- name: Compile and Bundle Windows
run: make win-installer MINGW_PREFIX=/mingw64 PKG_CONFIG_WIN=pkg-config

Expand Down Expand Up @@ -99,6 +144,8 @@ jobs:
msystem: CLANGARM64
update: true
install: >-
make
git
mingw-w64-clang-aarch64-make
mingw-w64-clang-aarch64-clang
mingw-w64-clang-aarch64-curl
Expand All @@ -109,6 +156,9 @@ jobs:
mingw-w64-clang-aarch64-openssl
mingw-w64-clang-aarch64-pkgconf

- name: Build raylib
run: make raylib

- name: Compile and Bundle Windows ARM64
run: mingw32-make windows-arm64

Expand All @@ -121,7 +171,7 @@ jobs:

release:
name: Publish Release
needs: [build-linux, build-windows, build-windows-arm64]
needs: [build-linux, build-linux-arm64, build-windows, build-windows-arm64]
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/v'))
runs-on: ubuntu-latest
permissions:
Expand All @@ -141,8 +191,10 @@ jobs:
cd artifacts
# The Makefile bundles into subdirectories, so we zip those folders
chmod +x TLEscope-Linux-Portable/TLEscope

chmod +x TLEscope-Linux-arm64-Portable/TLEscope

zip -r ../TLEscope-Linux-Portable.zip TLEscope-Linux-Portable/
zip -r ../TLEscope-Linux-arm64-Portable.zip TLEscope-Linux-arm64-Portable/
zip -r ../TLEscope-Win-Portable.zip TLEscope-Win-Portable/
zip -r ../TLEscope-Win-arm64-Portable.zip TLEscope-Win-arm64-Portable/

Expand Down Expand Up @@ -179,6 +231,7 @@ jobs:
prerelease: true
files: |
TLEscope-Linux-Portable.zip
TLEscope-Linux-arm64-Portable.zip
TLEscope-Win-Portable.zip
TLEscope-Win-arm64-Portable.zip
TLEscope-Installer.exe
Expand All @@ -190,6 +243,7 @@ jobs:
generate_release_notes: true
files: |
TLEscope-Linux-Portable.zip
TLEscope-Linux-arm64-Portable.zip
TLEscope-Win-Portable.zip
TLEscope-Win-arm64-Portable.zip
TLEscope-Installer.exe
17 changes: 16 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,12 @@ else
LIB_WIN_PATH = -Ilib/raylib_win/include -Llib/raylib_win/lib -I$(MINGW_PREFIX)/include -L$(MINGW_PREFIX)/lib
endif

UNAME_M := $(shell uname -m)
ifeq ($(UNAME_M),aarch64)
LIB_LIN_PATH = -Ilib/raylib_lin_arm64/include -Llib/raylib_lin_arm64/lib
else
LIB_LIN_PATH = -Ilib/raylib_lin/include -Llib/raylib_lin/lib
endif

SRC = src/main.c src/astro.c src/config.c src/ui.c src/rotator.c
OBJ = $(SRC:src/%.c=build/%.o)
Expand All @@ -42,7 +47,7 @@ RAYLIB_LIBS = $(shell pkg-config --libs raylib 2>/dev/null)
LDFLAGS_MACOS = $(RAYLIB_LIBS) -lcurl -framework IOKit -framework Cocoa -framework OpenGL
DIST_MACOS = dist/TLEscope-macOS-Portable

.PHONY: all linux macos windows windows-arm64 win-installer clean build bin install uninstall
.PHONY: all linux macos windows windows-arm64 win-installer clean build bin install uninstall raylib raylib-crossbuild

all: linux

Expand Down Expand Up @@ -119,6 +124,16 @@ build:
bin:
mkdir -p bin

raylib:
./scripts/raylib-build.sh

raylib-%:
./scripts/raylib-build.sh $*

raylib-crossbuild:
docker build -f scripts/raylib-crossbuild.Dockerfile -t tlescope-crossbuild .
docker run --rm -v "$(PWD)/lib:/build/lib" tlescope-crossbuild

clean:
rm -rf build bin dist

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ TLEscope comes equipped with tools designed for RF engineers, satellite operator

- **Minimal Footprint and High Performance**: Developed in pure C utilizing the Raylib framework, TLEscope maintains a minimal footprint. The application provides high-performance rendering that is likely more efficient than your standard system file browser, even with hundreds or thousands of satellites on-screen.

- **​Native OS Support**: Built for Linux, macOS, and Windows.
- **​Native OS Support**: Built for Linux (x86_64 and ARM64), macOS, and Windows.

### ​**Design Philosophy**
​Most existing orbital tracking software suffers from dated, unintuitive interfaces. TLEscope bridges this gap by prioritizing both visual clarity and ease of use.
Expand Down
6 changes: 1 addition & 5 deletions lib/raygui.h
Original file line number Diff line number Diff line change
Expand Up @@ -4970,11 +4970,7 @@ static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor,
if (borderWidth > 0)
{
// Draw rectangle border lines with color
#if (defined(_WIN32) || defined(_WIN64)) && !defined(_M_ARM64)
DrawRectangleRoundedLines(rec, roundness, segments, (float)borderWidth, GuiFade(borderColor, guiAlpha));
#else
DrawRectangleRoundedLines(rec, roundness, segments, GuiFade(borderColor, guiAlpha));
#endif
DrawRectangleRoundedLinesEx(rec, roundness, segments, (float)borderWidth, GuiFade(borderColor, guiAlpha));
}

#if defined(RAYGUI_DEBUG_RECS_BOUNDS)
Expand Down
Loading
Loading