Initial commit, first project from 0 with xmake

This commit is contained in:
2026-05-26 22:28:06 -06:00
commit 910f63bf07
6 changed files with 192 additions and 0 deletions

60
.gitignore vendored Normal file
View File

@@ -0,0 +1,60 @@
# Directories
build/
build-*/
cmake-build-*/
.cache/
out/
out/Debug/
out/Release/
# xmake
xmake/
.xmake/*
.xmake
# Cmake files
CMakeCache.txt
cmake
CMakeFiles/
cmake_install.cmake
CTestTestfile.cmake
Testing/
compile_commands.json
../compile_commands.json
build/compile_commands.json
# Make / Ninja
Makefile
*.ninja
*.ninja_deps
*.ninja_log
rules.ninja
# Object files
*.o
*.obj
*.lo
*.la
# Binaries
*.out
*.exe
*.dll
*.so
*.so.*
*.dylib
*.a
# Debug / Sanitizer
*.dSYM/
*.gcno
*.gcda
*.gcov
# Editors
.vscode/
.idea/
*.swp
*.swo
*~

6
include/lae_strings.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef LAE_STRINGS_H
#define LAE_STRINGS_H
typedef struct ByteStr ByteStr;
#endif

9
src/lae_strings.c Normal file
View File

@@ -0,0 +1,9 @@
#include "lae_strings.h"
#include <stdint.h>
#include <stdlib.h>
struct ByteStr {
uint8_t* buf;
size_t len;
size_t cap;
};

18
src/main.c Normal file
View File

@@ -0,0 +1,18 @@
#include "mylib.h"
#include <stdio.h>
#include <stdlib.h>
int main(void) {
MyLib *lib = mylib_create();
if (!lib) {
fprintf(stderr, "Error: could not create MyLib\n");
return EXIT_FAILURE;
}
int result = mylib_do_something(lib, 42);
printf("Result: %d\n", result);
mylib_destroy(lib);
return EXIT_SUCCESS;
}

11
test/test_string.c Normal file
View File

@@ -0,0 +1,11 @@
#include <cmocka.h>
#include <setjmp.h>
#include <stdarg.h> /* required by cmocka */
#include <stddef.h>
#include <stdlib.h>
#include "lae_strings.h"
int main(void) {
return EXIT_SUCCESS;
}

88
xmake.lua Normal file
View File

@@ -0,0 +1,88 @@
set_project("lae_strings")
set_version("1.0.0")
set_languages("c11")
add_rules("mode.debug", "mode.release")
-- Export compile_commands.json
add_rules("plugin.compile_commands.autoupdate")
-- =========================================================
-- Options
-- =========================================================
option("tests")
set_default(false)
set_showmenu(true)
option_end()
option("example")
set_default(false)
set_showmenu(true)
option_end()
option("asan")
set_default(false)
set_showmenu(true)
option_end()
-- =========================================================
-- Packages
-- =========================================================
add_requires("cmocka", { optional = true })
add_requires("lae_allocator")
-- =========================================================
-- Library
-- =========================================================
target("lae_strings")
set_kind("static")
add_packages("lae_allocator")
add_files("src/lae_strings.c")
add_headerfiles("include/*.h")
add_includedirs("include", { public = true })
if is_mode("debug") then
add_cflags("-Wall", "-Wextra", "-Wpedantic")
end
-- =========================================================
-- Example executable
-- =========================================================
if has_config("example") then
target("example")
set_kind("binary")
add_files("src/main.c")
add_deps("lae_strings")
end
-- =========================================================
-- Tests
-- =========================================================
if has_config("tests") then
target("test_string")
set_kind("binary")
add_files("test/test_string.c")
add_deps("lae_strings")
add_packages("cmocka")
if has_config("asan") then
add_cflags("-fsanitize=address", "-fno-omit-frame-pointer", { force = true })
add_ldflags("-fsanitize=address", { force = true })
end
end