From ad6d95ba521c86eb579a0897acaed4ed0caf3a0e Mon Sep 17 00:00:00 2001 From: Bananymous Date: Wed, 19 Jun 2024 04:20:23 +0300 Subject: [PATCH] BuildSystem: Rework the whole cmake build system Now files are installed using the install() command instead of manually copying files to their destinations. This allows automatic recompilation of headers that did not work previously --- BAN/CMakeLists.txt | 18 +- CMakeLists.txt | 55 +++-- kernel/CMakeLists.txt | 39 ++-- script/build.sh | 16 +- userspace/CMakeLists.txt | 34 ++-- userspace/Shell/CMakeLists.txt | 13 +- userspace/Terminal/CMakeLists.txt | 16 +- userspace/WindowServer/CMakeLists.txt | 17 +- userspace/aoc2023/CMakeLists.txt | 21 +- userspace/aoc2023/day-template/CMakeLists.txt | 19 +- userspace/aoc2023/day1/CMakeLists.txt | 19 +- userspace/aoc2023/day10/CMakeLists.txt | 19 +- userspace/aoc2023/day11/CMakeLists.txt | 19 +- userspace/aoc2023/day12/CMakeLists.txt | 19 +- userspace/aoc2023/day13/CMakeLists.txt | 19 +- userspace/aoc2023/day14/CMakeLists.txt | 19 +- userspace/aoc2023/day15/CMakeLists.txt | 19 +- userspace/aoc2023/day16/CMakeLists.txt | 19 +- userspace/aoc2023/day17/CMakeLists.txt | 19 +- userspace/aoc2023/day18/CMakeLists.txt | 19 +- userspace/aoc2023/day19/CMakeLists.txt | 19 +- userspace/aoc2023/day2/CMakeLists.txt | 19 +- userspace/aoc2023/day20/CMakeLists.txt | 19 +- userspace/aoc2023/day20/main.cpp | 2 + userspace/aoc2023/day21/CMakeLists.txt | 19 +- userspace/aoc2023/day22/CMakeLists.txt | 9 + userspace/aoc2023/day22/main.cpp | 191 ++++++++++++++++++ userspace/aoc2023/day23/CMakeLists.txt | 19 +- userspace/aoc2023/day24/CMakeLists.txt | 19 +- userspace/aoc2023/day25/CMakeLists.txt | 19 +- userspace/aoc2023/day25/main.cpp | 3 + userspace/aoc2023/day3/CMakeLists.txt | 19 +- userspace/aoc2023/day4/CMakeLists.txt | 19 +- userspace/aoc2023/day5/CMakeLists.txt | 19 +- userspace/aoc2023/day6/CMakeLists.txt | 19 +- userspace/aoc2023/day7/CMakeLists.txt | 19 +- userspace/aoc2023/day8/CMakeLists.txt | 19 +- userspace/aoc2023/day9/CMakeLists.txt | 19 +- userspace/aoc2023/full/CMakeLists.txt | 19 +- userspace/cat-mmap/CMakeLists.txt | 12 +- userspace/cat/CMakeLists.txt | 12 +- userspace/chmod/CMakeLists.txt | 12 +- userspace/cp/CMakeLists.txt | 13 +- userspace/create_program.sh | 17 +- userspace/dd/CMakeLists.txt | 12 +- userspace/dhcp-client/CMakeLists.txt | 13 +- userspace/echo/CMakeLists.txt | 12 +- userspace/getopt/CMakeLists.txt | 13 +- userspace/id/CMakeLists.txt | 13 +- userspace/image/CMakeLists.txt | 14 +- userspace/init/CMakeLists.txt | 13 +- userspace/libraries/CMakeLists.txt | 24 +-- userspace/libraries/LibC/CMakeLists.txt | 42 ++-- userspace/libraries/LibELF/CMakeLists.txt | 16 +- userspace/libraries/LibELF/dummy.cpp | 0 userspace/libraries/LibFont/CMakeLists.txt | 20 +- userspace/libraries/LibGUI/CMakeLists.txt | 22 +- userspace/libraries/LibImage/CMakeLists.txt | 20 +- userspace/libraries/LibInput/CMakeLists.txt | 19 +- userspace/loadkeys/CMakeLists.txt | 12 +- userspace/ls/CMakeLists.txt | 13 +- userspace/meminfo/CMakeLists.txt | 12 +- userspace/mkdir/CMakeLists.txt | 12 +- userspace/mmap-shared-test/CMakeLists.txt | 16 -- userspace/nslookup/CMakeLists.txt | 12 +- userspace/poweroff/CMakeLists.txt | 12 +- userspace/resolver/CMakeLists.txt | 13 +- userspace/rm/CMakeLists.txt | 13 +- userspace/sleep/CMakeLists.txt | 12 +- userspace/snake/CMakeLists.txt | 13 +- userspace/stat/CMakeLists.txt | 13 +- userspace/sudo/CMakeLists.txt | 13 +- userspace/sync/CMakeLists.txt | 12 +- userspace/tee/CMakeLists.txt | 12 +- userspace/test-framebuffer/CMakeLists.txt | 12 +- userspace/test-globals/CMakeLists.txt | 12 +- userspace/test-mmap-shared/CMakeLists.txt | 8 + .../main.cpp | 0 userspace/test-mouse/CMakeLists.txt | 14 +- userspace/test-popen/CMakeLists.txt | 12 +- userspace/test-sort/CMakeLists.txt | 13 +- userspace/test-tcp/CMakeLists.txt | 12 +- userspace/test-udp/CMakeLists.txt | 12 +- userspace/test-unix-socket/CMakeLists.txt | 12 +- userspace/test-window/CMakeLists.txt | 15 +- userspace/test/CMakeLists.txt | 12 +- userspace/touch/CMakeLists.txt | 12 +- userspace/u8sum/CMakeLists.txt | 12 +- userspace/whoami/CMakeLists.txt | 13 +- userspace/yes/CMakeLists.txt | 12 +- 90 files changed, 546 insertions(+), 1074 deletions(-) create mode 100644 userspace/aoc2023/day22/CMakeLists.txt create mode 100644 userspace/aoc2023/day22/main.cpp create mode 100644 userspace/libraries/LibELF/dummy.cpp delete mode 100644 userspace/mmap-shared-test/CMakeLists.txt create mode 100644 userspace/test-mmap-shared/CMakeLists.txt rename userspace/{mmap-shared-test => test-mmap-shared}/main.cpp (100%) diff --git a/BAN/CMakeLists.txt b/BAN/CMakeLists.txt index 0f8f05f0..3f759c40 100644 --- a/BAN/CMakeLists.txt +++ b/BAN/CMakeLists.txt @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.26) - -project(BAN CXX) - set(BAN_SOURCES BAN/Assert.cpp BAN/New.cpp @@ -9,16 +5,8 @@ set(BAN_SOURCES BAN/Time.cpp ) -add_custom_target(ban-headers - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/ - DEPENDS sysroot -) - add_library(ban ${BAN_SOURCES}) -add_dependencies(ban headers libc-install) +banan_link_library(ban libc) -add_custom_target(ban-install - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/libban.a ${BANAN_LIB}/ - DEPENDS ban - BYPRODUCTS ${BANAN_LIB}/libban.a -) +banan_install_headers(ban) +install(TARGETS ban) diff --git a/CMakeLists.txt b/CMakeLists.txt index f8c0053a..7d5f22d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,11 +10,41 @@ add_compile_definitions(__enable_sse=1) project(banan-os CXX C ASM) set(BANAN_BASE_SYSROOT ${CMAKE_SOURCE_DIR}/base-sysroot.tar.gz) + set(BANAN_INCLUDE ${BANAN_SYSROOT}/usr/include) -set(BANAN_LIB ${BANAN_SYSROOT}/usr/lib) -set(BANAN_BIN ${BANAN_SYSROOT}/usr/bin) -set(BANAN_SHARE ${BANAN_SYSROOT}/usr/share) -set(BANAN_BOOT ${BANAN_SYSROOT}/boot) +set(BANAN_LIB ${BANAN_SYSROOT}/usr/lib) +set(BANAN_BIN ${BANAN_SYSROOT}/usr/bin) +set(BANAN_ETC ${BANAN_SYSROOT}/usr/etc) +set(BANAN_SHARE ${BANAN_SYSROOT}/usr/share) +set(BANAN_BOOT ${BANAN_SYSROOT}/boot) + +set(CMAKE_INSTALL_BINDIR ${BANAN_BIN}) +set(CMAKE_INSTALL_SBINDIR ${BANAN_BIN}) +set(CMAKE_INSTALL_LIBDIR ${BANAN_LIB}) +set(CMAKE_INSTALL_INCLUDEDIR ${BANAN_INCLUDE}) +set(CMAKE_INSTALL_SYSCONF ${BANAN_ETC}) +set(CMAKE_INSTALL_MESSAGE NEVER) + +# include headers of ${library} to ${target} +function(banan_include_headers target library) + target_include_directories(${target} PRIVATE $/include) +endfunction() + +# include headers and link ${library} to ${target} +function(banan_link_library target library) + target_link_libraries(${target} PRIVATE ${library}) + banan_include_headers(${target} ${library}) +endfunction() + +# add install step for all header files of target +function(banan_install_headers target) + file(GLOB_RECURSE headers RELATIVE $/include "*.h") + foreach(header ${headers}) + get_filename_component(subdirectory ${header} DIRECTORY) + install(FILES include/${header} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${subdirectory} OPTIONAL) + endforeach() + target_include_directories(${target} PRIVATE $/include) +endfunction() add_subdirectory(kernel) add_subdirectory(bootloader) @@ -25,20 +55,3 @@ add_custom_target(sysroot COMMAND ${CMAKE_COMMAND} -E make_directory ${BANAN_SYSROOT} COMMAND cd ${BANAN_SYSROOT} && tar xf ${BANAN_BASE_SYSROOT} ) - -add_custom_target(headers - DEPENDS kernel-headers - DEPENDS ban-headers - DEPENDS userspace-headers -) - -add_custom_target(install-sysroot - DEPENDS kernel-install - DEPENDS ban-install - DEPENDS userspace-install -) - -add_custom_target(package-sysroot - COMMAND cd ${BANAN_SYSROOT} && tar cf ${BANAN_SYSROOT_TAR} * - DEPENDS install-sysroot -) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 931b3016..8fa5f09b 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -1,13 +1,3 @@ -cmake_minimum_required(VERSION 3.26) - -project(kernel CXX C ASM) - -if("${BANAN_ARCH}" STREQUAL "x86_64") - set(ELF_FORMAT elf64-x86-64) -elseif("${BANAN_ARCH}" STREQUAL "i686") - set(ELF_FORMAT elf32-i386) -endif() - set(KERNEL_SOURCES font/prefs.psf.o kernel/ACPI/ACPI.cpp @@ -106,7 +96,7 @@ set(KERNEL_SOURCES icxxabi.cpp ) -#set(ENABLE_KERNEL_UBSAN True) +set(ENABLE_KERNEL_UBSAN False) if(ENABLE_KERNEL_UBSAN) set(KERNEL_SOURCES ${KERNEL_SOURCES} ubsan.cpp) @@ -172,7 +162,6 @@ set(KERNEL_SOURCES ) add_executable(kernel ${KERNEL_SOURCES}) -add_dependencies(kernel headers) target_compile_definitions(kernel PUBLIC __is_kernel) target_compile_definitions(kernel PUBLIC __arch=${BANAN_ARCH}) @@ -199,16 +188,6 @@ endif() target_link_options(kernel PUBLIC -ffreestanding -nostdlib) -add_custom_target(kernel-headers - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/ - DEPENDS sysroot -) - -add_custom_target(kernel-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/kernel ${BANAN_BOOT}/banan-os.kernel - DEPENDS kernel -) - execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=crtbegin.o OUTPUT_VARIABLE CRTBEGIN OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=crtend.o OUTPUT_VARIABLE CRTEND OUTPUT_STRIP_TRAILING_WHITESPACE) @@ -225,6 +204,22 @@ add_custom_command( # COMMAND x86_64-banan_os-strip ${CMAKE_CURRENT_BINARY_DIR}/kernel #) +banan_include_headers(kernel ban) +banan_include_headers(kernel libc) +banan_include_headers(kernel libfont) +banan_include_headers(kernel libelf) +banan_include_headers(kernel libinput) + +banan_install_headers(kernel) +set_target_properties(kernel PROPERTIES OUTPUT_NAME banan-os.kernel) +install(TARGETS kernel DESTINATION ${BANAN_BOOT}) + +if("${BANAN_ARCH}" STREQUAL "x86_64") + set(ELF_FORMAT elf64-x86-64) +elseif("${BANAN_ARCH}" STREQUAL "i686") + set(ELF_FORMAT elf32-i386) +endif() + add_custom_command( OUTPUT font/prefs.psf.o COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR} && objcopy -O ${ELF_FORMAT} -B i386 -I binary font/prefs.psf ${CMAKE_CURRENT_BINARY_DIR}/font/prefs.psf.o diff --git a/script/build.sh b/script/build.sh index 23144d28..22c7e2e2 100755 --- a/script/build.sh +++ b/script/build.sh @@ -7,6 +7,9 @@ source $BANAN_SCRIPT_DIR/config.sh FAKEROOT_FILE="$BANAN_BUILD_DIR/fakeroot-context" run_fakeroot() { + if [ ! -f $FAKEROOT_FILE ]; then + touch $FAKEROOT_FILE + fi fakeroot -i $FAKEROOT_FILE -s $FAKEROOT_FILE -- /bin/bash -c '$@' bash $@ } @@ -44,9 +47,14 @@ build_toolchain () { create_image () { build_target bootloader - build_target install-sysroot + build_target install + $BANAN_ROOT_DIR/ports/build.sh - build_target package-sysroot + + pushd $BANAN_SYSROOT >/dev/null + run_fakeroot tar cf ${BANAN_SYSROOT_TAR} * + popd >/dev/null + $BANAN_SCRIPT_DIR/image.sh "$1" } @@ -106,8 +114,12 @@ case $1 in build_target clean rm -f $FAKEROOT_FILE rm -rf $BANAN_SYSROOT + rm -f $BANAN_SYSROOT.tar rm -f $BANAN_DISK_IMAGE_PATH ;; + distclean) + rm -rf $BANAN_BUILD_DIR + ;; *) build_target $1 ;; diff --git a/userspace/CMakeLists.txt b/userspace/CMakeLists.txt index 6c194e0f..8d26d958 100644 --- a/userspace/CMakeLists.txt +++ b/userspace/CMakeLists.txt @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.26) - -project(userspace CXX) - set(USERSPACE_PROJECTS cat cat-mmap @@ -18,7 +14,6 @@ set(USERSPACE_PROJECTS ls meminfo mkdir - mmap-shared-test nslookup poweroff resolver @@ -34,6 +29,7 @@ set(USERSPACE_PROJECTS test test-framebuffer test-globals + test-mmap-shared test-mouse test-popen test-sort @@ -50,20 +46,16 @@ set(USERSPACE_PROJECTS add_subdirectory(libraries) -foreach(USERSPACE_PROJECT ${USERSPACE_PROJECTS}) - add_subdirectory(${USERSPACE_PROJECT}) -endforeach() - -add_custom_target(userspace DEPENDS libraries) -add_custom_target(userspace-headers DEPENDS libraries-headers) -add_custom_target(userspace-install DEPENDS userspace libraries-install) - -add_subdirectory(aoc2023) - -foreach(USERSPACE_PROJECT ${USERSPACE_PROJECTS}) - target_compile_options(${USERSPACE_PROJECT} PRIVATE -g) - add_dependencies(userspace ${USERSPACE_PROJECT}) - add_dependencies(userspace-install ${USERSPACE_PROJECT}-install) - - target_link_options(${USERSPACE_PROJECT} PRIVATE -nolibc) +add_custom_target(userspace) + +#add_subdirectory(aoc2023) + +foreach(project ${USERSPACE_PROJECTS}) + add_subdirectory(${project}) + add_dependencies(${project} crtx-install) + add_dependencies(userspace ${project}) + # This is to allow cmake to link when libc updates + target_link_options(${project} PRIVATE -nolibc) + # Default compile options + target_compile_options(${project} PRIVATE -g -O2) endforeach() diff --git a/userspace/Shell/CMakeLists.txt b/userspace/Shell/CMakeLists.txt index ac2e606a..206d043b 100644 --- a/userspace/Shell/CMakeLists.txt +++ b/userspace/Shell/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(Shell CXX) - set(SOURCES main.cpp ) add_executable(Shell ${SOURCES}) -target_compile_options(Shell PUBLIC -O2 -g) -target_link_libraries(Shell PUBLIC libc ban) +banan_link_library(Shell ban) +banan_link_library(Shell libc) -add_custom_target(Shell-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/Shell ${BANAN_BIN}/ - DEPENDS Shell -) +install(TARGETS Shell) diff --git a/userspace/Terminal/CMakeLists.txt b/userspace/Terminal/CMakeLists.txt index e8a08493..9c39342a 100644 --- a/userspace/Terminal/CMakeLists.txt +++ b/userspace/Terminal/CMakeLists.txt @@ -1,17 +1,13 @@ -cmake_minimum_required(VERSION 3.26) - -project(Terminal CXX) - set(SOURCES main.cpp Terminal.cpp ) add_executable(Terminal ${SOURCES}) -target_compile_options(Terminal PUBLIC -O2 -g) -target_link_libraries(Terminal PUBLIC libc ban libfont libgui libinput) +banan_include_headers(Terminal ban) +banan_link_library(Terminal libc) +banan_link_library(Terminal libfont) +banan_link_library(Terminal libgui) +banan_link_library(Terminal libinput) -add_custom_target(Terminal-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/Terminal ${BANAN_BIN}/ - DEPENDS Terminal -) +install(TARGETS Terminal) diff --git a/userspace/WindowServer/CMakeLists.txt b/userspace/WindowServer/CMakeLists.txt index bb70ad6d..d7df2bde 100644 --- a/userspace/WindowServer/CMakeLists.txt +++ b/userspace/WindowServer/CMakeLists.txt @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.26) - -project(WindowServer CXX) - set(SOURCES main.cpp Framebuffer.cpp @@ -10,10 +6,11 @@ set(SOURCES ) add_executable(WindowServer ${SOURCES}) -target_compile_options(WindowServer PUBLIC -O2 -g) -target_link_libraries(WindowServer PUBLIC libc ban libfont libgui libimage libinput) +banan_include_headers(WindowServer ban) +banan_include_headers(WindowServer libgui) +banan_link_library(WindowServer libc) +banan_link_library(WindowServer libfont) +banan_link_library(WindowServer libimage) +banan_link_library(WindowServer libinput) -add_custom_target(WindowServer-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/WindowServer ${BANAN_BIN}/ - DEPENDS WindowServer -) +install(TARGETS WindowServer) diff --git a/userspace/aoc2023/CMakeLists.txt b/userspace/aoc2023/CMakeLists.txt index 6aee4858..7f6c4b06 100644 --- a/userspace/aoc2023/CMakeLists.txt +++ b/userspace/aoc2023/CMakeLists.txt @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023 CXX) - set(AOC2023_PROJECTS day1 day2 @@ -30,20 +26,21 @@ set(AOC2023_PROJECTS full ) -set(BANAN_AOC2023_BIN ${BANAN_BIN}/aoc2023) +set(BANAN_AOC2023_BIN ${CMAKE_INSTALL_BINDIR}/aoc2023) set(BANAN_AOC2023_INPUT ${BANAN_SHARE}/aoc2023) +set(CMAKE_INSTALL_BINDIR ${BANAN_AOC2023_BIN}) + add_custom_target(aoc2023) -add_custom_target(aoc2023_always - COMMAND ${CMAKE_COMMAND} -E make_directory ${BANAN_AOC2023_BIN} - COMMAND ${CMAKE_COMMAND} -E make_directory ${BANAN_AOC2023_INPUT} - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/input/* ${BANAN_AOC2023_INPUT}/ -) -add_custom_target(aoc2023-install DEPENDS aoc2023 aoc2023_always) + +file(GLOB_RECURSE input_files "input/*") +foreach(file ${input_files}) + install(FILES ${file} DESTINATION ${BANAN_AOC2023_INPUT}) +endforeach() foreach(AOC2023_PROJECT ${AOC2023_PROJECTS}) add_subdirectory(${AOC2023_PROJECT}) + add_dependencies(aoc2023 aoc2023_${AOC2023_PROJECT}) endforeach() add_dependencies(userspace aoc2023) -add_dependencies(userspace-install aoc2023-install) diff --git a/userspace/aoc2023/day-template/CMakeLists.txt b/userspace/aoc2023/day-template/CMakeLists.txt index de3e502e..fa588c32 100644 --- a/userspace/aoc2023/day-template/CMakeLists.txt +++ b/userspace/aoc2023/day-template/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day-template CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day-template ${SOURCES}) -target_compile_options(aoc2023_day-template PUBLIC -O2 -g) -target_link_libraries(aoc2023_day-template PUBLIC libc ban) +banan_include_headers(aoc2023_day-template ban) +banan_link_library(aoc2023_day-template libc) -add_dependencies(aoc2023_day-template libc-install ban-install) - -add_custom_target(aoc2023_day-template-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day-template ${BANAN_AOC2023_BIN}/day-template - DEPENDS aoc2023_day-template - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day-template) -add_dependencies(aoc2023-install aoc2023_day-template-install) +install(TARGETS aoc2023_day-template) diff --git a/userspace/aoc2023/day1/CMakeLists.txt b/userspace/aoc2023/day1/CMakeLists.txt index 6b8138c8..d91a19e3 100644 --- a/userspace/aoc2023/day1/CMakeLists.txt +++ b/userspace/aoc2023/day1/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day1 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day1 ${SOURCES}) -target_compile_options(aoc2023_day1 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day1 PUBLIC libc) +banan_include_headers(aoc2023_day1 ban) +banan_link_library(aoc2023_day1 libc) -add_dependencies(aoc2023_day1 libc-install ban-install) - -add_custom_target(aoc2023_day1-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day1 ${BANAN_AOC2023_BIN}/day1 - DEPENDS aoc2023_day1 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day1) -add_dependencies(aoc2023-install aoc2023_day1-install) +install(TARGETS aoc2023_day1) diff --git a/userspace/aoc2023/day10/CMakeLists.txt b/userspace/aoc2023/day10/CMakeLists.txt index 5b156095..f9bfd51b 100644 --- a/userspace/aoc2023/day10/CMakeLists.txt +++ b/userspace/aoc2023/day10/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day10 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day10 ${SOURCES}) -target_compile_options(aoc2023_day10 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day10 PUBLIC libc ban) +banan_include_headers(aoc2023_day10 ban) +banan_link_library(aoc2023_day10 libc) -add_dependencies(aoc2023_day10 libc-install ban-install) - -add_custom_target(aoc2023_day10-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day10 ${BANAN_AOC2023_BIN}/day10 - DEPENDS aoc2023_day10 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day10) -add_dependencies(aoc2023-install aoc2023_day10-install) +install(TARGETS aoc2023_day10) diff --git a/userspace/aoc2023/day11/CMakeLists.txt b/userspace/aoc2023/day11/CMakeLists.txt index 9bf7e8c6..2b0191e3 100644 --- a/userspace/aoc2023/day11/CMakeLists.txt +++ b/userspace/aoc2023/day11/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day11 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day11 ${SOURCES}) -target_compile_options(aoc2023_day11 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day11 PUBLIC libc ban) +banan_include_headers(aoc2023_day11 ban) +banan_link_library(aoc2023_day11 libc) -add_dependencies(aoc2023_day11 libc-install ban-install) - -add_custom_target(aoc2023_day11-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day11 ${BANAN_AOC2023_BIN}/day11 - DEPENDS aoc2023_day11 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day11) -add_dependencies(aoc2023-install aoc2023_day11-install) +install(TARGETS aoc2023_day11) diff --git a/userspace/aoc2023/day12/CMakeLists.txt b/userspace/aoc2023/day12/CMakeLists.txt index 2b3b1705..03ae6b99 100644 --- a/userspace/aoc2023/day12/CMakeLists.txt +++ b/userspace/aoc2023/day12/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day12 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day12 ${SOURCES}) -target_compile_options(aoc2023_day12 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day12 PUBLIC libc ban) +banan_link_library(aoc2023_day12 ban) +banan_link_library(aoc2023_day12 libc) -add_dependencies(aoc2023_day12 libc-install ban-install) - -add_custom_target(aoc2023_day12-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day12 ${BANAN_AOC2023_BIN}/day12 - DEPENDS aoc2023_day12 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day12) -add_dependencies(aoc2023-install aoc2023_day12-install) +install(TARGETS aoc2023_day12) diff --git a/userspace/aoc2023/day13/CMakeLists.txt b/userspace/aoc2023/day13/CMakeLists.txt index 7b39e848..4aafcac7 100644 --- a/userspace/aoc2023/day13/CMakeLists.txt +++ b/userspace/aoc2023/day13/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day13 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day13 ${SOURCES}) -target_compile_options(aoc2023_day13 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day13 PUBLIC libc ban) +banan_include_headers(aoc2023_day13 ban) +banan_link_library(aoc2023_day13 libc) -add_dependencies(aoc2023_day13 libc-install ban-install) - -add_custom_target(aoc2023_day13-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day13 ${BANAN_AOC2023_BIN}/day13 - DEPENDS aoc2023_day13 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day13) -add_dependencies(aoc2023-install aoc2023_day13-install) +install(TARGETS aoc2023_day13) diff --git a/userspace/aoc2023/day14/CMakeLists.txt b/userspace/aoc2023/day14/CMakeLists.txt index 781002a4..0d6d273e 100644 --- a/userspace/aoc2023/day14/CMakeLists.txt +++ b/userspace/aoc2023/day14/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day14 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day14 ${SOURCES}) -target_compile_options(aoc2023_day14 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day14 PUBLIC libc ban) +banan_include_headers(aoc2023_day14 ban) +banan_link_library(aoc2023_day14 libc) -add_dependencies(aoc2023_day14 libc-install ban-install) - -add_custom_target(aoc2023_day14-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day14 ${BANAN_AOC2023_BIN}/day14 - DEPENDS aoc2023_day14 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day14) -add_dependencies(aoc2023-install aoc2023_day14-install) +install(TARGETS aoc2023_day14) diff --git a/userspace/aoc2023/day15/CMakeLists.txt b/userspace/aoc2023/day15/CMakeLists.txt index bc0b387c..4d845a76 100644 --- a/userspace/aoc2023/day15/CMakeLists.txt +++ b/userspace/aoc2023/day15/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day15 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day15 ${SOURCES}) -target_compile_options(aoc2023_day15 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day15 PUBLIC libc ban) +banan_include_headers(aoc2023_day15 ban) +banan_link_library(aoc2023_day15 libc) -add_dependencies(aoc2023_day15 libc-install ban-install) - -add_custom_target(aoc2023_day15-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day15 ${BANAN_AOC2023_BIN}/day15 - DEPENDS aoc2023_day15 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day15) -add_dependencies(aoc2023-install aoc2023_day15-install) +install(TARGETS aoc2023_day15) diff --git a/userspace/aoc2023/day16/CMakeLists.txt b/userspace/aoc2023/day16/CMakeLists.txt index d19f078a..dafa1913 100644 --- a/userspace/aoc2023/day16/CMakeLists.txt +++ b/userspace/aoc2023/day16/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day16 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day16 ${SOURCES}) -target_compile_options(aoc2023_day16 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day16 PUBLIC libc ban) +banan_include_headers(aoc2023_day16 ban) +banan_link_library(aoc2023_day16 libc) -add_dependencies(aoc2023_day16 libc-install ban-install) - -add_custom_target(aoc2023_day16-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day16 ${BANAN_AOC2023_BIN}/day16 - DEPENDS aoc2023_day16 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day16) -add_dependencies(aoc2023-install aoc2023_day16-install) +install(TARGETS aoc2023_day16) diff --git a/userspace/aoc2023/day17/CMakeLists.txt b/userspace/aoc2023/day17/CMakeLists.txt index f43e3047..e3e8204d 100644 --- a/userspace/aoc2023/day17/CMakeLists.txt +++ b/userspace/aoc2023/day17/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day17 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day17 ${SOURCES}) -target_compile_options(aoc2023_day17 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day17 PUBLIC libc ban) +banan_include_headers(aoc2023_day17 ban) +banan_link_library(aoc2023_day17 libc) -add_dependencies(aoc2023_day17 libc-install ban-install) - -add_custom_target(aoc2023_day17-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day17 ${BANAN_AOC2023_BIN}/day17 - DEPENDS aoc2023_day17 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day17) -add_dependencies(aoc2023-install aoc2023_day17-install) +install(TARGETS aoc2023_day17) diff --git a/userspace/aoc2023/day18/CMakeLists.txt b/userspace/aoc2023/day18/CMakeLists.txt index c732ea33..850c47bf 100644 --- a/userspace/aoc2023/day18/CMakeLists.txt +++ b/userspace/aoc2023/day18/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day18 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day18 ${SOURCES}) -target_compile_options(aoc2023_day18 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day18 PUBLIC libc ban) +banan_include_headers(aoc2023_day18 ban) +banan_link_library(aoc2023_day18 libc) -add_dependencies(aoc2023_day18 libc-install ban-install) - -add_custom_target(aoc2023_day18-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day18 ${BANAN_AOC2023_BIN}/day18 - DEPENDS aoc2023_day18 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day18) -add_dependencies(aoc2023-install aoc2023_day18-install) +install(TARGETS aoc2023_day18) diff --git a/userspace/aoc2023/day19/CMakeLists.txt b/userspace/aoc2023/day19/CMakeLists.txt index 17741ead..6310da71 100644 --- a/userspace/aoc2023/day19/CMakeLists.txt +++ b/userspace/aoc2023/day19/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day19 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day19 ${SOURCES}) -target_compile_options(aoc2023_day19 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day19 PUBLIC libc ban) +banan_include_headers(aoc2023_day19 ban) +banan_link_library(aoc2023_day19 libc) -add_dependencies(aoc2023_day19 libc-install ban-install) - -add_custom_target(aoc2023_day19-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day19 ${BANAN_AOC2023_BIN}/day19 - DEPENDS aoc2023_day19 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day19) -add_dependencies(aoc2023-install aoc2023_day19-install) +install(TARGETS aoc2023_day19) diff --git a/userspace/aoc2023/day2/CMakeLists.txt b/userspace/aoc2023/day2/CMakeLists.txt index 91a76458..2ac2f804 100644 --- a/userspace/aoc2023/day2/CMakeLists.txt +++ b/userspace/aoc2023/day2/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day2 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day2 ${SOURCES}) -target_compile_options(aoc2023_day2 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day2 PUBLIC libc) +banan_include_headers(aoc2023_day2 ban) +banan_link_library(aoc2023_day2 libc) -add_dependencies(aoc2023_day2 libc-install ban-install) - -add_custom_target(aoc2023_day2-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day2 ${BANAN_AOC2023_BIN}/day2 - DEPENDS aoc2023_day2 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day2) -add_dependencies(aoc2023-install aoc2023_day2-install) +install(TARGETS aoc2023_day2) diff --git a/userspace/aoc2023/day20/CMakeLists.txt b/userspace/aoc2023/day20/CMakeLists.txt index ee0430fc..e95d111a 100644 --- a/userspace/aoc2023/day20/CMakeLists.txt +++ b/userspace/aoc2023/day20/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day20 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day20 ${SOURCES}) -target_compile_options(aoc2023_day20 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day20 PUBLIC libc ban) +banan_link_library(aoc2023_day20 ban) +banan_link_library(aoc2023_day20 libc) -add_dependencies(aoc2023_day20 libc-install ban-install) - -add_custom_target(aoc2023_day20-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day20 ${BANAN_AOC2023_BIN}/day20 - DEPENDS aoc2023_day20 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day20) -add_dependencies(aoc2023-install aoc2023_day20-install) +install(TARGETS aoc2023_day20) diff --git a/userspace/aoc2023/day20/main.cpp b/userspace/aoc2023/day20/main.cpp index 86388304..394b4934 100644 --- a/userspace/aoc2023/day20/main.cpp +++ b/userspace/aoc2023/day20/main.cpp @@ -30,6 +30,8 @@ struct Module BAN::String name; BAN::Vector targets; + virtual ~Module() {} + virtual void handle_signal(const Signal& signal, BAN::Queue& signal_queue) = 0; }; diff --git a/userspace/aoc2023/day21/CMakeLists.txt b/userspace/aoc2023/day21/CMakeLists.txt index aaa6ec5e..d519a999 100644 --- a/userspace/aoc2023/day21/CMakeLists.txt +++ b/userspace/aoc2023/day21/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day21 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day21 ${SOURCES}) -target_compile_options(aoc2023_day21 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day21 PUBLIC libc ban) +banan_include_headers(aoc2023_day21 ban) +banan_link_library(aoc2023_day21 libc) -add_dependencies(aoc2023_day21 libc-install ban-install) - -add_custom_target(aoc2023_day21-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day21 ${BANAN_AOC2023_BIN}/day21 - DEPENDS aoc2023_day21 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day21) -add_dependencies(aoc2023-install aoc2023_day21-install) +install(TARGETS aoc2023_day21) diff --git a/userspace/aoc2023/day22/CMakeLists.txt b/userspace/aoc2023/day22/CMakeLists.txt new file mode 100644 index 00000000..fb7efd87 --- /dev/null +++ b/userspace/aoc2023/day22/CMakeLists.txt @@ -0,0 +1,9 @@ +set(SOURCES + main.cpp +) + +add_executable(aoc2023_day22 ${SOURCES}) +banan_include_headers(aoc2023_day22 ban) +banan_link_library(aoc2023_day22 libc) + +install(TARGETS aoc2023_day22) diff --git a/userspace/aoc2023/day22/main.cpp b/userspace/aoc2023/day22/main.cpp new file mode 100644 index 00000000..5d75a5f8 --- /dev/null +++ b/userspace/aoc2023/day22/main.cpp @@ -0,0 +1,191 @@ +#include +#include +#include + +#include +#include +#include + +using i8 = int8_t; +using i16 = int16_t; +using i32 = int32_t; +using i64 = int64_t; + +using u8 = uint8_t; +using u16 = uint16_t; +using u32 = uint32_t; +using u64 = uint64_t; + +struct Position +{ + i64 x, y, z; + + bool operator==(const Position& other) const + { + return x == other.x && y == other.y && z == other.z; + } +}; + +static constexpr bool rectangle_contains(const Position& c1, const Position& c2, const Position& p) +{ + ASSERT(c1.x <= c2.x); + ASSERT(c1.y <= c2.y); + return (c1.x <= p.x && p.x <= c2.x) && (c1.y <= p.y && p.y <= c2.y); +} + +struct Brick +{ + Position corners[2]; + BAN::HashSet supporting; + BAN::HashSet supported_by; + + bool supports(const Brick& other) const + { + if (corners[1].z + 1 != other.corners[0].z) + return false; + + for (i32 i = 0; i < 4; i++) + if (rectangle_contains(corners[0], corners[1], { other.corners[i / 2].x, other.corners[i % 2].y, 0 })) + return true; + + for (i32 i = 0; i < 4; i++) + if (rectangle_contains(other.corners[0], other.corners[1], { corners[i / 2].x, corners[i % 2].y, 0 })) + return true; + + return false; + } +}; + +i64 parse_i64(BAN::StringView str) +{ + i64 result = 0; + for (char c : str) + { + ASSERT(isdigit(c)); + result = (result * 10) + (c - '0'); + } + return result; +} + +BAN::Vector parse_bricks(FILE* fp) +{ + BAN::Vector bricks; + + char buffer[64]; + while (fgets(buffer, sizeof(buffer), fp)) + { + BAN::StringView line(buffer); + ASSERT(line.back() == '\n'); + line = line.substring(0, line.size() - 1); + if (line.empty()) + break; + + auto corner_strs = MUST(line.split('~')); + ASSERT(corner_strs.size() == 2); + + Brick brick; + for (i32 i = 0; i < 2; i++) + { + auto coords = MUST(corner_strs[i].split(',')); + ASSERT(coords.size() == 3); + brick.corners[i].x = parse_i64(coords[0]); + brick.corners[i].y = parse_i64(coords[1]); + brick.corners[i].z = parse_i64(coords[2]); + } + ASSERT(brick.corners[0].x <= brick.corners[1].x); + ASSERT(brick.corners[0].y <= brick.corners[1].y); + ASSERT(brick.corners[0].z <= brick.corners[1].z); + MUST(bricks.push_back(brick)); + } + + return bricks; +} + +i64 puzzle1(FILE* fp) +{ + auto brick_comp = [](const Brick& b1, const Brick& b2) { return b1.corners[0].z < b2.corners[0].z; }; + + auto bricks = parse_bricks(fp); + BAN::sort::sort(bricks.begin(), bricks.end(), brick_comp); + + // Simulate brick falling + for (size_t i = 0; i < bricks.size();) + { + bool can_fall = bricks[i].corners[0].z > 1; + for (size_t j = 0; j < i && can_fall; j++) + if (bricks[j].supports(bricks[i])) + can_fall = false; + + if (!can_fall) + i++; + else + { + bricks[i].corners[0].z--; + bricks[i].corners[1].z--; + for (; i > 0; i--) + { + if (brick_comp(bricks[i - 1], bricks[i])) + break; + BAN::swap(bricks[i - 1], bricks[i]); + } + } + } + + // Store brick supporting structures + for (size_t i = 0; i < bricks.size(); i++) + { + for (size_t j = 0; j < bricks.size(); j++) + { + if (i == j) + continue; + if (bricks[i].supports(bricks[j])) + { + MUST(bricks[i].supporting.insert(&bricks[j])); + MUST(bricks[j].supported_by.insert(&bricks[i])); + } + } + } + + i64 result = 0; + for (const auto& brick : bricks) + { + bool disintegratable = true; + for (const auto* support : brick.supporting) + if (support->supported_by.size() <= 1) + disintegratable = false; + result += disintegratable; + } + + // OFF BY 7 + + return result; +} + +i64 puzzle2(FILE* fp) +{ + (void)fp; + return -1; +} + +int main(int argc, char** argv) +{ + const char* file_path = "/usr/share/aoc2023/day22_input.txt"; + + if (argc >= 2) + file_path = argv[1]; + + FILE* fp = fopen(file_path, "r"); + if (fp == nullptr) + { + perror("fopen"); + return 1; + } + + printf("puzzle1: %" PRId64 "\n", puzzle1(fp)); + + fseek(fp, 0, SEEK_SET); + + printf("puzzle2: %" PRId64 "\n", puzzle2(fp)); + + fclose(fp); +} diff --git a/userspace/aoc2023/day23/CMakeLists.txt b/userspace/aoc2023/day23/CMakeLists.txt index d27f82bf..83675ac2 100644 --- a/userspace/aoc2023/day23/CMakeLists.txt +++ b/userspace/aoc2023/day23/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day23 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day23 ${SOURCES}) -target_compile_options(aoc2023_day23 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day23 PUBLIC libc ban) +banan_include_headers(aoc2023_day23 ban) +banan_link_library(aoc2023_day23 libc) -add_dependencies(aoc2023_day23 libc-install ban-install) - -add_custom_target(aoc2023_day23-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day23 ${BANAN_AOC2023_BIN}/day23 - DEPENDS aoc2023_day23 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day23) -add_dependencies(aoc2023-install aoc2023_day23-install) +install(TARGETS aoc2023_day23) diff --git a/userspace/aoc2023/day24/CMakeLists.txt b/userspace/aoc2023/day24/CMakeLists.txt index 90e2b855..16638384 100644 --- a/userspace/aoc2023/day24/CMakeLists.txt +++ b/userspace/aoc2023/day24/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day24 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day24 ${SOURCES}) -target_compile_options(aoc2023_day24 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day24 PUBLIC libc ban) +banan_include_headers(aoc2023_day24 ban) +banan_link_library(aoc2023_day24 libc) -add_dependencies(aoc2023_day24 libc-install ban-install) - -add_custom_target(aoc2023_day24-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day24 ${BANAN_AOC2023_BIN}/day24 - DEPENDS aoc2023_day24 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day24) -add_dependencies(aoc2023-install aoc2023_day24-install) +install(TARGETS aoc2023_day24) diff --git a/userspace/aoc2023/day25/CMakeLists.txt b/userspace/aoc2023/day25/CMakeLists.txt index dea869bc..f40143d0 100644 --- a/userspace/aoc2023/day25/CMakeLists.txt +++ b/userspace/aoc2023/day25/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day25 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day25 ${SOURCES}) -target_compile_options(aoc2023_day25 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day25 PUBLIC libc ban) +banan_link_library(aoc2023_day25 ban) +banan_link_library(aoc2023_day25 libc) -add_dependencies(aoc2023_day25 libc-install ban-install) - -add_custom_target(aoc2023_day25-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day25 ${BANAN_AOC2023_BIN}/day25 - DEPENDS aoc2023_day25 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day25) -add_dependencies(aoc2023-install aoc2023_day25-install) +install(TARGETS aoc2023_day25) diff --git a/userspace/aoc2023/day25/main.cpp b/userspace/aoc2023/day25/main.cpp index e4f313e1..a5a6f2c1 100644 --- a/userspace/aoc2023/day25/main.cpp +++ b/userspace/aoc2023/day25/main.cpp @@ -21,6 +21,9 @@ using u64 = uint64_t; struct Component { + Component(BAN::String name) + : name(BAN::move(name)) + {} BAN::String name; BAN::Vector connections; }; diff --git a/userspace/aoc2023/day3/CMakeLists.txt b/userspace/aoc2023/day3/CMakeLists.txt index 9ca68813..1b0d615a 100644 --- a/userspace/aoc2023/day3/CMakeLists.txt +++ b/userspace/aoc2023/day3/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day3 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day3 ${SOURCES}) -target_compile_options(aoc2023_day3 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day3 PUBLIC libc ban) +banan_include_headers(aoc2023_day3 ban) +banan_link_library(aoc2023_day3 libc) -add_dependencies(aoc2023_day3 libc-install ban-install) - -add_custom_target(aoc2023_day3-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day3 ${BANAN_AOC2023_BIN}/day3 - DEPENDS aoc2023_day3 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day3) -add_dependencies(aoc2023-install aoc2023_day3-install) +install(TARGETS aoc2023_day3) diff --git a/userspace/aoc2023/day4/CMakeLists.txt b/userspace/aoc2023/day4/CMakeLists.txt index f934e8a1..d2802650 100644 --- a/userspace/aoc2023/day4/CMakeLists.txt +++ b/userspace/aoc2023/day4/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day4 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day4 ${SOURCES}) -target_compile_options(aoc2023_day4 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day4 PUBLIC libc ban) +banan_link_library(aoc2023_day4 ban) +banan_link_library(aoc2023_day4 libc) -add_dependencies(aoc2023_day4 libc-install ban-install) - -add_custom_target(aoc2023_day4-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day4 ${BANAN_AOC2023_BIN}/day4 - DEPENDS aoc2023_day4 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day4) -add_dependencies(aoc2023-install aoc2023_day4-install) +install(TARGETS aoc2023_day4) diff --git a/userspace/aoc2023/day5/CMakeLists.txt b/userspace/aoc2023/day5/CMakeLists.txt index e9897bf7..fb2da9ae 100644 --- a/userspace/aoc2023/day5/CMakeLists.txt +++ b/userspace/aoc2023/day5/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day5 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day5 ${SOURCES}) -target_compile_options(aoc2023_day5 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day5 PUBLIC libc ban) +banan_include_headers(aoc2023_day5 ban) +banan_link_library(aoc2023_day5 libc) -add_dependencies(aoc2023_day5 libc-install ban-install) - -add_custom_target(aoc2023_day5-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day5 ${BANAN_AOC2023_BIN}/day5 - DEPENDS aoc2023_day5 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day5) -add_dependencies(aoc2023-install aoc2023_day5-install) +install(TARGETS aoc2023_day5) diff --git a/userspace/aoc2023/day6/CMakeLists.txt b/userspace/aoc2023/day6/CMakeLists.txt index c1e5eb5e..b584e78e 100644 --- a/userspace/aoc2023/day6/CMakeLists.txt +++ b/userspace/aoc2023/day6/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day6 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day6 ${SOURCES}) -target_compile_options(aoc2023_day6 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day6 PUBLIC libc ban) +banan_include_headers(aoc2023_day6 ban) +banan_link_library(aoc2023_day6 libc) -add_dependencies(aoc2023_day6 libc-install ban-install) - -add_custom_target(aoc2023_day6-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day6 ${BANAN_AOC2023_BIN}/day6 - DEPENDS aoc2023_day6 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day6) -add_dependencies(aoc2023-install aoc2023_day6-install) +install(TARGETS aoc2023_day6) diff --git a/userspace/aoc2023/day7/CMakeLists.txt b/userspace/aoc2023/day7/CMakeLists.txt index 74e2b825..f88ce3e8 100644 --- a/userspace/aoc2023/day7/CMakeLists.txt +++ b/userspace/aoc2023/day7/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day7 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day7 ${SOURCES}) -target_compile_options(aoc2023_day7 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day7 PUBLIC libc ban) +banan_include_headers(aoc2023_day7 ban) +banan_link_library(aoc2023_day7 libc) -add_dependencies(aoc2023_day7 libc-install ban-install) - -add_custom_target(aoc2023_day7-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day7 ${BANAN_AOC2023_BIN}/day7 - DEPENDS aoc2023_day7 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day7) -add_dependencies(aoc2023-install aoc2023_day7-install) +install(TARGETS aoc2023_day7) diff --git a/userspace/aoc2023/day8/CMakeLists.txt b/userspace/aoc2023/day8/CMakeLists.txt index 581feb9e..a738ad8c 100644 --- a/userspace/aoc2023/day8/CMakeLists.txt +++ b/userspace/aoc2023/day8/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day8 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day8 ${SOURCES}) -target_compile_options(aoc2023_day8 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day8 PUBLIC libc ban) +banan_include_headers(aoc2023_day8 ban) +banan_link_library(aoc2023_day8 libc) -add_dependencies(aoc2023_day8 libc-install ban-install) - -add_custom_target(aoc2023_day8-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day8 ${BANAN_AOC2023_BIN}/day8 - DEPENDS aoc2023_day8 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day8) -add_dependencies(aoc2023-install aoc2023_day8-install) +install(TARGETS aoc2023_day8) diff --git a/userspace/aoc2023/day9/CMakeLists.txt b/userspace/aoc2023/day9/CMakeLists.txt index 4f630f8c..02836e41 100644 --- a/userspace/aoc2023/day9/CMakeLists.txt +++ b/userspace/aoc2023/day9/CMakeLists.txt @@ -1,22 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023_day9 CXX) - set(SOURCES main.cpp ) add_executable(aoc2023_day9 ${SOURCES}) -target_compile_options(aoc2023_day9 PUBLIC -O2 -g) -target_link_libraries(aoc2023_day9 PUBLIC libc ban) +banan_include_headers(aoc2023_day9 ban) +banan_link_library(aoc2023_day9 libc) -add_dependencies(aoc2023_day9 libc-install ban-install) - -add_custom_target(aoc2023_day9-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023_day9 ${BANAN_AOC2023_BIN}/day9 - DEPENDS aoc2023_day9 - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023_day9) -add_dependencies(aoc2023-install aoc2023_day9-install) +install(TARGETS aoc2023_day9) diff --git a/userspace/aoc2023/full/CMakeLists.txt b/userspace/aoc2023/full/CMakeLists.txt index b202e739..0cc52df6 100644 --- a/userspace/aoc2023/full/CMakeLists.txt +++ b/userspace/aoc2023/full/CMakeLists.txt @@ -1,20 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(aoc2023-full CXX) - set(SOURCES main.cpp ) -add_executable(aoc2023-full ${SOURCES}) -target_compile_options(aoc2023-full PUBLIC -O2 -g) -target_link_libraries(aoc2023-full PUBLIC libc) +add_executable(aoc2023_full ${SOURCES}) +banan_include_headers(aoc2023_full ban) +banan_link_library(aoc2023_full libc) -add_custom_target(aoc2023-full-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/aoc2023-full ${BANAN_AOC2023_BIN}/full - DEPENDS aoc2023-full - DEPENDS aoc2023_always -) - -add_dependencies(aoc2023 aoc2023-full) -add_dependencies(aoc2023-install aoc2023-full-install) +install(TARGETS aoc2023_full) diff --git a/userspace/cat-mmap/CMakeLists.txt b/userspace/cat-mmap/CMakeLists.txt index b5d06b7c..8f0298af 100644 --- a/userspace/cat-mmap/CMakeLists.txt +++ b/userspace/cat-mmap/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(cat-mmap CXX) - set(SOURCES main.cpp ) add_executable(cat-mmap ${SOURCES}) -target_compile_options(cat-mmap PUBLIC -O2 -g) -target_link_libraries(cat-mmap PUBLIC libc) +banan_link_library(cat-mmap libc) -add_custom_target(cat-mmap-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/cat-mmap ${BANAN_BIN}/ - DEPENDS cat-mmap -) +install(TARGETS cat-mmap) diff --git a/userspace/cat/CMakeLists.txt b/userspace/cat/CMakeLists.txt index 999d539c..a0e8ee97 100644 --- a/userspace/cat/CMakeLists.txt +++ b/userspace/cat/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(cat CXX) - set(SOURCES main.cpp ) add_executable(cat ${SOURCES}) -target_compile_options(cat PUBLIC -O2 -g) -target_link_libraries(cat PUBLIC libc) +banan_link_library(cat libc) -add_custom_target(cat-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/cat ${BANAN_BIN}/ - DEPENDS cat -) +install(TARGETS cat) diff --git a/userspace/chmod/CMakeLists.txt b/userspace/chmod/CMakeLists.txt index 076db1d1..53b91dc8 100644 --- a/userspace/chmod/CMakeLists.txt +++ b/userspace/chmod/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(chmod CXX) - set(SOURCES main.cpp ) add_executable(chmod ${SOURCES}) -target_compile_options(chmod PUBLIC -O2 -g) -target_link_libraries(chmod PUBLIC libc) +banan_link_library(chmod libc) -add_custom_target(chmod-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/chmod ${BANAN_BIN}/ - DEPENDS chmod -) +install(TARGETS chmod) diff --git a/userspace/cp/CMakeLists.txt b/userspace/cp/CMakeLists.txt index cd68633c..a4b4e03a 100644 --- a/userspace/cp/CMakeLists.txt +++ b/userspace/cp/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(cp CXX) - set(SOURCES main.cpp ) add_executable(cp ${SOURCES}) -target_compile_options(cp PUBLIC -O2 -g) -target_link_libraries(cp PUBLIC libc ban) +banan_include_headers(cp ban) +banan_link_library(cp libc) -add_custom_target(cp-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/cp ${BANAN_BIN}/ - DEPENDS cp -) +install(TARGETS cp) diff --git a/userspace/create_program.sh b/userspace/create_program.sh index 0f770cfb..1b1881bc 100755 --- a/userspace/create_program.sh +++ b/userspace/create_program.sh @@ -7,27 +7,22 @@ PROGRAM_NAME=$1 mkdir $PROGRAM_NAME cat > $PROGRAM_NAME/CMakeLists.txt << EOF -cmake_minimum_required(VERSION 3.26) - -project($PROGRAM_NAME CXX) - set(SOURCES main.cpp ) add_executable($PROGRAM_NAME \${SOURCES}) -target_compile_options($PROGRAM_NAME PUBLIC -O2 -g) -target_link_libraries($PROGRAM_NAME PUBLIC libc) +banan_link_library($PROGRAM_NAME ban) +banan_link_library($PROGRAM_NAME libc) -add_custom_target($PROGRAM_NAME-install - COMMAND \${CMAKE_COMMAND} -E copy \${CMAKE_CURRENT_BINARY_DIR}/$PROGRAM_NAME \${BANAN_BIN}/ - DEPENDS $PROGRAM_NAME -) +install(TARGETS $PROGRAM_NAME) EOF cat > $PROGRAM_NAME/main.cpp << EOF +#include + int main() { - + printf("Hello World\n"); } EOF diff --git a/userspace/dd/CMakeLists.txt b/userspace/dd/CMakeLists.txt index b86d31ff..7c3da0c5 100644 --- a/userspace/dd/CMakeLists.txt +++ b/userspace/dd/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(dd CXX) - set(SOURCES main.cpp ) add_executable(dd ${SOURCES}) -target_compile_options(dd PUBLIC -O2 -g) -target_link_libraries(dd PUBLIC libc) +banan_link_library(dd libc) -add_custom_target(dd-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/dd ${BANAN_BIN}/ - DEPENDS dd -) +install(TARGETS dd) diff --git a/userspace/dhcp-client/CMakeLists.txt b/userspace/dhcp-client/CMakeLists.txt index 13446873..b02731a0 100644 --- a/userspace/dhcp-client/CMakeLists.txt +++ b/userspace/dhcp-client/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(dhcp-client CXX) - set(SOURCES main.cpp ) add_executable(dhcp-client ${SOURCES}) -target_compile_options(dhcp-client PUBLIC -O2 -g) -target_link_libraries(dhcp-client PUBLIC libc) +banan_include_headers(dhcp-client ban) +banan_link_library(dhcp-client libc) -add_custom_target(dhcp-client-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/dhcp-client ${BANAN_BIN}/ - DEPENDS dhcp-client -) +install(TARGETS dhcp-client) diff --git a/userspace/echo/CMakeLists.txt b/userspace/echo/CMakeLists.txt index bb2f607d..638a3caa 100644 --- a/userspace/echo/CMakeLists.txt +++ b/userspace/echo/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(echo CXX) - set(SOURCES main.cpp ) add_executable(echo ${SOURCES}) -target_compile_options(echo PUBLIC -O2 -g) -target_link_libraries(echo PUBLIC libc) +banan_link_library(echo libc) -add_custom_target(echo-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/echo ${BANAN_BIN}/ - DEPENDS echo -) +install(TARGETS echo) diff --git a/userspace/getopt/CMakeLists.txt b/userspace/getopt/CMakeLists.txt index 83509b77..08ad357e 100644 --- a/userspace/getopt/CMakeLists.txt +++ b/userspace/getopt/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(getopt CXX) - set(SOURCES main.cpp ) add_executable(getopt ${SOURCES}) -target_compile_options(getopt PUBLIC -O2 -g) -target_link_libraries(getopt PUBLIC libc ban) +banan_include_headers(getopt ban) +banan_link_library(getopt libc) -add_custom_target(getopt-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/getopt ${BANAN_BIN}/ - DEPENDS getopt -) +install(TARGETS getopt) diff --git a/userspace/id/CMakeLists.txt b/userspace/id/CMakeLists.txt index 3d4e37b8..d301ca59 100644 --- a/userspace/id/CMakeLists.txt +++ b/userspace/id/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(id CXX) - set(SOURCES main.cpp ) add_executable(id ${SOURCES}) -target_compile_options(id PUBLIC -O2 -g) -target_link_libraries(id PUBLIC libc ban) +banan_include_headers(id ban) +banan_link_library(id libc) -add_custom_target(id-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/id ${BANAN_BIN}/ - DEPENDS id -) +install(TARGETS id) diff --git a/userspace/image/CMakeLists.txt b/userspace/image/CMakeLists.txt index 41188642..84eafe0f 100644 --- a/userspace/image/CMakeLists.txt +++ b/userspace/image/CMakeLists.txt @@ -1,16 +1,10 @@ -cmake_minimum_required(VERSION 3.26) - -project(image CXX) - set(SOURCES main.cpp ) add_executable(image ${SOURCES}) -target_compile_options(image PUBLIC -O2 -g) -target_link_libraries(image PUBLIC libc ban libimage) +banan_include_headers(image ban) +banan_link_library(image libc) +banan_link_library(image libimage) -add_custom_target(image-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/image ${BANAN_BIN}/ - DEPENDS image -) +install(TARGETS image) diff --git a/userspace/init/CMakeLists.txt b/userspace/init/CMakeLists.txt index 71227f56..09f0f913 100644 --- a/userspace/init/CMakeLists.txt +++ b/userspace/init/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(init CXX) - set(SOURCES main.cpp ) add_executable(init ${SOURCES}) -target_compile_options(init PUBLIC -O2 -g) -target_link_libraries(init PUBLIC libc ban) +banan_include_headers(init ban) +banan_link_library(init libc) -add_custom_target(init-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/init ${BANAN_BIN}/ - DEPENDS init -) +install(TARGETS init) diff --git a/userspace/libraries/CMakeLists.txt b/userspace/libraries/CMakeLists.txt index a53cabb2..fa2169f6 100644 --- a/userspace/libraries/CMakeLists.txt +++ b/userspace/libraries/CMakeLists.txt @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.26) - -project(libraries CXX) - set(USERSPACE_LIBRARIES LibC LibELF @@ -11,23 +7,17 @@ set(USERSPACE_LIBRARIES LibInput ) -foreach(LIBRARY ${USERSPACE_LIBRARIES}) - add_subdirectory(${LIBRARY}) +foreach(library ${USERSPACE_LIBRARIES}) + add_subdirectory(${library}) endforeach() add_custom_target(libraries) -add_custom_target(libraries-headers) -add_custom_target(libraries-install) -foreach(LIBRARY ${USERSPACE_LIBRARIES}) - string(TOLOWER ${LIBRARY} LIBRARY_LOWER) - - if (TARGET ${LIBRARY_LOWER}) - add_dependencies(libraries ${LIBRARY_LOWER}) +foreach(library ${USERSPACE_LIBRARIES}) + string(TOLOWER ${library} library_lower) + if (TARGET ${library_lower}) + add_dependencies(libraries ${library_lower}) # This is to allow cmake to link when libc updates - target_link_options(${LIBRARY_LOWER} PRIVATE -nolibc) + target_link_options(${library_lower} PRIVATE -nolibc) endif() - - add_dependencies(libraries-headers ${LIBRARY_LOWER}-headers) - add_dependencies(libraries-install ${LIBRARY_LOWER}-install) endforeach() diff --git a/userspace/libraries/LibC/CMakeLists.txt b/userspace/libraries/LibC/CMakeLists.txt index 4a8275b9..99edf159 100644 --- a/userspace/libraries/LibC/CMakeLists.txt +++ b/userspace/libraries/LibC/CMakeLists.txt @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.26) - -project(libc CXX ASM) - set(LIBC_SOURCES arpa/inet.cpp assert.cpp @@ -35,34 +31,24 @@ set(LIBC_SOURCES ../../../BAN/BAN/Assert.cpp ) -add_custom_target(libc-headers - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/ - DEPENDS sysroot -) - -add_custom_target(crtx - COMMAND ${CMAKE_C_COMPILER} -c ${CMAKE_CURRENT_SOURCE_DIR}/arch/${BANAN_ARCH}/crt0.S -o crt0.o - COMMAND ${CMAKE_C_COMPILER} -c ${CMAKE_CURRENT_SOURCE_DIR}/arch/${BANAN_ARCH}/crti.S -o crti.o - COMMAND ${CMAKE_C_COMPILER} -c ${CMAKE_CURRENT_SOURCE_DIR}/arch/${BANAN_ARCH}/crtn.S -o crtn.o -) - -add_custom_target(crtx-install - COMMAND ${CMAKE_COMMAND} -E copy crt0.o ${BANAN_LIB}/ - COMMAND ${CMAKE_COMMAND} -E copy crti.o ${BANAN_LIB}/ - COMMAND ${CMAKE_COMMAND} -E copy crtn.o ${BANAN_LIB}/ - DEPENDS crtx -) - add_library(libc ${LIBC_SOURCES}) -add_dependencies(libc headers crtx-install) - target_compile_options(libc PRIVATE -O2 -g -Wstack-usage=512 -fno-tree-loop-distribute-patterns) target_compile_options(libc PUBLIC -Wall -Wextra -Werror -Wno-error=stack-usage=) -add_custom_target(libc-install - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/libc.a ${BANAN_LIB}/ - DEPENDS libc - BYPRODUCTS ${BANAN_LIB}/libc.a +add_library(crt0 OBJECT arch/${BANAN_ARCH}/crt0.S) +add_library(crti OBJECT arch/${BANAN_ARCH}/crti.S) +add_library(crtn OBJECT arch/${BANAN_ARCH}/crtn.S) +add_custom_target(crtx-install + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_INSTALL_LIBDIR}/crt0.o + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_INSTALL_LIBDIR}/crti.o + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${CMAKE_INSTALL_LIBDIR}/crtn.o + DEPENDS crt0 crti crtn sysroot ) +banan_include_headers(libc ban) +banan_include_headers(libc kernel) + +banan_install_headers(libc) +install(TARGETS libc) + set(CMAKE_STATIC_LIBRARY_PREFIX "") diff --git a/userspace/libraries/LibELF/CMakeLists.txt b/userspace/libraries/LibELF/CMakeLists.txt index b9ce4fd1..ffe8b45b 100644 --- a/userspace/libraries/LibELF/CMakeLists.txt +++ b/userspace/libraries/LibELF/CMakeLists.txt @@ -1,12 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(LibELF CXX) - -add_custom_target(libelf-headers - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/ - DEPENDS sysroot +set(SOURCES + dummy.cpp ) -add_custom_target(libelf-install - DEPENDS libelf-headers -) +add_library(libelf ${SOURCES}) + +banan_install_headers(libelf) +install(TARGETS libelf) diff --git a/userspace/libraries/LibELF/dummy.cpp b/userspace/libraries/LibELF/dummy.cpp new file mode 100644 index 00000000..e69de29b diff --git a/userspace/libraries/LibFont/CMakeLists.txt b/userspace/libraries/LibFont/CMakeLists.txt index cb1b8fa5..d433b36a 100644 --- a/userspace/libraries/LibFont/CMakeLists.txt +++ b/userspace/libraries/LibFont/CMakeLists.txt @@ -1,25 +1,13 @@ -cmake_minimum_required(VERSION 3.26) - -project(libfont CXX) - set(LIBGUI_SOURCES Font.cpp PSF.cpp ) -add_custom_target(libfont-headers - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/ - DEPENDS sysroot -) - add_library(libfont ${LIBGUI_SOURCES}) -add_dependencies(libfont headers libc-install) -target_link_libraries(libfont PUBLIC libc) +banan_link_library(libfont libc) +banan_link_library(libfont ban) -add_custom_target(libfont-install - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/libfont.a ${BANAN_LIB}/ - DEPENDS libfont - BYPRODUCTS ${BANAN_LIB}/libfont.a -) +banan_install_headers(libfont) +install(TARGETS libfont) set(CMAKE_STATIC_LIBRARY_PREFIX "") diff --git a/userspace/libraries/LibGUI/CMakeLists.txt b/userspace/libraries/LibGUI/CMakeLists.txt index 5cd0f649..9a96c0f9 100644 --- a/userspace/libraries/LibGUI/CMakeLists.txt +++ b/userspace/libraries/LibGUI/CMakeLists.txt @@ -1,24 +1,14 @@ -cmake_minimum_required(VERSION 3.26) - -project(libgui CXX) - set(LIBGUI_SOURCES Window.cpp ) -add_custom_target(libgui-headers - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/ - DEPENDS sysroot -) - add_library(libgui ${LIBGUI_SOURCES}) -add_dependencies(libgui headers libc-install) -target_link_libraries(libgui PUBLIC libc libfont) +banan_include_headers(libgui ban) +banan_include_headers(libgui libfont) +banan_include_headers(libgui libinput) +banan_link_library(libgui libc) -add_custom_target(libgui-install - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/libgui.a ${BANAN_LIB}/ - DEPENDS libgui - BYPRODUCTS ${BANAN_LIB}/libgui.a -) +banan_install_headers(libgui) +install(TARGETS libgui) set(CMAKE_STATIC_LIBRARY_PREFIX "") diff --git a/userspace/libraries/LibImage/CMakeLists.txt b/userspace/libraries/LibImage/CMakeLists.txt index 2798423a..418581c1 100644 --- a/userspace/libraries/LibImage/CMakeLists.txt +++ b/userspace/libraries/LibImage/CMakeLists.txt @@ -1,27 +1,15 @@ -cmake_minimum_required(VERSION 3.26) - -project(libimage CXX) - set(LIBIMAGE_SOURCES Image.cpp Netbpm.cpp PNG.cpp ) -add_custom_target(libimage-headers - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/ - DEPENDS sysroot -) - add_library(libimage ${LIBIMAGE_SOURCES}) -add_dependencies(libimage headers libc-install) -target_link_libraries(libimage PUBLIC libc) target_compile_options(libimage PRIVATE -O3) +banan_link_library(libimage libc) +banan_link_library(libimage ban) -add_custom_target(libimage-install - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/libimage.a ${BANAN_LIB}/ - DEPENDS libimage - BYPRODUCTS ${BANAN_LIB}/libimage.a -) +banan_install_headers(libimage) +install(TARGETS libimage) set(CMAKE_STATIC_LIBRARY_PREFIX "") diff --git a/userspace/libraries/LibInput/CMakeLists.txt b/userspace/libraries/LibInput/CMakeLists.txt index e357bcfd..dd075eb0 100644 --- a/userspace/libraries/LibInput/CMakeLists.txt +++ b/userspace/libraries/LibInput/CMakeLists.txt @@ -1,24 +1,13 @@ -cmake_minimum_required(VERSION 3.26) - -project(libinput CXX) - set(LIBINPUT_SOURCES KeyEvent.cpp KeyboardLayout.cpp ) -add_custom_target(libinput-headers - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/include/ ${BANAN_INCLUDE}/ - DEPENDS sysroot -) - add_library(libinput ${LIBINPUT_SOURCES}) -target_link_libraries(libinput PUBLIC libc ban) +banan_include_headers(libinput ban) +banan_link_library(libinput libc) -add_custom_target(libinput-install - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/libinput.a ${BANAN_LIB}/ - DEPENDS libinput - BYPRODUCTS ${BANAN_LIB}/libinput.a -) +banan_install_headers(libinput) +install(TARGETS libinput) set(CMAKE_STATIC_LIBRARY_PREFIX "") diff --git a/userspace/loadkeys/CMakeLists.txt b/userspace/loadkeys/CMakeLists.txt index dc341366..dd6d7a34 100644 --- a/userspace/loadkeys/CMakeLists.txt +++ b/userspace/loadkeys/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(loadkeys CXX) - set(SOURCES main.cpp ) add_executable(loadkeys ${SOURCES}) -target_compile_options(loadkeys PUBLIC -O2 -g) -target_link_libraries(loadkeys PUBLIC libc) +banan_link_library(loadkeys libc) -add_custom_target(loadkeys-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/loadkeys ${BANAN_BIN}/ - DEPENDS loadkeys -) +install(TARGETS loadkeys) diff --git a/userspace/ls/CMakeLists.txt b/userspace/ls/CMakeLists.txt index 0bb3e557..d1fa310a 100644 --- a/userspace/ls/CMakeLists.txt +++ b/userspace/ls/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(ls CXX) - set(SOURCES main.cpp ) add_executable(ls ${SOURCES}) -target_compile_options(ls PUBLIC -O2 -g) -target_link_libraries(ls PUBLIC libc ban) +banan_link_library(ls ban) +banan_link_library(ls libc) -add_custom_target(ls-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/ls ${BANAN_BIN}/ - DEPENDS ls -) +install(TARGETS ls) diff --git a/userspace/meminfo/CMakeLists.txt b/userspace/meminfo/CMakeLists.txt index 1fa350b9..fd5339cf 100644 --- a/userspace/meminfo/CMakeLists.txt +++ b/userspace/meminfo/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(meminfo CXX) - set(SOURCES main.cpp ) add_executable(meminfo ${SOURCES}) -target_compile_options(meminfo PUBLIC -O2 -g) -target_link_libraries(meminfo PUBLIC libc) +banan_link_library(meminfo libc) -add_custom_target(meminfo-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/meminfo ${BANAN_BIN}/ - DEPENDS meminfo -) +install(TARGETS meminfo) diff --git a/userspace/mkdir/CMakeLists.txt b/userspace/mkdir/CMakeLists.txt index 8111b649..38fbda31 100644 --- a/userspace/mkdir/CMakeLists.txt +++ b/userspace/mkdir/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(mkdir CXX) - set(SOURCES main.cpp ) add_executable(mkdir ${SOURCES}) -target_compile_options(mkdir PUBLIC -O2 -g) -target_link_libraries(mkdir PUBLIC libc) +banan_link_library(mkdir libc) -add_custom_target(mkdir-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/mkdir ${BANAN_BIN}/ - DEPENDS mkdir -) +install(TARGETS mkdir) diff --git a/userspace/mmap-shared-test/CMakeLists.txt b/userspace/mmap-shared-test/CMakeLists.txt deleted file mode 100644 index 59981ab6..00000000 --- a/userspace/mmap-shared-test/CMakeLists.txt +++ /dev/null @@ -1,16 +0,0 @@ -cmake_minimum_required(VERSION 3.26) - -project(mmap-shared-test CXX) - -set(SOURCES - main.cpp -) - -add_executable(mmap-shared-test ${SOURCES}) -target_compile_options(mmap-shared-test PUBLIC -O2 -g) -target_link_libraries(mmap-shared-test PUBLIC libc) - -add_custom_target(mmap-shared-test-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/mmap-shared-test ${BANAN_BIN}/ - DEPENDS mmap-shared-test -) diff --git a/userspace/nslookup/CMakeLists.txt b/userspace/nslookup/CMakeLists.txt index 1b706be8..c251bb2f 100644 --- a/userspace/nslookup/CMakeLists.txt +++ b/userspace/nslookup/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(nslookup CXX) - set(SOURCES main.cpp ) add_executable(nslookup ${SOURCES}) -target_compile_options(nslookup PUBLIC -O2 -g) -target_link_libraries(nslookup PUBLIC libc) +banan_link_library(nslookup libc) -add_custom_target(nslookup-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/nslookup ${BANAN_BIN}/ - DEPENDS nslookup -) +install(TARGETS nslookup) diff --git a/userspace/poweroff/CMakeLists.txt b/userspace/poweroff/CMakeLists.txt index d2ada922..81c3f74c 100644 --- a/userspace/poweroff/CMakeLists.txt +++ b/userspace/poweroff/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(poweroff CXX) - set(SOURCES main.cpp ) add_executable(poweroff ${SOURCES}) -target_compile_options(poweroff PUBLIC -O2 -g) -target_link_libraries(poweroff PUBLIC libc) +banan_link_library(poweroff libc) -add_custom_target(poweroff-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/poweroff ${BANAN_BIN}/ - DEPENDS poweroff -) +install(TARGETS poweroff) diff --git a/userspace/resolver/CMakeLists.txt b/userspace/resolver/CMakeLists.txt index 40b6b020..23a8cc1c 100644 --- a/userspace/resolver/CMakeLists.txt +++ b/userspace/resolver/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(resolver CXX) - set(SOURCES main.cpp ) add_executable(resolver ${SOURCES}) -target_compile_options(resolver PUBLIC -O2 -g) -target_link_libraries(resolver PUBLIC libc ban) +banan_link_library(resolver ban) +banan_link_library(resolver libc) -add_custom_target(resolver-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/resolver ${BANAN_BIN}/ - DEPENDS resolver -) +install(TARGETS resolver) diff --git a/userspace/rm/CMakeLists.txt b/userspace/rm/CMakeLists.txt index c7ed5335..9213a551 100644 --- a/userspace/rm/CMakeLists.txt +++ b/userspace/rm/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(rm CXX) - set(SOURCES main.cpp ) add_executable(rm ${SOURCES}) -target_compile_options(rm PUBLIC -O2 -g) -target_link_libraries(rm PUBLIC libc ban) +banan_include_headers(rm ban) +banan_link_library(rm libc) -add_custom_target(rm-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/rm ${BANAN_BIN}/ - DEPENDS rm -) +install(TARGETS rm) diff --git a/userspace/sleep/CMakeLists.txt b/userspace/sleep/CMakeLists.txt index 38299e58..3efe450f 100644 --- a/userspace/sleep/CMakeLists.txt +++ b/userspace/sleep/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(sleep CXX) - set(SOURCES main.cpp ) add_executable(sleep ${SOURCES}) -target_compile_options(sleep PUBLIC -O2 -g) -target_link_libraries(sleep PUBLIC libc) +banan_link_library(sleep libc) -add_custom_target(sleep-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/sleep ${BANAN_BIN}/ - DEPENDS sleep -) +install(TARGETS sleep) diff --git a/userspace/snake/CMakeLists.txt b/userspace/snake/CMakeLists.txt index 59dc04a8..66e4059e 100644 --- a/userspace/snake/CMakeLists.txt +++ b/userspace/snake/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(snake CXX) - set(SOURCES main.cpp ) add_executable(snake ${SOURCES}) -target_compile_options(snake PUBLIC -O2 -g) -target_link_libraries(snake PUBLIC libc) +banan_include_headers(snake ban) +banan_link_library(snake libc) -add_custom_target(snake-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/snake ${BANAN_BIN}/ - DEPENDS snake -) +install(TARGETS snake) diff --git a/userspace/stat/CMakeLists.txt b/userspace/stat/CMakeLists.txt index fb690eca..2b539b21 100644 --- a/userspace/stat/CMakeLists.txt +++ b/userspace/stat/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(stat CXX) - set(SOURCES main.cpp ) add_executable(stat ${SOURCES}) -target_compile_options(stat PUBLIC -O2 -g) -target_link_libraries(stat PUBLIC libc ban) +banan_link_library(stat ban) +banan_link_library(stat libc) -add_custom_target(stat-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/stat ${BANAN_BIN}/ - DEPENDS stat -) +install(TARGETS stat) diff --git a/userspace/sudo/CMakeLists.txt b/userspace/sudo/CMakeLists.txt index f1cf6b29..f1166923 100644 --- a/userspace/sudo/CMakeLists.txt +++ b/userspace/sudo/CMakeLists.txt @@ -1,17 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(sudo CXX) - set(SOURCES main.cpp ) add_executable(sudo ${SOURCES}) -target_compile_options(sudo PUBLIC -O2 -g) -target_link_libraries(sudo PUBLIC libc) +banan_link_library(sudo libc) -add_custom_target(sudo-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/sudo ${BANAN_BIN}/ - COMMAND /bin/chmod u+s ${BANAN_BIN}/sudo - DEPENDS sudo -) +install(TARGETS sudo) diff --git a/userspace/sync/CMakeLists.txt b/userspace/sync/CMakeLists.txt index 611e7f55..307481f5 100644 --- a/userspace/sync/CMakeLists.txt +++ b/userspace/sync/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(sync CXX) - set(SOURCES main.cpp ) add_executable(sync ${SOURCES}) -target_compile_options(sync PUBLIC -O2 -g) -target_link_libraries(sync PUBLIC libc) +banan_link_library(sync libc) -add_custom_target(sync-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/sync ${BANAN_BIN}/ - DEPENDS sync -) +install(TARGETS sync) diff --git a/userspace/tee/CMakeLists.txt b/userspace/tee/CMakeLists.txt index 4697ff52..7962c169 100644 --- a/userspace/tee/CMakeLists.txt +++ b/userspace/tee/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(tee CXX) - set(SOURCES main.cpp ) add_executable(tee ${SOURCES}) -target_compile_options(tee PUBLIC -O2 -g) -target_link_libraries(tee PUBLIC libc) +banan_link_library(tee libc) -add_custom_target(tee-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/tee ${BANAN_BIN}/ - DEPENDS tee -) +install(TARGETS tee) diff --git a/userspace/test-framebuffer/CMakeLists.txt b/userspace/test-framebuffer/CMakeLists.txt index cd2b58e0..fa8c2f13 100644 --- a/userspace/test-framebuffer/CMakeLists.txt +++ b/userspace/test-framebuffer/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(test-framebuffer CXX) - set(SOURCES main.cpp ) add_executable(test-framebuffer ${SOURCES}) -target_compile_options(test-framebuffer PUBLIC -O2 -g) -target_link_libraries(test-framebuffer PUBLIC libc) +banan_link_library(test-framebuffer libc) -add_custom_target(test-framebuffer-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test-framebuffer ${BANAN_BIN}/ - DEPENDS test-framebuffer -) +install(TARGETS test-framebuffer) diff --git a/userspace/test-globals/CMakeLists.txt b/userspace/test-globals/CMakeLists.txt index 6c7aa366..ad9ab946 100644 --- a/userspace/test-globals/CMakeLists.txt +++ b/userspace/test-globals/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(test-globals CXX) - set(SOURCES main.cpp ) add_executable(test-globals ${SOURCES}) -target_compile_options(test-globals PUBLIC -O2 -g) -target_link_libraries(test-globals PUBLIC libc) +banan_link_library(test-globals libc) -add_custom_target(test-globals-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test-globals ${BANAN_BIN}/ - DEPENDS test-globals -) +install(TARGETS test-globals) diff --git a/userspace/test-mmap-shared/CMakeLists.txt b/userspace/test-mmap-shared/CMakeLists.txt new file mode 100644 index 00000000..29d9e930 --- /dev/null +++ b/userspace/test-mmap-shared/CMakeLists.txt @@ -0,0 +1,8 @@ +set(SOURCES + main.cpp +) + +add_executable(test-mmap-shared ${SOURCES}) +banan_link_library(test-mmap-shared libc) + +install(TARGETS test-mmap-shared) diff --git a/userspace/mmap-shared-test/main.cpp b/userspace/test-mmap-shared/main.cpp similarity index 100% rename from userspace/mmap-shared-test/main.cpp rename to userspace/test-mmap-shared/main.cpp diff --git a/userspace/test-mouse/CMakeLists.txt b/userspace/test-mouse/CMakeLists.txt index 50f75047..2060258e 100644 --- a/userspace/test-mouse/CMakeLists.txt +++ b/userspace/test-mouse/CMakeLists.txt @@ -1,16 +1,10 @@ -cmake_minimum_required(VERSION 3.26) - -project(test-mouse CXX) - set(SOURCES main.cpp ) add_executable(test-mouse ${SOURCES}) -target_compile_options(test-mouse PUBLIC -O2 -g) -target_link_libraries(test-mouse PUBLIC libc) +banan_include_headers(test-mouse ban) +banan_include_headers(test-mouse libinput) +banan_link_library(test-mouse libc) -add_custom_target(test-mouse-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test-mouse ${BANAN_BIN}/ - DEPENDS test-mouse -) +install(TARGETS test-mouse) diff --git a/userspace/test-popen/CMakeLists.txt b/userspace/test-popen/CMakeLists.txt index 02c38f23..c475c12a 100644 --- a/userspace/test-popen/CMakeLists.txt +++ b/userspace/test-popen/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(test-popen CXX) - set(SOURCES main.cpp ) add_executable(test-popen ${SOURCES}) -target_compile_options(test-popen PUBLIC -O2 -g) -target_link_libraries(test-popen PUBLIC libc) +banan_link_library(test-popen libc) -add_custom_target(test-popen-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test-popen ${BANAN_BIN}/ - DEPENDS test-popen -) +install(TARGETS test-popen) diff --git a/userspace/test-sort/CMakeLists.txt b/userspace/test-sort/CMakeLists.txt index 1a88a60c..96c48bcb 100644 --- a/userspace/test-sort/CMakeLists.txt +++ b/userspace/test-sort/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(test-sort CXX) - set(SOURCES main.cpp ) add_executable(test-sort ${SOURCES}) -target_compile_options(test-sort PUBLIC -O2 -g) -target_link_libraries(test-sort PUBLIC libc) +banan_include_headers(test-sort ban) +banan_link_library(test-sort libc) -add_custom_target(test-sort-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test-sort ${BANAN_BIN}/ - DEPENDS test-sort -) +install(TARGETS test-sort) diff --git a/userspace/test-tcp/CMakeLists.txt b/userspace/test-tcp/CMakeLists.txt index b96ed9d0..519fb2d0 100644 --- a/userspace/test-tcp/CMakeLists.txt +++ b/userspace/test-tcp/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(test-tcp CXX) - set(SOURCES main.cpp ) add_executable(test-tcp ${SOURCES}) -target_compile_options(test-tcp PUBLIC -O2 -g) -target_link_libraries(test-tcp PUBLIC libc) +banan_link_library(test-tcp libc) -add_custom_target(test-tcp-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test-tcp ${BANAN_BIN}/ - DEPENDS test-tcp -) +install(TARGETS test-tcp) diff --git a/userspace/test-udp/CMakeLists.txt b/userspace/test-udp/CMakeLists.txt index 3294e6cc..60d3f024 100644 --- a/userspace/test-udp/CMakeLists.txt +++ b/userspace/test-udp/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(test-udp CXX) - set(SOURCES main.cpp ) add_executable(test-udp ${SOURCES}) -target_compile_options(test-udp PUBLIC -O2 -g) -target_link_libraries(test-udp PUBLIC libc) +banan_link_library(test-udp libc) -add_custom_target(test-udp-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test-udp ${BANAN_BIN}/ - DEPENDS test-udp -) +install(TARGETS test-udp) diff --git a/userspace/test-unix-socket/CMakeLists.txt b/userspace/test-unix-socket/CMakeLists.txt index 814407c2..82cbc038 100644 --- a/userspace/test-unix-socket/CMakeLists.txt +++ b/userspace/test-unix-socket/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(test-unix-socket CXX) - set(SOURCES main.cpp ) add_executable(test-unix-socket ${SOURCES}) -target_compile_options(test-unix-socket PUBLIC -O2 -g) -target_link_libraries(test-unix-socket PUBLIC libc) +banan_link_library(test-unix-socket libc) -add_custom_target(test-unix-socket-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test-unix-socket ${BANAN_BIN}/ - DEPENDS test-unix-socket -) +install(TARGETS test-unix-socket) diff --git a/userspace/test-window/CMakeLists.txt b/userspace/test-window/CMakeLists.txt index 766b9ea3..b0c0857f 100644 --- a/userspace/test-window/CMakeLists.txt +++ b/userspace/test-window/CMakeLists.txt @@ -1,16 +1,11 @@ -cmake_minimum_required(VERSION 3.26) - -project(test-window CXX) - set(SOURCES main.cpp ) add_executable(test-window ${SOURCES}) -target_compile_options(test-window PUBLIC -O2 -g) -target_link_libraries(test-window PUBLIC libc ban libgui) +banan_include_headers(test-window ban) +banan_include_headers(test-window libinput) +banan_link_library(test-window libc) +banan_link_library(test-window libgui) -add_custom_target(test-window-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test-window ${BANAN_BIN}/ - DEPENDS test-window -) +install(TARGETS test-window) diff --git a/userspace/test/CMakeLists.txt b/userspace/test/CMakeLists.txt index 0de2c685..093742db 100644 --- a/userspace/test/CMakeLists.txt +++ b/userspace/test/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(test CXX) - set(TEST_SOURCES test.cpp ) add_executable(test ${TEST_SOURCES}) -target_compile_options(test PUBLIC -O2 -g) -target_link_libraries(test PUBLIC libc) +banan_link_library(test libc) -add_custom_target(test-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/test ${BANAN_BIN}/ - DEPENDS test -) +install(TARGETS test) diff --git a/userspace/touch/CMakeLists.txt b/userspace/touch/CMakeLists.txt index c4542c64..2e93a182 100644 --- a/userspace/touch/CMakeLists.txt +++ b/userspace/touch/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(touch CXX) - set(SOURCES main.cpp ) add_executable(touch ${SOURCES}) -target_compile_options(touch PUBLIC -O2 -g) -target_link_libraries(touch PUBLIC libc) +banan_link_library(touch libc) -add_custom_target(touch-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/touch ${BANAN_BIN}/ - DEPENDS touch -) +install(TARGETS touch) diff --git a/userspace/u8sum/CMakeLists.txt b/userspace/u8sum/CMakeLists.txt index 249d160d..3233e3ef 100644 --- a/userspace/u8sum/CMakeLists.txt +++ b/userspace/u8sum/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(u8sum CXX) - set(SOURCES main.cpp ) add_executable(u8sum ${SOURCES}) -target_compile_options(u8sum PUBLIC -O2 -g) -target_link_libraries(u8sum PUBLIC libc) +banan_link_library(u8sum libc) -add_custom_target(u8sum-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/u8sum ${BANAN_BIN}/ - DEPENDS u8sum -) +install(TARGETS u8sum) diff --git a/userspace/whoami/CMakeLists.txt b/userspace/whoami/CMakeLists.txt index 1a9a3aac..106f9616 100644 --- a/userspace/whoami/CMakeLists.txt +++ b/userspace/whoami/CMakeLists.txt @@ -1,16 +1,9 @@ -cmake_minimum_required(VERSION 3.26) - -project(whoami CXX) - set(SOURCES main.cpp ) add_executable(whoami ${SOURCES}) -target_compile_options(whoami PUBLIC -O2 -g) -target_link_libraries(whoami PUBLIC libc ban) +banan_include_headers(whoami ban) +banan_link_library(whoami libc) -add_custom_target(whoami-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/whoami ${BANAN_BIN}/ - DEPENDS whoami -) +install(TARGETS whoami) diff --git a/userspace/yes/CMakeLists.txt b/userspace/yes/CMakeLists.txt index 6ef982bd..b6ef202c 100644 --- a/userspace/yes/CMakeLists.txt +++ b/userspace/yes/CMakeLists.txt @@ -1,16 +1,8 @@ -cmake_minimum_required(VERSION 3.26) - -project(yes CXX) - set(SOURCES main.cpp ) add_executable(yes ${SOURCES}) -target_compile_options(yes PUBLIC -O2 -g) -target_link_libraries(yes PUBLIC libc) +banan_link_library(yes libc) -add_custom_target(yes-install - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/yes ${BANAN_BIN}/ - DEPENDS yes -) +install(TARGETS yes)