Browse Source

cmake

opengl-renderer-broken
Martin Dørum 4 years ago
parent
commit
1ebc165245
11 changed files with 35 additions and 378 deletions
  1. 11
    0
      CMakeLists.txt
  2. 0
    123
      Makefile
  3. 0
    5
      Smakefile
  4. 2
    0
      core.mod/CMakeLists.txt
  5. 0
    123
      core.mod/Makefile
  6. 0
    3
      core.mod/Smakefile
  7. 10
    0
      libswan/CMakeLists.txt
  8. 0
    116
      libswan/Makefile
  9. 0
    4
      libswan/Smakefile
  10. 11
    3
      libswan/src/Game.cc
  11. 1
    1
      src/main.cc

+ 11
- 0
CMakeLists.txt View File

@@ -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)

+ 0
- 123
Makefile View File

@@ -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

+ 0
- 5
Smakefile View File

@@ -1,5 +0,0 @@
PROJNAME = swan
PROJTYPE = exe
PKGS = sfml-all
LDOPTS += -lstdc++ -ldl -lswan -Wl,--rpath=libswan/build/$(CONFIG)
DEPENDS = libswan

+ 2
- 0
core.mod/CMakeLists.txt View File

@@ -0,0 +1,2 @@
add_library(core.mod SHARED src/mod.cc)
set_target_properties(core.mod PROPERTIES OUTPUT_NAME core.mod PREFIX "")

+ 0
- 123
core.mod/Makefile View File

@@ -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

+ 0
- 3
core.mod/Smakefile View File

@@ -1,3 +0,0 @@
PROJNAME = core.mod
PROJTYPE = solib
DEPENDS = ../libswan

+ 10
- 0
libswan/CMakeLists.txt View File

@@ -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)

+ 0
- 116
libswan/Makefile View File

@@ -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

+ 0
- 4
libswan/Smakefile View File

@@ -1,4 +0,0 @@
PROJNAME = libswan
PROJTYPE = solib
PKGS = sfml-all
CCOPTS += -Iinclude/swan

+ 11
- 3
libswan/src/Game.cc View File

@@ -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);
}


+ 1
- 1
src/main.cc View File

@@ -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;

Loading…
Cancel
Save