about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore5
-rw-r--r--CMakeLists.txt18
-rw-r--r--Makefile17
-rwxr-xr-xconfigure8
-rw-r--r--example.c5
5 files changed, 23 insertions, 30 deletions
diff --git a/.gitignore b/.gitignore
index 0ca9d1f..eb62ecc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,5 @@
 *.bmp
-*.o
 CARDS.DLL
 FREECELL.EXE
 SOL.EXE
-config.mk
-dump
-example
+build/
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..06ae91f
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,18 @@
+cmake_minimum_required(VERSION 3.10)
+
+project(cards)
+
+find_package(SDL2 REQUIRED)
+
+if(NOT MSVC)
+	add_compile_options(-Wall -Wextra -pedantic)
+endif()
+
+add_library(cards STATIC cards.c)
+target_link_libraries(cards SDL2::SDL2)
+
+add_executable(example EXCLUDE_FROM_ALL example.c)
+target_link_libraries(example cards SDL2::SDL2main)
+
+add_executable(dump EXCLUDE_FROM_ALL dump.c)
+target_link_libraries(dump cards)
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 488245d..0000000
--- a/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-CFLAGS += -std=c99 -Wall -Wextra -Wpedantic
-
-include config.mk
-
-BINS = dump example
-
-all: ${BINS}
-
-${BINS}: cards.o
-
-.o:
-	${CC} ${LDFLAGS} $< cards.o ${LDLIBS} -o $@
-
-cards.o dump.o example.o: cards.h
-
-clean:
-	rm -f ${BINS} *.o *.bmp
diff --git a/configure b/configure
deleted file mode 100755
index ba1718c..0000000
--- a/configure
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-set -eu
-cflags=$(pkg-config --cflags sdl2)
-ldlibs=$(pkg-config --libs sdl2)
-cat > config.mk << EOF
-CFLAGS += ${cflags}
-LDLIBS += ${ldlibs}
-EOF
diff --git a/example.c b/example.c
index 8790d65..859adc1 100644
--- a/example.c
+++ b/example.c
@@ -39,7 +39,10 @@ enum {
 	WindowHeight = MarginY + 4 * DeltaY,
 };
 
-int main(void) {
+int main(int argc, char *argv[]) {
+	(void)argc;
+	(void)argv;
+
 	if (SDL_Init(SDL_INIT_VIDEO) < 0) err("SDL_Init");
 
 	struct SDL_RWops *rw = SDL_RWFromFile("CARDS.DLL", "rb");