Fix plugin target

master
Elias Fleckenstein 2021-06-09 17:31:27 +02:00
parent 73471f4fb7
commit fd234aeb2f
8 changed files with 19 additions and 12 deletions

View File

@ -3,5 +3,6 @@ all: dungeon plugins
dungeon: dungeon.c
cc -g -o dungeon dungeon.c -ldl -D_GNU_SOURCE
plugins:
make -f plugins/*/Makefile
include plugins/*/Makefile
plugins: ${PLUGINS}

View File

@ -6,7 +6,7 @@ You might want to include the game.h file from plugins/game/game.h. Have a look
Controls: WASD to move, Q to quit.
To build the loader and the plugins in the plugins/ folder, simply type `make` or `make all`. There are separate targets for the loader (`dungeon`) and the plugins. The plugins target simply triggerst all Makefiles that are placed in plugin directories, so you might want to include a makefile in your plugin.
To build the loader and the plugins in the plugins/ folder, simply type `make` or `make all`. There are separate targets for the loader (`dungeon`) and the plugins. All Makefiles that are placed in plugin directories, so you might want to include a makefile in your plugin. The plugins target simply depends on ${PLUGINS}, so just add things to this in your plugin Makefile to add them to the plugins target (usually your plugin.so)
To run the loader, type `./dungeon`. It will load all plugins including the game itself dynamically and run the game.
Plugins are loaded in alphabethical order, with the exception of the game plugin that is loaded first. If you want to make a plugin that depends on another plugin, make sure the other plugin is loaded first by setting the name of your plugin accordingly. A cleaner solution to this is coming soon.

View File

@ -1,2 +1,4 @@
apple.so: apple.c ../game/game.h
cc -g -shared -fpic -o apple.so apple.c
plugins/apple/apple.so: plugins/apple/apple.c plugins/game/game.h
cc -g -shared -fpic -o plugins/apple/apple.so plugins/apple/apple.c
PLUGINS := ${PLUGINS} plugins/apple/apple.so

View File

@ -1,6 +1,6 @@
#include <stddef.h>
#include <stdlib.h>
#include "dungeon.h"
#include "../game/game.h"
static struct entity apple;

View File

@ -1,2 +1,4 @@
game.so: game.c game.h
cc -g -shared -fpic -o game.so game.c -lm -lpthread
plugins/game/game.so: plugins/game/game.c plugins/game/game.h
cc -g -shared -fpic -o plugins/game/game.so plugins/game/game.c -lm -lpthread
PLUGINS := ${PLUGINS} plugins/game/game.so

View File

@ -11,7 +11,7 @@
#include <sys/ioctl.h>
#include <math.h>
#include <pthread.h>
#include "dungeon.h"
#include "game.h"
bool running = true;

View File

@ -1,2 +1,4 @@
monster.so: monster.c ../game/game.h
cc -g -shared -fpic -o monster.so monster.c
plugins/monster/monster.so: plugins/monster/monster.c plugins/game/game.h
cc -g -shared -fpic -o plugins/monster/monster.so plugins/monster/monster.c
PLUGINS := ${PLUGINS} plugins/monster/monster.so

View File

@ -1,6 +1,6 @@
#include <stdlib.h>
#include <stddef.h>
#include "dungeon.h"
#include "../game/game.h"
static struct entity monster;