Clean up makefile so build lib doesnt build test

This commit is contained in:
jaburns
2020-10-19 22:58:32 -06:00
parent 16af13ea8b
commit f6aec6d58e
3 changed files with 40 additions and 22 deletions
+21 -13
View File
@@ -4,7 +4,7 @@ CC := cc
CFLAGS := -g -Wall -fPIC
LDFLAGS := -lm -shared
SRC_DIRS := src src/engine src/game src/mario src/tools test
SRC_DIRS := src src/engine src/game src/mario src/tools
BUILD_DIR := build
DIST_DIR := dist
ALL_DIRS := $(addprefix $(BUILD_DIR)/,$(SRC_DIRS))
@@ -20,21 +20,18 @@ IMPORTED := $(C_IMPORTED) $(H_IMPORTED)
C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) $(C_IMPORTED)
O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o))
DEP_FILES := $(O_FILES:.o=.d)
TEST_OBJS := build/test/context.o build/test/level.o build/test/main.o
DUMMY != mkdir -p src/mario
DUMMY != mkdir -p $(ALL_DIRS)
DUMMY != mkdir -p $(DIST_DIR)/include
TEST_SRCS := test/main.c test/context.c test/level.c
TEST_OBJS := $(foreach file,$(TEST_SRCS),$(BUILD_DIR)/$(file:.c=.o))
DUMMY != mkdir -p $(ALL_DIRS) build/test src/mario $(DIST_DIR)/include
$(filter-out src/mario/geo.inc.c,$(IMPORTED)): src/mario/geo.inc.c
src/mario/geo.inc.c: ./import-mario-geo.py
./import-mario-geo.py
test/level.c test/level.h: ./import-test-collision.py
./import-test-collision.py
test/main.c: test/level.h
$(BUILD_DIR)/%.o: %.c $(IMPORTED)
@$(CC) $(CFLAGS) -MM -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
$(CC) -c $(CFLAGS) -o $@ $<
@@ -45,17 +42,28 @@ $(LIB_FILE): $(O_FILES)
$(LIB_H_FILE): src/libsm64.h
cp -f $< $@
test/level.c test/level.h: ./import-test-collision.py
./import-test-collision.py
test/main.c: test/level.h
$(BUILD_DIR)/test/%.o: test/%.c
@$(CC) $(CFLAGS) -MM -MP -MT $@ -MF $(BUILD_DIR)/test/$*.d $<
$(CC) -c $(CFLAGS) -o $@ $<
$(TEST_FILE): $(LIB_FILE) $(TEST_OBJS)
$(CC) -o $@ $(TEST_OBJS) $(LIB_FILE) -lGLEW -lGL -lSDL2 -lSDL2main -lm
lib: $(LIB_FILE)
test: $(TEST_FILE)
lib: $(LIB_FILE) $(LIB_H_FILE)
test: $(TEST_FILE) $(LIB_H_FILE)
run: test
./$(TEST_FILE)
clean:
rm -rf $(BUILD_DIR) $(DIST_DIR) src/mario test/level.?
rm -rf $(BUILD_DIR) $(DIST_DIR) src/mario test/level.? $(TEST_FILE)
-include $(DEP_FILES)
+12 -9
View File
@@ -1,14 +1,17 @@
# libsm64 - Super Mario 64 as a library
The purpose of this project is to provide a clean interface to the movement and rendering
code which was reversed from SM64 by the [SM64 decompilation project](https://github.com/n64decomp/sm64),
so that Mario can be dropped in to existing game engines or other systems with minimal effort.
This project produces a shared library file containing mostly code from the decompilation project,
and loads an official SM64 ROM at runtime to get Mario's texture and animation data, so any project
which makes use of this library must ask the user to provide a ROM for asset extraction.
## Building
### Linux
Currently only linux is supported. Window support coming soon. Requires python3 to build the library,
and SDL2 + GLEW for the test program.
1. Clone this repo and cd in to it
2. `./configure`
3. `make`
4. Now do something interesting with `libsm64.so`, it's not much use on its own.
### Windows
TODO
- `make lib`: Build the `dist` directory, containing the shared object and public-facing header.
- `make test`: (Default) Builds the library `dist` directory as well as the test program.
- `make run`: Build and run the SDL+OpenGL test program.
+7
View File
@@ -383,6 +383,13 @@ int main( void )
size_t romSize;
uint8_t *rom = utils_read_file_alloc( "baserom.us.z64", &romSize );
if( rom == NULL )
{
printf("\nFailed to read ROM file \"baserom.us.z64\"\n\n");
return 1;
}
uint8_t *texture = malloc( 4 * SM64_TEXTURE_WIDTH * SM64_TEXTURE_HEIGHT );
sm64_global_init( rom, texture, NULL );