jdah / minecraft-weekend

Minecraft, but I made it in 48 hours.
MIT License
3.99k stars 436 forks source link

Build fails on Linux #6

Closed Paulemeister closed 3 years ago

Paulemeister commented 3 years ago

I was just trying to compile the game but it throws errors :( I just know the very basics of compiling C Stuff, so sorry if it's trivial. I'm on a 64bit Pop!OS System with cmake version 3.16.3

First I built the libs. (I had to install libxrandr-dev, libxinerama-dev, libxcursor-dev and libxi-dev). Then the make, but that threw an error:

src/world/blockmesh.c:3:10: fatal error: 'block.h' file not found
#include "block.h"
         ^~~~~~~~~
1 error generated.
make: *** [Makefile:39: src/world/blockmesh.o] Fehler 1

I tried to resolve that by adding -Isrc/block to CFLAGS (But I kinda think that's wrong). After that it threw the error:

/usr/bin/ld: x11_init.c:(.text+0x1fbf): undefined reference to `dlopen'
/usr/bin/ld: x11_init.c:(.text+0x2001): undefined reference to `dlsym'
/usr/bin/ld: x11_init.c:(.text+0x46fd): undefined reference to `dlclose'

In several files. So after googling, i added -ldl to LDFLAGS, but I don't know what that does. After that:

/usr/bin/ld: lib/glfw/src/libglfw3.a(posix_thread.c.o): in function `_glfwPlatformCreateTls':
posix_thread.c:(.text+0x4a): undefined reference to `pthread_key_create'
/usr/bin/ld: lib/glfw/src/libglfw3.a(posix_thread.c.o): in function `_glfwPlatformDestroyTls':
posix_thread.c:(.text+0xa4): undefined reference to `pthread_key_delete'
/usr/bin/ld: lib/glfw/src/libglfw3.a(posix_thread.c.o): in function `_glfwPlatformGetTls':
posix_thread.c:(.text+0x105): undefined reference to `pthread_getspecific'
/usr/bin/ld: lib/glfw/src/libglfw3.a(posix_thread.c.o): in function `_glfwPlatformSetTls':
posix_thread.c:(.text+0x15a): undefined reference to `pthread_setspecific'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:36: game] Fehler 1

So I added -lpthread to LDFLAGS (no idea what that does again) But now it there's something defined twice:

/usr/bin/ld: src/block/block.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/block.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.c:31: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/buttercup.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/buttercup.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/clay.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/clay.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/coal.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/coal.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/cobblestone.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/cobblestone.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/copper.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/copper.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/dirt.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/dirt.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/glass.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/glass.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/grass.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/grass.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/gravel.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/gravel.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/lava.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/lava.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/leaves.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/leaves.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/log.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/log.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/pineleaves.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/pineleaves.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/pinelog.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/pinelog.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/planks.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/planks.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/podzol.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/podzol.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/rose.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/rose.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/sand.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/sand.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/shrub.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/shrub.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/snow.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/snow.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/stone.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/stone.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/tallgrass.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/tallgrass.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/torch.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/torch.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/block/water.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/block/water.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/entity/c_blocklook.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../ui/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/entity/c_blocklook.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../ui/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/entity/c_control.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../ui/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/entity/c_control.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../ui/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/entity/c_light.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../world/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/entity/c_light.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../world/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/entity/c_movement.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../world/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/entity/c_movement.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../world/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/entity/c_physics.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../world/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/entity/c_physics.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../world/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/entity/c_position.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../world/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/entity/c_position.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/entity/../world/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/gfx/blockatlas.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/gfx/../ui/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/gfx/blockatlas.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/gfx/../ui/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/gfx/renderer.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/gfx/../ui/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/gfx/renderer.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/gfx/../ui/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/ui/crosshair.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/ui/../block/../world/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/ui/crosshair.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/ui/../block/../world/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/ui/hotbar.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/ui/../block/../world/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/ui/hotbar.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/ui/../block/../world/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/ui/ui.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/ui/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/ui/ui.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/ui/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/blockmesh.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/blockmesh.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/chunk.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../ui/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/chunk.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../ui/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/chunkmesh.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../ui/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/chunkmesh.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../ui/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/light.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../entity/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/light.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../entity/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/sky.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../ui/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/sky.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../ui/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/world.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../ui/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/world.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/../ui/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/main.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/main.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/gen/flowergen.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/gen/../../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/gen/flowergen.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/gen/../../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/gen/grassgen.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/gen/../../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/gen/grassgen.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/gen/../../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/gen/shrubgen.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/gen/../../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/gen/shrubgen.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/gen/../../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/gen/treegen.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/gen/../../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/gen/treegen.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/gen/../../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
/usr/bin/ld: src/world/gen/worldgen.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/gen/../../entity/../block/block.h:84: multiple definition of `BLOCKS'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:84: first defined here
/usr/bin/ld: src/world/gen/worldgen.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/world/gen/../../entity/../block/block.h:83: multiple definition of `BLOCK_DEFAULT'; src/block/air.o:/home/paulemeister/Code/stolen/minecraft-weekend/src/block/block.h:83: first defined here
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:36: game] Fehler 1

Would be awesome if you could explain what's going on. I probably messed some stuff up.

kyx0r commented 3 years ago

You didn't really mess anything up. It's just that the author poorly designed this project and did not test it anywhere else. To be expected from something that was crammed together in 2 days. And no, adding cmake does not solve anything of course as people seem to expect a magical scapegoat from it. Clearly to build this you need to read the source code, but that's good - what else are you here for ? (I have yet to fix this issue)

jdah commented 3 years ago

You didn't really mess anything up. It's just that the author poorly designed this project and did not test it anywhere else. To be expected from something that was crammed together in 2 days.

True. I'd like to get linux builds fixed at least - I'll fix up some of the broken #include directives so this can actually be compiled.

and I have no intention of adding cmake, make is just fine on unix-like systems.

jdah commented 3 years ago

Strange issue for sure, apparently the erroneous #include "block.h" was being resolved to some OSX header. Should be fixed now, can you build from this? Make sure to run make clean first.

Paulemeister commented 3 years ago

Downloaded latest, build libs, but the outcome is the same:

src/world/light.c:2:10: fatal error: 'block.h' file not found
#include "block.h"
         ^~~~~~~~~
1 error generated.
make: *** [Makefile:39: src/world/light.o] Fehler 1

I tried changing "block.h" to "../block/block.h" in light.c, that stops the error, but gives me the same as in my original comment

jdah commented 3 years ago

@Paulemeister build is fixed now - verified on Ubuntu 20.10 VM. Segfaults immediately after launch though, so looks like issues on Linux will need more investigating.

kyx0r commented 3 years ago

@jdah Even if it compiles on ubuntu, the game is still not portable enough. I replaced the qsort_r function which is used in world.c because I don't use glibc. On musl your game does not crash but it does not work either, just a black screen window.

bayi commented 3 years ago

Hi, i tried to fix the issues with running on linux, but failed, atleast i solved - i think - the qsort_r incompatibility by using a portable version i found over here: https://github.com/noporpoise/sort_r

I will send in a PR for that.

For the rest i try to debug the segfaults which are a bit random too ( depends on using any -O flag but mostly happens in the camera init code running some glms_ functions ) i tried to look into cglm also ( maybe unaligned data ? ) but no look and im a bit too tried to continue it for today, maybe atleast the sort_r thing will help somebody to fix this ...

I will come back this to the weekend ;)

Anyway, thanks for the code its a great contribution!

jdah commented 3 years ago

Build is fixed now and segfaults on Ubuntu, moving segfault discussion to #12.