diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fcfd956..835836c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,8 +24,9 @@ jobs: - name: Compile and Package shell: bash run: | - make clean all - 7z a ./build/mdloader-${RUNNER_OS}.zip ./build/mdloader* + cmake -S . -B build -G"Unix Makefiles" + cd build && cmake --build . + 7z a ./mdloader-${RUNNER_OS}.zip mdloader* - uses: actions/upload-artifact@v2 with: diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..e726ed5 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.10) + +# set the project name and version +project("Massdrop Loader" VERSION 1.7) + +configure_file(config.h.in config.h) +include_directories("${PROJECT_BINARY_DIR}") + +file(COPY applet-mdflash.bin DESTINATION "${CMAKE_BINARY_DIR}") + +SET(SOURCES + mdloader_common.c + mdloader_parser.c +) + +if (WIN32) +SET(SOURCES ${SOURCES} + mdloader_win32.c +) +else() +SET(SOURCES ${SOURCES} + mdloader_unix.c +) +endif() + +add_executable(mdloader ${SOURCES}) +install(TARGETS mdloader DESTINATION bin) diff --git a/Makefile b/Makefile deleted file mode 100644 index 599496b..0000000 --- a/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -OUTNAME = mdloader -OBJDIR = build -CC = gcc -CFLAGS = -Wall -std=gnu99 - -SRCFILES = mdloader_common.c mdloader_parser.c -ifeq ($(OS),Windows_NT) -SRCFILES += mdloader_win32.c -else -SRCFILES += mdloader_unix.c -endif - -OBJFILES = $(patsubst %.c,%.o,$(SRCFILES)) -OBJS = $(addprefix $(OBJDIR)/,$(OBJFILES)) - -all: $(OBJDIR)/$(OUTNAME) - $(info Done!) - -$(OBJDIR)/$(OUTNAME): $(OBJS) - $(info Creating $@...) - @$(CC) $(CFLAGS) $(OBJS) -o $@ - @rm -f $(OBJDIR)/*.o - -$(OBJS): | $(OBJDIR) - -$(OBJDIR): - @mkdir $(OBJDIR) - -$(OBJS): $(OBJDIR)/%.o : %.c - $(info Compiling ${<}...) - @$(CC) $(CFLAGS) -c -o $@ $< - -clean: - $(info Removing $(OBJDIR)...) - @rm -r -f $(OBJDIR) - $(info Done!) diff --git a/README.md b/README.md index 7716102..3d386cb 100644 --- a/README.md +++ b/README.md @@ -55,10 +55,11 @@ Massdrop keyboard's featuring Microchip's SAM-BA bootloader. ## Building -Enter mdloader directory where Makefile is located and execute: +Enter mdloader directory where `CMakeLists.txt` is located and execute: ``` -make +cmake -B build +cmake --build build ``` This will create a `build` directory with the compiled executable. Run `./build/mdloader` to test. diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..8291613 --- /dev/null +++ b/config.h.in @@ -0,0 +1,6 @@ +#pragma once + +#define PROJECT_NAME "@PROJECT_NAME@" +#define PROJECT_VER "@PROJECT_VERSION@" +#define PROJECT_VER_MAJOR "@PROJECT_VERSION_MAJOR@" +#define PROJECT_VER_MINOR "@PROJECT_VERSION_MINOR@" diff --git a/mdloader_common.c b/mdloader_common.c index f3a105b..430d994 100644 --- a/mdloader_common.c +++ b/mdloader_common.c @@ -601,14 +601,14 @@ int set_terminal_mode(void) //Display program version void display_version(void) { - printf(PROGRAM_NAME " %i.%02i\n", VERSION_MAJOR, VERSION_MINOR); + printf(PROJECT_NAME " " PROJECT_VER "\n"); printf("\n"); } //Display program copyright void display_copyright(void) { - printf(PROGRAM_NAME " Copyright (C) 2018-2022 Massdrop Inc.\n"); + printf(PROJECT_NAME " Copyright (C) 2018-2022 Massdrop Inc.\n"); printf("This program is Free Software and has ABSOLUTELY NO WARRANTY\n"); printf("\n"); } diff --git a/mdloader_common.h b/mdloader_common.h index 8ee8bc1..29ab466 100644 --- a/mdloader_common.h +++ b/mdloader_common.h @@ -20,9 +20,7 @@ #ifndef _MDLOADER_COMMON_H #define _MDLOADER_COMMON_H -#define PROGRAM_NAME "Massdrop Loader" -#define VERSION_MAJOR 1 -#define VERSION_MINOR 7 //0-99 +#include "config.h" #ifdef _WIN32 #define INITGUID diff --git a/mdloader_win32.c b/mdloader_win32.c index 39f0373..2591c71 100644 --- a/mdloader_win32.c +++ b/mdloader_win32.c @@ -469,7 +469,7 @@ int close_port(char silent) //Return 1 on sucess, 0 on failure int config_port(void) { - DCB dcb = {}; + DCB dcb = {0}; if (verbose) printf("Configuring port... \n");