@@ -0,0 +1,11 @@ | |||
cmake_minimum_required(VERSION 2.6) | |||
project(swan) | |||
find_package(SFML 2.5 COMPONENTS graphics system window REQUIRED) | |||
include_directories("${PROJECT_SOURCE_DIR}/libswan/include") | |||
add_subdirectory(libswan) | |||
add_subdirectory(core.mod) | |||
add_executable(swan src/main.cc) | |||
target_link_libraries(swan libswan sfml-graphics sfml-system sfml-window dl) |
@@ -1,123 +0,0 @@ | |||
# Makefile generated by smake. | |||
PROJNAME = swan | |||
PROJTYPE = exe | |||
SRCS = src/main.cc | |||
HDRS = | |||
OBJS = $(patsubst src/%,$(BUILD)/obj/%.o,$(SRCS)) | |||
DEPS = $(patsubst src/%,$(BUILD)/dep/%.d,$(SRCS)) | |||
PUBLICHDRS = | |||
# Defaults | |||
PKGS = | |||
EXTRADEPS = libswan/src/Body.cc libswan/src/Chunk.cc libswan/src/Game.cc libswan/src/Mod.cc libswan/src/Player.cc libswan/src/World.cc libswan/src/WorldPlane.cc libswan/include/swan/Chunk.h libswan/include/swan/Game.h libswan/include/swan/Player.h libswan/include/swan/WorldPlane.h libswan/include/swan/World.h libswan/include/swan/common.h libswan/include/swan/Tile.h libswan/include/swan/Mod.h libswan/include/swan/Body.h | |||
EXTRAPUBLICDEPS = libswan/include/swan/Chunk.h libswan/include/swan/Game.h libswan/include/swan/Player.h libswan/include/swan/WorldPlane.h libswan/include/swan/World.h libswan/include/swan/common.h libswan/include/swan/Tile.h libswan/include/swan/Mod.h libswan/include/swan/Body.h | |||
CONFIG ?= release | |||
BUILDDIR ?= build | |||
BUILD ?= $(BUILDDIR)/$(CONFIG) | |||
WARNINGS = -Wall -Wextra -Wno-unused-parameter | |||
SMAKEFILE ?= Smakefile | |||
DESTDIR ?= | |||
PREFIX ?= /usr/local | |||
PHONIES = dumpdeps dumppublicdeps dumpprojtype clean cleanall | |||
CONFIGS = release sanitize debug | |||
PKG_CONFIG ?= pkg-config | |||
AR ?= ar | |||
CCOPTS = -Iinclude -isystem libswan/include | |||
CCOPTS_release = -O2 -flto | |||
CCOPTS_debug = -g | |||
CCOPTS_sanitize = -fsanitize=address -fsanitize=undefined $(CCOPTS_debug) | |||
LDOPTS = -Llibswan/build/$(CONFIG) | |||
LDOPTS_release = -flto | |||
LDOPTS_debug = | |||
LDOPTS_sanitize = -fsanitize=address -fsanitize=undefined $(LDOPTS_debug) | |||
runpfx = @echo $(1) $(2) && $(2) | |||
.PHONY: all | |||
all: $(BUILD)/$(PROJNAME) | |||
-include $(SMAKEFILE) | |||
ifeq ($(filter $(CONFIGS),$(CONFIG)),) | |||
ifeq ($(filter cleanall,$(MAKECMDGOALS)),) | |||
$(error Unknown config '$(CONFIG)'. Supported configs: $(CONFIGS)) | |||
endif | |||
endif | |||
ifneq ($(PKGS),) | |||
CCOPTS += $(shell $(PKG_CONFIG) --cflags $(PKGS)) | |||
LDOPTS += $(shell $(PKG_CONFIG) --libs $(PKGS)) | |||
endif | |||
CFLAGS := $(CCOPTS_$(CONFIG)) $(CCOPTS) $(WARNINGS) $(CFLAGS) | |||
CXXFLAGS := $(CCOPTS_$(CONFIG)) $(CCOPTS) $(WARNINGS) $(CXXFLAGS) | |||
LDFLAGS := $(LDOPTS_$(CONFIG)) $(LDOPTS) $(LDFLAGS) | |||
$(BUILD)/$(PROJNAME): libswan/build/$(CONFIG)/.built $(OBJS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(LD)',$(CC) -o $@ $(OBJS) $(LDFLAGS)) | |||
touch $(BUILD)/.built | |||
@echo '(OK)' Created $@. | |||
$(PROJNAME): $(BUILD)/$(PROJNAME) | |||
cp $< $@ | |||
@echo '(OK)' Created $@. | |||
libswan/build/$(CONFIG)/.built: libswan/src/Body.cc libswan/src/Chunk.cc libswan/src/Game.cc libswan/src/Mod.cc libswan/src/Player.cc libswan/src/World.cc libswan/src/WorldPlane.cc libswan/include/swan/Chunk.h libswan/include/swan/Game.h libswan/include/swan/Player.h libswan/include/swan/WorldPlane.h libswan/include/swan/World.h libswan/include/swan/common.h libswan/include/swan/Tile.h libswan/include/swan/Mod.h libswan/include/swan/Body.h | |||
$(call runpfx,'(SUB)',$(MAKE) -C libswan) | |||
$(BUILD)/obj/%.c.o: src/%.c $(EXTRAPUBLICDEPS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(CC)',$(CC) -o $@ -c $< $(CFLAGS)) | |||
$(BUILD)/obj/%.cc.o: src/%.cc $(EXTRAPUBLICDEPS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(CXX)',$(CXX) -o $@ -c $< $(CXXFLAGS)) | |||
$(BUILD)/dep/%.c.d: src/%.c $(HDRS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(DEP)',$(CC) -o $@ -MM $< -MT $(patsubst src/%,$(BUILD)/obj/%.o,$<) $(CFLAGS)) | |||
$(BUILD)/dep/%.cc.d: src/%.cc $(HDRS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(DEP)',$(CXX) -o $@ -MM $< -MT $(patsubst src/%,$(BUILD)/obj/%.o,$<) $(CXXFLAGS)) | |||
.PHONY: install | |||
install: $(BUILD)/$(PROJNAME) | |||
mkdir -p $(DESTDIR)$(PREFIX)/bin | |||
cp -f $^ $(DESTDIR)$(PREFIX)/bin | |||
chmod 755 $(DESTDIR)$(PREFIX)/bin/$(PROJNAME) | |||
$(MAKE) -C libswan install | |||
.PHONY: uninstall | |||
uninstall: | |||
rm -f $(DESTDIR)$(PREFIX)/bin/$(PROJNAME) | |||
$(MAKE) -C libswan uninstall | |||
.PHONY: clean | |||
clean: | |||
rm -rf $(PROJNAME) $(BUILD) | |||
$(MAKE) -C libswan clean | |||
.PHONY: cleanall | |||
cleanall: | |||
rm -rf $(BUILDDIR) | |||
$(MAKE) -C libswan cleanall | |||
.PHONY: dumpdeps | |||
dumpdeps: | |||
@echo $(addprefix $(PREPEND),$(SRCS) $(HDRS) $(EXTRADEPS)) | |||
.PHONY: dumppublicdeps | |||
dumppublicdeps: | |||
@echo $(addprefix $(PREPEND),$(PUBLICHDRS) $(EXTRAPUBLICDEPS)) | |||
.PHONY: dumpprojtype | |||
dumpprojtype: | |||
@echo $(PROJTYPE) | |||
ifeq ($(filter $(PHONIES),$(MAKECMDGOALS)),) | |||
-include $(DEPS) | |||
endif |
@@ -1,5 +0,0 @@ | |||
PROJNAME = swan | |||
PROJTYPE = exe | |||
PKGS = sfml-all | |||
LDOPTS += -lstdc++ -ldl -lswan -Wl,--rpath=libswan/build/$(CONFIG) | |||
DEPENDS = libswan |
@@ -0,0 +1,2 @@ | |||
add_library(core.mod SHARED src/mod.cc) | |||
set_target_properties(core.mod PROPERTIES OUTPUT_NAME core.mod PREFIX "") |
@@ -1,123 +0,0 @@ | |||
# Makefile generated by smake. | |||
PROJNAME = core.mod | |||
PROJTYPE = solib | |||
SRCS = src/mod.cc | |||
HDRS = | |||
OBJS = $(patsubst src/%,$(BUILD)/obj/%.o,$(SRCS)) | |||
DEPS = $(patsubst src/%,$(BUILD)/dep/%.d,$(SRCS)) | |||
PUBLICHDRS = | |||
# Defaults | |||
PKGS = | |||
EXTRADEPS = ../libswan/src/Body.cc ../libswan/src/Chunk.cc ../libswan/src/Game.cc ../libswan/src/Mod.cc ../libswan/src/Player.cc ../libswan/src/World.cc ../libswan/src/WorldPlane.cc ../libswan/include/swan/Chunk.h ../libswan/include/swan/Game.h ../libswan/include/swan/Player.h ../libswan/include/swan/WorldPlane.h ../libswan/include/swan/World.h ../libswan/include/swan/common.h ../libswan/include/swan/Tile.h ../libswan/include/swan/Mod.h ../libswan/include/swan/Body.h | |||
EXTRAPUBLICDEPS = ../libswan/include/swan/Chunk.h ../libswan/include/swan/Game.h ../libswan/include/swan/Player.h ../libswan/include/swan/WorldPlane.h ../libswan/include/swan/World.h ../libswan/include/swan/common.h ../libswan/include/swan/Tile.h ../libswan/include/swan/Mod.h ../libswan/include/swan/Body.h | |||
CONFIG ?= release | |||
BUILDDIR ?= build | |||
BUILD ?= $(BUILDDIR)/$(CONFIG) | |||
WARNINGS = -Wall -Wextra -Wno-unused-parameter | |||
SMAKEFILE ?= Smakefile | |||
DESTDIR ?= | |||
PREFIX ?= /usr/local | |||
PHONIES = dumpdeps dumppublicdeps dumpprojtype clean cleanall | |||
CONFIGS = release sanitize debug | |||
PKG_CONFIG ?= pkg-config | |||
AR ?= ar | |||
CCOPTS = -Iinclude -fPIC -isystem ../libswan/include | |||
CCOPTS_release = -O2 -flto | |||
CCOPTS_debug = -g | |||
CCOPTS_sanitize = -fsanitize=address -fsanitize=undefined $(CCOPTS_debug) | |||
LDOPTS = -L../libswan/build/$(CONFIG) | |||
LDOPTS_release = -flto | |||
LDOPTS_debug = | |||
LDOPTS_sanitize = -fsanitize=address -fsanitize=undefined $(LDOPTS_debug) | |||
runpfx = @echo $(1) $(2) && $(2) | |||
.PHONY: all | |||
all: $(BUILD)/$(PROJNAME).so | |||
-include $(SMAKEFILE) | |||
ifeq ($(filter $(CONFIGS),$(CONFIG)),) | |||
ifeq ($(filter cleanall,$(MAKECMDGOALS)),) | |||
$(error Unknown config '$(CONFIG)'. Supported configs: $(CONFIGS)) | |||
endif | |||
endif | |||
ifneq ($(PKGS),) | |||
CCOPTS += $(shell $(PKG_CONFIG) --cflags $(PKGS)) | |||
LDOPTS += $(shell $(PKG_CONFIG) --libs $(PKGS)) | |||
endif | |||
CFLAGS := $(CCOPTS_$(CONFIG)) $(CCOPTS) $(WARNINGS) $(CFLAGS) | |||
CXXFLAGS := $(CCOPTS_$(CONFIG)) $(CCOPTS) $(WARNINGS) $(CXXFLAGS) | |||
LDFLAGS := $(LDOPTS_$(CONFIG)) $(LDOPTS) $(LDFLAGS) | |||
$(BUILD)/$(PROJNAME).so: ../libswan/build/$(CONFIG)/.built $(OBJS) $(EXTRADEPS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(LD)',$(CC) -o $@ $(OBJS) -shared $(LDLAGS)) | |||
touch $(BUILD)/.built | |||
@echo '(OK)' Created $@. | |||
../libswan/build/$(CONFIG)/.built: ../libswan/src/Body.cc ../libswan/src/Chunk.cc ../libswan/src/Game.cc ../libswan/src/Mod.cc ../libswan/src/Player.cc ../libswan/src/World.cc ../libswan/src/WorldPlane.cc ../libswan/include/swan/Chunk.h ../libswan/include/swan/Game.h ../libswan/include/swan/Player.h ../libswan/include/swan/WorldPlane.h ../libswan/include/swan/World.h ../libswan/include/swan/common.h ../libswan/include/swan/Tile.h ../libswan/include/swan/Mod.h ../libswan/include/swan/Body.h | |||
$(call runpfx,'(SUB)',$(MAKE) -C ../libswan) | |||
$(BUILD)/obj/%.c.o: src/%.c $(EXTRAPUBLICDEPS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(CC)',$(CC) -o $@ -c $< $(CFLAGS)) | |||
$(BUILD)/obj/%.cc.o: src/%.cc $(EXTRAPUBLICDEPS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(CXX)',$(CXX) -o $@ -c $< $(CXXFLAGS)) | |||
$(BUILD)/dep/%.c.d: src/%.c $(HDRS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(DEP)',$(CC) -o $@ -MM $< -MT $(patsubst src/%,$(BUILD)/obj/%.o,$<) $(CFLAGS)) | |||
$(BUILD)/dep/%.cc.d: src/%.cc $(HDRS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(DEP)',$(CXX) -o $@ -MM $< -MT $(patsubst src/%,$(BUILD)/obj/%.o,$<) $(CXXFLAGS)) | |||
.PHONY: install | |||
install: $(BUILD)/$(PROJNAME).so | |||
mkdir -p $(DESTDIR)$(PREFIX)/lib | |||
cp -f $^ $(DESTDIR)$(PREFIX)/lib | |||
chmod 755 $(DESTDIR)$(PREFIX)/lib/$(PROJNAME).so | |||
mkdir -p $(DESTDIR)$(PREFIX)/include | |||
cp -rf include/* $(DESTDIR)$(PREFIX)/include | |||
$(MAKE) -C ../libswan install | |||
.PHONY: uninstall | |||
uninstall: | |||
rm -f $(DESTDIR)$(PREFIX)/lib/$(PROJNAME).so | |||
rm -rf $(patsubst include/%,$(DESTDIR)$(PREFIX)/include/%,$(wildcard include/*)) | |||
$(MAKE) -C ../libswan uninstall | |||
.PHONY: clean | |||
clean: | |||
rm -rf $(PROJNAME) $(BUILD) | |||
$(MAKE) -C ../libswan clean | |||
.PHONY: cleanall | |||
cleanall: | |||
rm -rf $(BUILDDIR) | |||
$(MAKE) -C ../libswan cleanall | |||
.PHONY: dumpdeps | |||
dumpdeps: | |||
@echo $(addprefix $(PREPEND),$(SRCS) $(HDRS) $(EXTRADEPS)) | |||
.PHONY: dumppublicdeps | |||
dumppublicdeps: | |||
@echo $(addprefix $(PREPEND),$(PUBLICHDRS) $(EXTRAPUBLICDEPS)) | |||
.PHONY: dumpprojtype | |||
dumpprojtype: | |||
@echo $(PROJTYPE) | |||
ifeq ($(filter $(PHONIES),$(MAKECMDGOALS)),) | |||
-include $(DEPS) | |||
endif |
@@ -1,3 +0,0 @@ | |||
PROJNAME = core.mod | |||
PROJTYPE = solib | |||
DEPENDS = ../libswan |
@@ -0,0 +1,10 @@ | |||
include_directories("${CMAKE_CURRENT_LIST_DIR}/include/swan") | |||
add_library(libswan SHARED | |||
src/Body.cc | |||
src/Chunk.cc | |||
src/Game.cc | |||
src/Mod.cc | |||
src/Player.cc | |||
src/World.cc | |||
src/WorldPlane.cc) | |||
set_target_properties(libswan PROPERTIES OUTPUT_NAME swan) |
@@ -1,116 +0,0 @@ | |||
# Makefile generated by smake. | |||
PROJNAME = libswan | |||
PROJTYPE = solib | |||
SRCS = src/Body.cc src/Chunk.cc src/Game.cc src/Mod.cc src/Player.cc src/World.cc src/WorldPlane.cc | |||
HDRS = include/swan/Chunk.h include/swan/Game.h include/swan/Player.h include/swan/WorldPlane.h include/swan/World.h include/swan/common.h include/swan/Tile.h include/swan/Mod.h include/swan/Body.h | |||
OBJS = $(patsubst src/%,$(BUILD)/obj/%.o,$(SRCS)) | |||
DEPS = $(patsubst src/%,$(BUILD)/dep/%.d,$(SRCS)) | |||
PUBLICHDRS = include/swan/Chunk.h include/swan/Game.h include/swan/Player.h include/swan/WorldPlane.h include/swan/World.h include/swan/common.h include/swan/Tile.h include/swan/Mod.h include/swan/Body.h | |||
# Defaults | |||
PKGS = | |||
EXTRADEPS = | |||
EXTRAPUBLICDEPS = | |||
CONFIG ?= release | |||
BUILDDIR ?= build | |||
BUILD ?= $(BUILDDIR)/$(CONFIG) | |||
WARNINGS = -Wall -Wextra -Wno-unused-parameter | |||
SMAKEFILE ?= Smakefile | |||
DESTDIR ?= | |||
PREFIX ?= /usr/local | |||
PHONIES = dumpdeps dumppublicdeps dumpprojtype clean cleanall | |||
CONFIGS = release sanitize debug | |||
PKG_CONFIG ?= pkg-config | |||
AR ?= ar | |||
CCOPTS = -Iinclude -fPIC | |||
CCOPTS_release = -O2 -flto | |||
CCOPTS_debug = -g | |||
CCOPTS_sanitize = -fsanitize=address -fsanitize=undefined $(CCOPTS_debug) | |||
LDOPTS = | |||
LDOPTS_release = -flto | |||
LDOPTS_debug = | |||
LDOPTS_sanitize = -fsanitize=address -fsanitize=undefined $(LDOPTS_debug) | |||
runpfx = @echo $(1) $(2) && $(2) | |||
.PHONY: all | |||
all: $(BUILD)/$(PROJNAME).so | |||
-include $(SMAKEFILE) | |||
ifeq ($(filter $(CONFIGS),$(CONFIG)),) | |||
ifeq ($(filter cleanall,$(MAKECMDGOALS)),) | |||
$(error Unknown config '$(CONFIG)'. Supported configs: $(CONFIGS)) | |||
endif | |||
endif | |||
ifneq ($(PKGS),) | |||
CCOPTS += $(shell $(PKG_CONFIG) --cflags $(PKGS)) | |||
LDOPTS += $(shell $(PKG_CONFIG) --libs $(PKGS)) | |||
endif | |||
CFLAGS := $(CCOPTS_$(CONFIG)) $(CCOPTS) $(WARNINGS) $(CFLAGS) | |||
CXXFLAGS := $(CCOPTS_$(CONFIG)) $(CCOPTS) $(WARNINGS) $(CXXFLAGS) | |||
LDFLAGS := $(LDOPTS_$(CONFIG)) $(LDOPTS) $(LDFLAGS) | |||
$(BUILD)/$(PROJNAME).so: $(OBJS) $(EXTRADEPS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(LD)',$(CC) -o $@ $(OBJS) -shared $(LDLAGS)) | |||
touch $(BUILD)/.built | |||
@echo '(OK)' Created $@. | |||
$(BUILD)/obj/%.c.o: src/%.c $(EXTRAPUBLICDEPS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(CC)',$(CC) -o $@ -c $< $(CFLAGS)) | |||
$(BUILD)/obj/%.cc.o: src/%.cc $(EXTRAPUBLICDEPS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(CXX)',$(CXX) -o $@ -c $< $(CXXFLAGS)) | |||
$(BUILD)/dep/%.c.d: src/%.c $(HDRS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(DEP)',$(CC) -o $@ -MM $< -MT $(patsubst src/%,$(BUILD)/obj/%.o,$<) $(CFLAGS)) | |||
$(BUILD)/dep/%.cc.d: src/%.cc $(HDRS) | |||
@mkdir -p $(@D) | |||
$(call runpfx,'(DEP)',$(CXX) -o $@ -MM $< -MT $(patsubst src/%,$(BUILD)/obj/%.o,$<) $(CXXFLAGS)) | |||
.PHONY: install | |||
install: $(BUILD)/$(PROJNAME).so | |||
mkdir -p $(DESTDIR)$(PREFIX)/lib | |||
cp -f $^ $(DESTDIR)$(PREFIX)/lib | |||
chmod 755 $(DESTDIR)$(PREFIX)/lib/$(PROJNAME).so | |||
mkdir -p $(DESTDIR)$(PREFIX)/include | |||
cp -rf include/* $(DESTDIR)$(PREFIX)/include | |||
.PHONY: uninstall | |||
uninstall: | |||
rm -f $(DESTDIR)$(PREFIX)/lib/$(PROJNAME).so | |||
rm -rf $(patsubst include/%,$(DESTDIR)$(PREFIX)/include/%,$(wildcard include/*)) | |||
.PHONY: clean | |||
clean: | |||
rm -rf $(PROJNAME) $(BUILD) | |||
.PHONY: cleanall | |||
cleanall: | |||
rm -rf $(BUILDDIR) | |||
.PHONY: dumpdeps | |||
dumpdeps: | |||
@echo $(addprefix $(PREPEND),$(SRCS) $(HDRS) $(EXTRADEPS)) | |||
.PHONY: dumppublicdeps | |||
dumppublicdeps: | |||
@echo $(addprefix $(PREPEND),$(PUBLICHDRS) $(EXTRAPUBLICDEPS)) | |||
.PHONY: dumpprojtype | |||
dumpprojtype: | |||
@echo $(PROJTYPE) | |||
ifeq ($(filter $(PHONIES),$(MAKECMDGOALS)),) | |||
-include $(DEPS) | |||
endif |
@@ -1,4 +0,0 @@ | |||
PROJNAME = libswan | |||
PROJTYPE = solib | |||
PKGS = sfml-all | |||
CCOPTS += -Iinclude/swan |
@@ -5,11 +5,19 @@ | |||
namespace Swan { | |||
void Game::loadMod(const std::string &path) { | |||
registered_mods_.push_back(Mod()); | |||
Mod &mod = registered_mods_.back(); | |||
void *dl = dlopen(path.c_str(), RTLD_LAZY); | |||
if (dl == NULL) { | |||
fprintf(stderr, "%s\n", dlerror()); | |||
return; | |||
} | |||
void (*mod_init)(Mod &) = (void (*)(Mod &))dlsym(dl, "mod_init"); | |||
if (mod_init == NULL) { | |||
fprintf(stderr, "%s\n", dlerror()); | |||
} | |||
registered_mods_.push_back(Mod()); | |||
Mod &mod = registered_mods_.back(); | |||
mod_init(mod); | |||
} | |||
@@ -35,7 +35,7 @@ int main() { | |||
game.world_->current_plane_ = new WorldPlane(); | |||
game.world_->planes_.push_back(game.world_->current_plane_); | |||
game.loadMod("core.mod/build/release/core.mod.so"); | |||
game.loadMod("core.mod/core.mod.so"); | |||
double prevtime = getTime(); | |||
double fpsAcc = 0; |