WIP: next #1

Draft
vinzenz wants to merge 25 commits from next into main
5 changed files with 53 additions and 16 deletions
Showing only changes of commit c509813aac - Show all commits

View file

@ -37,17 +37,20 @@ CCFLAGS := -static -Os \
-fvisibility=hidden \ -fvisibility=hidden \
-Bsymbolic \ -Bsymbolic \
-Wl,--exclude-libs,ALL \ -Wl,--exclude-libs,ALL \
-fno-ident -fno-ident \
-Wall
#-fuse-ld=gold \ #-fuse-ld=gold \
-fno-exceptions -fno-exceptions
#-Wl,--icf=all \ #-Wl,--icf=all \
STRIPFLAGS := -s --strip-unneeded -R .comment -R .gnu.version -R .comment -R .note -R .note.gnu.build-id -R .note.ABI-tag STRIPFLAGS := -s --strip-unneeded -R .comment -R .gnu.version -R .comment -R .note -R .note.gnu.build-id -R .note.ABI-tag
src := $(wildcard *.c) c_src := $(wildcard *.c)
programs := $(basename $(src)) programs := $(basename $(c_src))
bins := $(addprefix out/, $(programs)) bins := $(addprefix out/, $(programs))
unstripped_bins := $(addsuffix _unstripped, $(bins)) unstripped_bins := $(addsuffix _unstripped, $(bins))
run_programs := $(addprefix run_, $(programs))
rs_src := $(wildcard ../src/*.rs) ../Cargo.lock
all: $(bins) all: $(bins)
@ -56,9 +59,9 @@ clean:
rm include/servicepoint.h || true rm include/servicepoint.h || true
cargo clean cargo clean
PHONY: all clean analyze-size PHONY: all clean sizes $(run_programs)
$(unstripped_bins): out/%_unstripped: %.c $(SERVICEPOINT_HEADER_OUT)/servicepoint.h $(unstripped_bins): out/%_unstripped: %.c $(SERVICEPOINT_HEADER_OUT)/servicepoint.h $(RUST_TARGET_DIR)/libservicepoint_binding_c.a
mkdir -p out || true mkdir -p out || true
${CC} $^ \ ${CC} $^ \
-I $(SERVICEPOINT_HEADER_OUT) \ -I $(SERVICEPOINT_HEADER_OUT) \
@ -69,14 +72,22 @@ $(unstripped_bins): out/%_unstripped: %.c $(SERVICEPOINT_HEADER_OUT)/servicepoin
$(bins): out/%: out/%_unstripped $(bins): out/%: out/%_unstripped
strip $(STRIPFLAGS) $^ -o $@ strip $(STRIPFLAGS) $^ -o $@
$(SERVICEPOINT_HEADER_OUT)/servicepoint.h: FORCE $(SERVICEPOINT_HEADER_OUT)/servicepoint.h $(RUST_TARGET_DIR)/libservicepoint_binding_c.a: $(rs_src)
mkdir -p include || true mkdir -p include || true
# generate servicepoint header and binary to link against # generate servicepoint header and binary to link against
${CARGO} rustc $(CARGOFLAGS) -- $(RUSTFLAGS) ${CARGO} rustc $(CARGOFLAGS) -- $(RUSTFLAGS)
analyze-size: out/example_unstripped $(run_programs): run_%: out/% FORCE
nm --print-size --size-sort --reverse-sort --radix=d --demangle out/example_unstripped \ ./$<
| awk '{size=$$2+0; print size "\t" $$4}' \
| less sizes: $(bins)
ls -lB out
#analyze-size: out/example_unstripped
# nm --print-size --size-sort --reverse-sort --radix=d --demangle out/example_unstripped \
# | awk '{size=$$2+0; print size "\t" $$4}' \
# | less
FORCE: ; FORCE: ;

View file

@ -1,4 +1,3 @@
#include <stdio.h>
#include "servicepoint.h" #include "servicepoint.h"
int main(void) { int main(void) {
@ -8,7 +7,7 @@ int main(void) {
sp_udp_send_command(connection, sp_command_clear()); sp_udp_send_command(connection, sp_command_clear());
CharGrid *grid = sp_char_grid_new(5,2); CharGrid *grid = sp_char_grid_new(5, 2);
if (grid == NULL) if (grid == NULL)
return 1; return 1;

View file

@ -0,0 +1,29 @@
#include "servicepoint.h"
int main(void) {
// UdpConnection *connection = sp_udp_open_ipv4(172, 23, 42, 29, 2342);
UdpConnection *connection = sp_udp_open_ipv4(127, 0, 0, 1, 2342);
if (connection == NULL)
return -1;
Bitmap *all_on = sp_bitmap_new_max_sized();
sp_bitmap_fill(all_on, true);
TypedCommand *cmd = sp_command_bitmap(0, 0, all_on, COMPRESSION_CODE_UNCOMPRESSED);
if (cmd == NULL)
return -1;
sp_udp_send_command(connection, cmd);
BrightnessGrid *grid = sp_brightness_grid_new(TILE_WIDTH, TILE_HEIGHT);
ByteSlice slice = sp_brightness_grid_unsafe_data_ref(grid);
for (size_t index = 0; index < slice.length; index++) {
slice.start[index] = (uint8_t) (index % ((size_t) Brightness_MAX));
}
TypedCommand *command = sp_command_brightness_grid(0, 0, grid);
sp_udp_send_command(connection, command);
sp_udp_free(connection);
return 0;
}

View file

@ -1,4 +1,3 @@
#include <stdio.h>
#include "servicepoint.h" #include "servicepoint.h"
int main(void) { int main(void) {

View file

@ -59,7 +59,6 @@
gcc gcc
gnumake gnumake
pkg-config pkg-config
]; ];
RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";