From a65cd5add177b4a883b308dc3b9504e93abeeca7 Mon Sep 17 00:00:00 2001 From: Masanori Kakura Date: Mon, 5 Oct 2020 21:24:24 +0900 Subject: Use Meson build system --- .github/workflows/ci.yml | 8 ++-- Makefile | 121 ----------------------------------------------- README.md | 6 +-- meson.build | 39 +++++++++++++++ meson_options.txt | 6 +++ src/common.c | 2 + src/config.c | 2 + src/dxvk.c | 2 + src/lutris.c | 2 + src/main.c | 2 + src/meson.build | 28 +++++++++++ src/net.c | 2 + src/tar.c | 2 + src/wine.c | 2 + 14 files changed, 97 insertions(+), 127 deletions(-) delete mode 100644 Makefile create mode 100644 meson.build create mode 100644 meson_options.txt create mode 100644 src/meson.build diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0d71f9a..5e9680e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,9 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install dependencies - run: sudo apt-get install libcurl4-openssl-dev libjson-c-dev libarchive-dev + run: sudo apt-get install libcurl4-openssl-dev libjson-c-dev libarchive-dev meson - name: Build - run: make - + run: | + meson _build + ninja -vC _build + ninja -vC _build dist diff --git a/Makefile b/Makefile deleted file mode 100644 index e2e1ca0..0000000 --- a/Makefile +++ /dev/null @@ -1,121 +0,0 @@ -# GENERAL VARIABLES -NAME := polecat -VERSION := 0.1.5 -TARGET ?= debug -DEBUG := 0 -ifeq ($(TARGET),debug) - DEBUG := 1 -endif - -PRETTY_OUTPUT ?= 1 - -# CROSS COMPILATION SETUP -CROSS ?= - -# COMMAND VARIABLES -RM := rm -rf -MKDIR := mkdir -p -DOXYGEN := doxygen -PKGCONFIG := ${CROSS}pkg-config -CURLCONFIG := ${CROSS}curl-config - -# DIRECTORIES -BIN_DIR := bin -OBJ_DIR := obj - -SRC_DIR := src - -FILES := $(filter-out $(BIN_DIR) $(OBJ_DIR), $(wildcard *)) - -# FLAGS -CFLAGS ?= -LDFLAGS ?= - -ifeq ($(DEBUG),1) - CFLAGS += -g -endif -CFLAGS += -Wall `$(PKGCONFIG) json-c --cflags` `$(PKGCONFIG) libarchive --cflags` `$(CURLCONFIG) --cflags` -LDFLAGS += `$(PKGCONFIG) json-c --libs` `$(PKGCONFIG) libarchive --libs` `$(CURLCONFIG) --libs` -DEFINES := -DNAME=\"$(NAME)\" -DVERSION=\"$(VERSION)\" -ifeq ($(DEBUG),1) - DEFINES += -DDEBUG -else - # define NDEBUG to prevent assert and similar to cause problems - DEFINES += -DNDEBUG -endif - -# SOURCE CODE AND OBJECT FILES -CC_SRC_FILES := $(wildcard $(SRC_DIR)/*.c) - -OBJ_FILES := $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/$(TARGET)/%.o, $(CC_SRC_FILES)) - - -# TARGETS -default: $(BIN_DIR)/$(TARGET)/$(NAME)$(OUT_EXT) - -all: $(BIN_DIR)/$(TARGET)/$(NAME)$(OUT_EXT) - -$(BIN_DIR)/$(TARGET): - ${MKDIR} $@ - -$(OBJ_DIR)/$(TARGET): - ${MKDIR} $@ - -$(BIN_DIR)/$(TARGET)/$(NAME)$(OUT_EXT): $(OBJ_FILES) | $(BIN_DIR)/$(TARGET) - ${LINK_STATUS} - ${RECIPE_IF} ${CROSS}${CC} -o$@ $^ ${CFLAGS} ${DEFINES} ${LDFLAGS} ${RECIPE_RESULT_LINK} - -$(OBJ_DIR)/$(TARGET)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)/$(TARGET) - ${COMPILE_STATUS} - ${RECIPE_IF} ${CROSS}${CC} -c -o$@ $< ${CFLAGS} ${DEFINES} ${RECIPE_RESULT_COMPILE} - -clean: - ${RM} ${BIN_DIR} ${OBJ_DIR} 2> /dev/null - -loc: - -find ${SRC_DIR} ${INC_DIR} -name '*.cpp' -o -name '*.c' -o -name '*.h' -o -name '*.hpp' -type f | xargs wc -l - -tar: ${NAME}.tar - -dist: tar -distclean: - ${RM} ${NAME}.tar 2> /dev/null - -${NAME}.tar: - ${ARCHIVE_STATUS} - $(RECIPE_IF) tar -cf $@ ${FILES} $(RECIPE_RESULT_ARCHIVE) - -.PHONY: default all clean docs loc tar dist - - -ifeq ($(PRETTY_OUTPUT),1) -.SILENT: -RECIPE_IF = if -COMPILE_STATUS = printf "\033[K\033[0mBuilding object \033[1m$@\033[0m...\033[0m\r" -COMPILE_OK = printf "\033[K\033[0;32mBuilt object \033[1;32m$@\033[0;32m \033[0m\n" -COMPILE_FAILED = printf "\033[K\033[0;31mFailed building \033[1;31m$@\033[0;31m from\033[0m \033[1;31m$<\033[0;31m!\033[0m\n"; exit 1 -RECIPE_RESULT_COMPILE = ; then $(COMPILE_OK); else $(COMPILE_FAILED); fi -ARCHIVE_STATUS = printf "\033[K\033[0mCreating library archive \033[1m$@\033[0m...\033[0m\r" -ARCHIVE_OK = printf "\033[K\033[0;32mCreated library archive \033[1;32m$@\033[0;32m \033[0m\n" -ARCHIVE_FAILED = printf "\033[K\033[0;31mFailed creating library archive \033[1;31m$@\033[0;31m from\033[0m \033[1;31m$<\033[0;31m!\033[0m\n"; exit 1 -RECIPE_RESULT_ARCHIVE = ; then $(ARCHIVE_OK); else $(ARCHIVE_FAILED); fi -LINK_STATUS = printf "\033[K\033[0;0mLinking \033[1m$@\033[0;0m...\033[0m\r" -LINK_OK = printf "\033[K\033[0;32mLinked \033[1;32m$@\033[0;32m \033[0m\n" -LINK_FAILED = printf "\033[K\033[0;31mFailed linking \033[1;31m$@\033[0;31m!\nIf the build options, environment, or system packages have changed, run \'\033[1;31mmake clean\033[0;31m\' and try again.\033[0m\n"; exit 1 -RECIPE_RESULT_LINK = ; then $(LINK_OK); else $(LINK_FAILED); fi -else -RECIPE_IF = -BUILD_STARTED = -COMPILE_STATUS = -COMPILE_OK = true -COMPILE_FAILED = false; exit 1 -RECIPE_RESULT_COMPILE = -ARCHIVE_STATUS = -ARCHIVE_OK = true -ARCHIVE_FAILED = false; exit 1 -RECIPE_RESULT_ARCHIVE = -LINK_STATUS = -LINK_OK = true -LINK_FAILED = false; exit 1 -RECIPE_RESULT_LINK = -endif diff --git a/README.md b/README.md index 868dcb5..6a5c679 100644 --- a/README.md +++ b/README.md @@ -26,15 +26,15 @@ polecat depends on: - pkg-config - libcurl -- curl-config (should be included with the libcurl development package) - json-c - libarchive +- meson ## Build instructions - ensure you have all [dependencies](#Dependencies) installed -- run `make` for a debug build -- run `make TARGET=release` for a release build +- run `meson _build && ninja -C _build` for a debug build +- run `meson _build -Drelease=true && ninja -C _build` for a release build ### [License](LICENSE) diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..c4d1bff --- /dev/null +++ b/meson.build @@ -0,0 +1,39 @@ +project( + 'polecat', + 'c', + default_options : [ + 'buildtype=debugoptimized', + ], + license : 'MIT', + version : '0.1.5', +) + +libarchive_dep = dependency('libarchive') +libcurl_dep = dependency('libcurl') +libjson_c_dep = dependency('json-c') + +conf_data = configuration_data() +conf_data.set_quoted('NAME', meson.project_name()) +conf_data.set_quoted('VERSION', meson.project_version()) +if get_option('release') + conf_data.set('NDEBUG', true) +else + conf_data.set('DEBUG', true) +endif +configure_file(output : 'polecat-config.h', configuration : conf_data) + +conf_inc = include_directories('.') + +run_target( + 'loc', + command : [ + 'sh', + '-c', + 'find src' + + ' -type f' + + ' -name "*.cpp" -o -name "*.c" -o -name "*.h" -o -name "*.hpp"' + + ' | xargs wc -l', + ], +) + +subdir('src') diff --git a/meson_options.txt b/meson_options.txt new file mode 100644 index 0000000..386d85f --- /dev/null +++ b/meson_options.txt @@ -0,0 +1,6 @@ +option( + 'release', + type : 'boolean', + value : false, + description : 'Release build' +) diff --git a/src/common.c b/src/common.c index 6d687ee..c2691fe 100644 --- a/src/common.c +++ b/src/common.c @@ -1,3 +1,5 @@ +#include + #include #include #include diff --git a/src/config.c b/src/config.c index 4309d87..26c775a 100644 --- a/src/config.c +++ b/src/config.c @@ -1,3 +1,5 @@ +#include + #include #include diff --git a/src/dxvk.c b/src/dxvk.c index 3ef429c..da78851 100644 --- a/src/dxvk.c +++ b/src/dxvk.c @@ -1,3 +1,5 @@ +#include + #include #include #include diff --git a/src/lutris.c b/src/lutris.c index ec1f14d..b06ce40 100644 --- a/src/lutris.c +++ b/src/lutris.c @@ -1,3 +1,5 @@ +#include + #include #include #include diff --git a/src/main.c b/src/main.c index 9b506ca..78ad4fe 100644 --- a/src/main.c +++ b/src/main.c @@ -1,3 +1,5 @@ +#include + #include #include #include diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..06aae89 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,28 @@ +polecat_deps = [libarchive_dep, libcurl_dep, libjson_c_dep] + +polecat_sources = files( + 'common.c', + 'common.h', + 'config.c', + 'config.h', + 'dxvk.c', + 'dxvk.h', + 'lutris.c', + 'lutris.h', + 'main.c', + 'main.h', + 'net.c', + 'net.h', + 'tar.c', + 'tar.h', + 'wine.c', + 'wine.h', +) + +executable( + 'polecat', + polecat_sources, + dependencies : polecat_deps, + include_directories : conf_inc, + install : true, +) diff --git a/src/net.c b/src/net.c index cf0488f..1a9cbdd 100644 --- a/src/net.c +++ b/src/net.c @@ -1,3 +1,5 @@ +#include + #include #include #include diff --git a/src/tar.c b/src/tar.c index f7282e2..9e6d499 100644 --- a/src/tar.c +++ b/src/tar.c @@ -1,3 +1,5 @@ +#include + #include #include #include diff --git a/src/wine.c b/src/wine.c index ed428ef..687150c 100644 --- a/src/wine.c +++ b/src/wine.c @@ -1,3 +1,5 @@ +#include + #include #include #include -- cgit v1.2.3