Compare commits
7 Commits
0.0.1-alph
...
main
Author | SHA1 | Date |
---|---|---|
jakeg00dwin | e5c1021d25 | |
jakeg00dwin | 503b4eba67 | |
jakeg00dwin | 41950059a6 | |
jakeg00dwin | 0288b6eff3 | |
jakeg00dwin | 621f7666a6 | |
jakeg00dwin | af29123df1 | |
jakeg00dwin | 9d619fc16f |
|
@ -1,9 +1,20 @@
|
|||
/*
|
||||
* Author: username
|
||||
* Date: todays_date
|
||||
* filename: test_module_name.c
|
||||
* description: module_purpose
|
||||
*/
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <setjmp.h>
|
||||
#include <cmocka.h>
|
||||
|
||||
|
||||
/*Including the code under test*/
|
||||
#include "module_name.h"
|
||||
|
||||
|
||||
/* A test case that does nothing and succeeds. */
|
||||
static void null_test_success(void **state) {
|
||||
(void) state; /* unused */
|
||||
|
|
|
@ -14,12 +14,12 @@ set(TARGET_GROUP production CACHE STRING "Group to build")
|
|||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
# Request C 11 standard features
|
||||
set(CMAKE_C_STANDARD 17)
|
||||
set(CMAKE_C_STANDARD 18)
|
||||
set(CMAKE_C_STANDARD_REQUIRED True)
|
||||
set(CMAKE_C_FLAGS "-Wall -Werror -Wpedantic")
|
||||
|
||||
# SETUP THE CXX flags for .cpp
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD 18)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||||
set(CMAKE_CXX_FLAGS "-Wall -Werror -Wpedantic")
|
||||
|
||||
|
|
70
otto.sh
70
otto.sh
|
@ -3,6 +3,7 @@
|
|||
# Date: 2024
|
||||
# Filename: otto.sh
|
||||
|
||||
USERNAME="Jake G"
|
||||
CROSS_TC_WIN="$(pwd)/i686-w64-mingw32_toolchain.cmake"
|
||||
CMAKE_VERBOSE="ON"
|
||||
CROSS_COMPILE=1
|
||||
|
@ -37,8 +38,8 @@ add_module_to_cmakes () {
|
|||
remove_module_from_cmakes () {
|
||||
local basename="$1"
|
||||
|
||||
sed "s/^.*add_subdirectory(${basename}).*$//g" ./src/CMakeLists.txt > ./src/CMakeLists.txt
|
||||
sed "s/^.*add_subdirectory(${basename}).*$//g" ./tests/CMakeLists.txt > ./tests/CMakeLists.txt
|
||||
sed -i'' "s/^.*add_subdirectory(${basename}).*$//g" ./src/CMakeLists.txt
|
||||
sed -i'' "s/^.*add_subdirectory(${basename}).*$//g" ./tests/CMakeLists.txt
|
||||
}
|
||||
|
||||
git_add_module () {
|
||||
|
@ -85,6 +86,40 @@ git_remove_module () {
|
|||
git rm -r ./tests/CMakeLists.txt
|
||||
}
|
||||
|
||||
add_new_source_files () {
|
||||
local modname="$1"
|
||||
|
||||
modname_cap=$(echo $modname | sed 's/[a-z]/\U&/g')
|
||||
modsrc_dir="./src/${modname}"
|
||||
|
||||
mkdir $modsrc_dir
|
||||
|
||||
sed "s/module_name/${modname}/" $MODULE_DIR/module_name.c |
|
||||
sed "3s/todays_date/$(date +%Y)/" |
|
||||
sed "s/username/${USERNAME}/" > $modsrc_dir/${modname}.c
|
||||
|
||||
sed "s/module_name/${modname_cap}/" $MODULE_DIR/module_name.h |
|
||||
sed "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.h |
|
||||
sed "s/username/${USERNAME}/" > $modsrc_dir/${modname}.h
|
||||
|
||||
sed "s/module_name/${modname}/" $MODULE_DIR/CMakeLists.txt > $modsrc_dir/CMakeLists.txt
|
||||
}
|
||||
|
||||
|
||||
add_new_test_files () {
|
||||
local modname="$1"
|
||||
|
||||
modtest_dir="./tests/${modname}"
|
||||
|
||||
mkdir $modtest_dir
|
||||
|
||||
sed "s/module_name/${modname}/" $MODULE_DIR/test_module_name.c
|
||||
sed "3s/todays_date/$(date +%Y)/" |
|
||||
sed "s/username/${USERNAME}/" > $modsrc_dir/test_${modname}.c
|
||||
|
||||
sed "s/module_name/${modname}/" $MODULE_DIR/TestCMakeLists.txt > $modtest_dir/CMakeLists.txt
|
||||
}
|
||||
|
||||
|
||||
add_new_module () {
|
||||
read -p "Enter the name of the module:" modname
|
||||
|
@ -96,40 +131,19 @@ add_new_module () {
|
|||
echo "Exiting without changing anything"
|
||||
exit
|
||||
fi
|
||||
|
||||
modname_cap=$(echo $modname | sed 's/[a-z]/\U&/g')
|
||||
modsrc_dir="./src/${modname}"
|
||||
modtest_dir="./tests/${modname}"
|
||||
|
||||
echo "creating: ${modsrc_dir}, ${modtest_dir}"
|
||||
mkdir $modsrc_dir
|
||||
mkdir $modtest_dir
|
||||
|
||||
|
||||
#copy the template files.
|
||||
echo "copying & customizing template files..."
|
||||
|
||||
sed "s/module_name/${modname}/" $MODULE_DIR/module_name.c > $modsrc_dir/${modname}.c
|
||||
sed "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.c > $modsrc_dir/${modname}.c
|
||||
|
||||
sed "s/module_name/${modname_cap}/" $MODULE_DIR/module_name.h > $modsrc_dir/${modname}.h
|
||||
sed "3s/todays_date/$(date +%Y)/" $modsrc_dir/${modname}.h > $modsrc_dir/${modname}.h
|
||||
|
||||
sed "s/module_name/${modname}/" $MODULE_DIR/CMakeLists.txt > $modsrc_dir/CMakeLists.txt
|
||||
|
||||
sed "s/module_name/${modname}/" $MODULE_DIR/test_module_name.c > $modtest_dir/test_${modname}.c
|
||||
sed "s/module_name/${modname}/" $MODULE_DIR/TestCMakeLists.txt > $modtest_dir/CMakeLists.txt
|
||||
add_new_source_files "$modname"
|
||||
add_new_test_files "$modname"
|
||||
|
||||
# Add the module to the cmake lists files.
|
||||
# Add the module to the cmake lists files in /src/ and /tests/
|
||||
add_module_to_cmakes "${modname}"
|
||||
|
||||
echo "Resulting files/dirs:"
|
||||
tree -L 2 $modsrc_dir
|
||||
tree -L 2 $modtest_dir
|
||||
|
||||
# Now we add the new files to the git tracked files
|
||||
git_add_module "${modname}"
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -147,7 +161,7 @@ cross_compile () {
|
|||
|
||||
build_release() {
|
||||
clear_cmake_cache
|
||||
cmake -DCAM_HANDLER_LIB=ON -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE} ../
|
||||
cmake -DCMAKE_VERBOSE_MAKEFILE=${CMAKE_VERBOSE} ../
|
||||
}
|
||||
|
||||
build_main () {
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
#Name of the OS
|
||||
set(CMAKE_SYSTEM_NAME )
|
||||
|
||||
set(PROG_TYPE usbasp)
|
||||
|
||||
#Default MCU setup
|
||||
set(MCU atmega328p)
|
||||
set(F_CPU 16000000)
|
||||
set(BAUD 9600)
|
||||
add_definitions(-DF_CPU=${F_CPU})
|
||||
|
||||
# program names
|
||||
set(AVRCPP avr-g++)
|
||||
set(AVRC avr-gcc)
|
||||
set(AVRSTRIP avr-strip)
|
||||
set(OBJCOPY avr-objcopy)
|
||||
set(OBJDUMP avr-objdump)
|
||||
set(AVRSIZE avr-size)
|
||||
set(AVRDUDE avrdude)
|
||||
|
||||
# Sets the compiler
|
||||
# Needs to come before the project function
|
||||
set(CMAKE_SYSTEM_NAME Generic)
|
||||
set(CMAKE_CXX_COMPILER ${AVRCPP})
|
||||
set(CMAKE_C_COMPILER ${AVRC})
|
||||
set(CMAKE_ASM_COMPILER ${AVRC})
|
||||
|
||||
project (template_project C CXX ASM)
|
||||
|
||||
# Compiler flags
|
||||
set(CSTANDARD "-std=gnu99")
|
||||
set(CDEBUG "-gstabs -g -ggdb")
|
||||
set(CWARN "-Wall -Wstrict-prototypes -Wl,--gc-sections -Wl,--relax")
|
||||
set(CTUNING "-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -ffunction-sections -fdata-sections")
|
||||
set(COPT "-Os -lm -lprintf_flt")
|
||||
set(CMCU "-mmcu=${MCU}")
|
||||
set(CDEFS "-DF_CPU=${F_CPU} -DBAUD=${BAUD}")
|
||||
|
||||
set(CFLAGS "${CMCU} ${CDEBUG} ${CDEFS} ${COPT} ${CWARN} ${CSTANDARD} ${CTUNING}")
|
||||
set(CXXFLAGS "${CMCU} ${CDEBUG} ${CDEFS} ${COPT} ${CTUNING}")
|
||||
|
||||
set(CMAKE_C_FLAGS "${CFLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "${CXXFLAGS}")
|
||||
set(CMAKE_ASM_FLAGS "${CFLAGS}")
|
||||
|
||||
|
||||
# Project setup
|
||||
include_directories(${INC_PATH} ${LIB_INC_PATH})
|
||||
add_executable(${PROJECT_NAME} ${SRC_FILES} ${LIB_SRC_FILES})
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "${PROJECT_NAME}.elf")
|
||||
|
||||
# Compiling targets
|
||||
add_custom_target(strip ALL ${AVRSTRIP} "${PROJECT_NAME}.elf" DEPENDS ${PROJECT_NAME})
|
||||
add_custom_target(hex ALL ${OBJCOPY} -R .eeprom -O ihex "${PROJECT_NAME}.elf" "${PROJECT_NAME}.hex" DEPENDS strip)
|
||||
add_custom_target(eeprom ${OBJCOPY} -j .eeprom --change-section-lma .eeprom=0 -O ihex "${PROJECT_NAME}.elf" "${PROJECT_NAME}.eeprom" DEPENDS strip)
|
||||
|
||||
# We want "flash" to be a build target.
|
||||
add_custom_target(flash ${AVRDUDE} -c ${PROG_TYPE} -p ${MCU} -U flash:w:${PROJECT_NAME}.hex DEPENDS hex)
|
||||
|
||||
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${PROJECT_NAME}.hex;${PROJECT_NAME}.eeprom;${PROJECT_NAME}.lst")
|
Loading…
Reference in New Issue