- Moved todo and completed items into separate todo.txt file - Removed unncessary items from todo - Updated READMEdev
parent
ccb52b9cf8
commit
370b58e978
@ -1,251 +0,0 @@ |
|||||||
cmake_minimum_required(VERSION 3.2) |
|
||||||
|
|
||||||
project(Symmetry) |
|
||||||
|
|
||||||
|
|
||||||
if(CMAKE_CONFIGURATION_TYPES) |
|
||||||
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE) |
|
||||||
else() |
|
||||||
if(CMAKE_BUILD_TYPE MATCHES Debug) |
|
||||||
set(SYMMETRY_BUILD_TYPE debug) |
|
||||||
else() |
|
||||||
set(CMAKE_BUILD_TYPE Release) |
|
||||||
set(SYMMETRY_BUILD_TYPE release) |
|
||||||
endif() |
|
||||||
endif() |
|
||||||
|
|
||||||
################################################################ |
|
||||||
# Setup external libs |
|
||||||
################################################################ |
|
||||||
|
|
||||||
add_library(SDL2 SHARED IMPORTED) |
|
||||||
add_library(SOLOUD SHARED IMPORTED) |
|
||||||
add_library(ODE SHARED IMPORTED) |
|
||||||
|
|
||||||
if(WIN32) |
|
||||||
include_directories(${CMAKE_SOURCE_DIR}/include/common |
|
||||||
${CMAKE_SOURCE_DIR}/include/common/soloud |
|
||||||
${CMAKE_SOURCE_DIR}/include/windows/sdl2 |
|
||||||
${CMAKE_SOURCE_DIR}/include/windows) |
|
||||||
|
|
||||||
set(SDL2_LIB_FILE ${CMAKE_SOURCE_DIR}/lib/windows/sdl2/SDL2.dll) |
|
||||||
set(SOLOUD_LIB_FILE ${CMAKE_SOURCE_DIR}/lib/windows/soloud/soloud_x64.dll) |
|
||||||
set(ODE_LIB_FILE ${CMAKE_SOURCE_DIR}/lib/windows/ode/ode_double.dll) |
|
||||||
|
|
||||||
set_target_properties(SDL2 PROPERTIES IMPORTED_LOCATION ${SDL2_LIB_FILE}) |
|
||||||
set_target_properties(SDL2 PROPERTIES IMPORTED_IMPLIB ${CMAKE_SOURCE_DIR}/lib/windows/sdl2/SDL2.lib) |
|
||||||
|
|
||||||
set_target_properties(SOLOUD PROPERTIES IMPORTED_LOCATION ${SOLOUD_LIB_FILE}) |
|
||||||
set_target_properties(SOLOUD PROPERTIES IMPORTED_IMPLIB ${CMAKE_SOURCE_DIR}/lib/windows/soloud/soloud_x64.lib) |
|
||||||
|
|
||||||
set_target_properties(ODE PROPERTIES IMPORTED_LOCATION ${ODE_LIB_FILE}) |
|
||||||
set_target_properties(ODE PROPERTIES IMPORTED_IMPLIB ${CMAKE_SOURCE_DIR}/lib/windows/ode/ode_double.lib) |
|
||||||
|
|
||||||
set(SDL2_LIB_FILES ${SDL2_LIB_FILE}) |
|
||||||
set(ODE_LIB_FILES ${ODE_LIB_FILE}) |
|
||||||
set(SOLOUD_LIB_FILES ${SOLOUD_LIB_FILE}) |
|
||||||
|
|
||||||
elseif(UNIX AND NOT APPLE) |
|
||||||
include_directories(${CMAKE_SOURCE_DIR}/include/common |
|
||||||
${CMAKE_SOURCE_DIR}/include/common/soloud |
|
||||||
${CMAKE_SOURCE_DIR}/include/linux/sdl2 |
|
||||||
${CMAKE_SOURCE_DIR}/include/linux) |
|
||||||
|
|
||||||
set(SDL2_LIB_FILE ${CMAKE_SOURCE_DIR}/lib/linux/sdl2/libSDL2.so) |
|
||||||
set(SOLOUD_LIB_FILE ${CMAKE_SOURCE_DIR}/lib/linux/soloud/libsoloud_x64.so) |
|
||||||
set(ODE_LIB_FILE ${CMAKE_SOURCE_DIR}/lib/linux/ode/libode.so) |
|
||||||
|
|
||||||
set_target_properties(SDL2 PROPERTIES IMPORTED_LOCATION ${SDL2_LIB_FILE}) |
|
||||||
set_target_properties(SOLOUD PROPERTIES IMPORTED_LOCATION ${SOLOUD_LIB_FILE}) |
|
||||||
set_target_properties(ODE PROPERTIES IMPORTED_LOCATION ${ODE_LIB_FILE}) |
|
||||||
|
|
||||||
file(GLOB SDL2_LIB_FILES "${CMAKE_SOURCE_DIR}/lib/linux/sdl2/*") |
|
||||||
file(GLOB ODE_LIB_FILES "${CMAKE_SOURCE_DIR}/lib/linux/ode/*") |
|
||||||
file(GLOB SOLOUD_LIB_FILES "${CMAKE_SOURCE_DIR}/lib/linux/soloud/*") |
|
||||||
|
|
||||||
endif(WIN32) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
################################################################ |
|
||||||
# Setup source files |
|
||||||
################################################################ |
|
||||||
|
|
||||||
set(COMMON_HEADERS |
|
||||||
src/common/array.h |
|
||||||
src/common/hashmap.h |
|
||||||
src/common/linmath.h |
|
||||||
src/common/log.h |
|
||||||
src/common/parser.h |
|
||||||
src/common/string_utils.h |
|
||||||
src/common/utils.h |
|
||||||
src/common/variant.h |
|
||||||
src/common/array_str.h |
|
||||||
src/common/common.h |
|
||||||
src/common/num_types.h) |
|
||||||
|
|
||||||
set(COMMON_SOURCES |
|
||||||
src/common/array.c |
|
||||||
src/common/hashmap.c |
|
||||||
src/common/linmath.c |
|
||||||
src/common/log.c |
|
||||||
src/common/parser.c |
|
||||||
src/common/string_utils.c |
|
||||||
src/common/utils.c |
|
||||||
src/common/variant.c) |
|
||||||
|
|
||||||
set(EXECUTALE_HEADERS |
|
||||||
src/game/main.h |
|
||||||
src/game/config_vars.h |
|
||||||
src/game/file_io.h |
|
||||||
src/game/physics.h |
|
||||||
src/game/platform.h |
|
||||||
src/game/sound.h) |
|
||||||
|
|
||||||
set(EXECUTABLE_SOURCES |
|
||||||
src/game/main.c |
|
||||||
src/game/config_vars.c |
|
||||||
src/game/file_io.c |
|
||||||
src/game/physics.c |
|
||||||
src/game/platform.c |
|
||||||
src/game/sound.c) |
|
||||||
|
|
||||||
|
|
||||||
set(GAME_LIB_SOURCES |
|
||||||
src/libsymmetry/bounding_volumes.c |
|
||||||
src/libsymmetry/camera.c |
|
||||||
src/libsymmetry/editor.c |
|
||||||
src/libsymmetry/console.c |
|
||||||
src/libsymmetry/editor.c |
|
||||||
src/libsymmetry/entity.c |
|
||||||
src/libsymmetry/framebuffer.c |
|
||||||
src/libsymmetry/game.c |
|
||||||
src/libsymmetry/geometry.c |
|
||||||
src/libsymmetry/glad.c |
|
||||||
src/libsymmetry/gl_load.c |
|
||||||
src/libsymmetry/gui.c |
|
||||||
src/libsymmetry/im_render.c |
|
||||||
src/libsymmetry/input.c |
|
||||||
src/libsymmetry/light.c |
|
||||||
src/libsymmetry/material.c |
|
||||||
src/libsymmetry/model.c |
|
||||||
src/libsymmetry/player.c |
|
||||||
src/libsymmetry/renderer.c |
|
||||||
src/libsymmetry/scene.c |
|
||||||
src/libsymmetry/shader.c |
|
||||||
src/libsymmetry/sprite.c |
|
||||||
src/libsymmetry/texture.c |
|
||||||
src/libsymmetry/transform.c) |
|
||||||
|
|
||||||
|
|
||||||
set(GAME_LIB_HEADERS |
|
||||||
src/libsymmetry/bounding_volumes.h |
|
||||||
src/libsymmetry/camera.h |
|
||||||
src/libsymmetry/editor.h |
|
||||||
src/libsymmetry/console.h |
|
||||||
src/libsymmetry/editor.h |
|
||||||
src/libsymmetry/entity.h |
|
||||||
src/libsymmetry/event.h |
|
||||||
src/libsymmetry/framebuffer.h |
|
||||||
src/libsymmetry/game.h |
|
||||||
src/libsymmetry/geometry.h |
|
||||||
src/libsymmetry/gl_load.h |
|
||||||
src/libsymmetry/gui.h |
|
||||||
src/libsymmetry/im_render.h |
|
||||||
src/libsymmetry/input.h |
|
||||||
src/libsymmetry/light.h |
|
||||||
src/libsymmetry/material.h |
|
||||||
src/libsymmetry/model.h |
|
||||||
src/libsymmetry/player.h |
|
||||||
src/libsymmetry/renderer.h |
|
||||||
src/libsymmetry/scene.h |
|
||||||
src/libsymmetry/shader.h |
|
||||||
src/libsymmetry/sprite.h |
|
||||||
src/libsymmetry/texture.h |
|
||||||
src/libsymmetry/transform.h) |
|
||||||
|
|
||||||
|
|
||||||
################################################################ |
|
||||||
# Game Executable |
|
||||||
################################################################ |
|
||||||
|
|
||||||
set(EXECUTABLE_NAME ${PROJECT_NAME}) |
|
||||||
|
|
||||||
add_executable(${EXECUTABLE_NAME} ${EXECUTABLE_HEADERS} ${EXECUTABLE_SOURCES} ${COMMON_HEADERS} ${COMMON_SOURCES}) |
|
||||||
target_include_directories(${EXECUTABLE_NAME} PUBLIC ${CMAKE_SOURCE_DIR}/include) |
|
||||||
target_compile_definitions(${EXECUTABLE_NAME} PUBLIC -DGAME $<$<CONFIG:DEBUG>: -DGL_DEBUG_CONTEXT>) |
|
||||||
target_link_libraries(${EXECUTABLE_NAME} SDL2 ODE SOLOUD) |
|
||||||
|
|
||||||
if(WIN32) |
|
||||||
target_compile_definitions(${EXECUTABLE_NAME} PUBLIC -D_CRT_SECURE_NO_WARNINGS) |
|
||||||
elseif(UNIX AND NOT APPLE) |
|
||||||
|
|
||||||
set_target_properties(${EXECUTABLE_NAME} PROPERTIES LINK_FLAGS "'-Wl,-rpath,$ORIGIN/lib' -Wl,--no-undefined") |
|
||||||
target_compile_options(${EXECUTABLE_NAME} PUBLIC -Wall --std=c99) |
|
||||||
|
|
||||||
find_library(LIB_M m REQUIRED) |
|
||||||
find_library(LIB_RT rt REQUIRED) |
|
||||||
find_library(LIB_PTHREAD pthread REQUIRED) |
|
||||||
target_link_libraries(${EXECUTABLE_NAME} ${LIB_M} ${LIB_RT} ${LIB_PTHREAD}) |
|
||||||
endif(WIN32) |
|
||||||
|
|
||||||
################################################################ |
|
||||||
# Game Library |
|
||||||
################################################################ |
|
||||||
|
|
||||||
set(GAME_LIB_NAME "${PROJECT_NAME}_Game") |
|
||||||
add_library(${GAME_LIB_NAME} SHARED ${GAME_LIB_HEADERS} ${GAME_LIB_SOURCES} ${COMMON_HEADERS} ${COMMON_SOURCES}) |
|
||||||
target_include_directories(${GAME_LIB_NAME} PUBLIC ${CMAKE_SOURCE_DIR}/include) |
|
||||||
target_compile_definitions(${GAME_LIB_NAME} PUBLIC -DGAME_LIB -DUSE_GLAD $<$<CONFIG:DEBUG>: -DGL_DEBUG_CONTEXT>) |
|
||||||
|
|
||||||
if(WIN32) |
|
||||||
target_compile_definitions(${GAME_LIB_NAME} PUBLIC -D_CRT_SECURE_NO_WARNINGS) |
|
||||||
elseif(UNIX AND NOT APPLE) |
|
||||||
target_compile_options(${GAME_LIB_NAME} PUBLIC -Wall --std=c99) |
|
||||||
endif(WIN32) |
|
||||||
|
|
||||||
|
|
||||||
################################################################ |
|
||||||
# Post build |
|
||||||
################################################################ |
|
||||||
|
|
||||||
message(STATUS " MESSAGE ${RUNTIME_OUTPUT_DIRECTORY}") |
|
||||||
message(STATUS " CMAKE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}") |
|
||||||
message(STATUS " RESUME HERE!!!! ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") |
|
||||||
|
|
||||||
|
|
||||||
add_custom_command( |
|
||||||
TARGET ${EXECUTABLE_NAME} |
|
||||||
POST_BUILD |
|
||||||
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_SOURCE_DIR}/assets/ ${CMAKE_BINARY_DIR}/assets) |
|
||||||
|
|
||||||
if(WIN32) |
|
||||||
add_custom_command( |
|
||||||
TARGET ${EXECUTABLE_NAME} |
|
||||||
POST_BUILD |
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SDL2_LIB_FILES} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE} |
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ODE_LIB_FILES} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE} |
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SOLOUD_LIB_FILES} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE} |
|
||||||
COMMENT "Copying libraries...") |
|
||||||
elseif(UNIX AND NOT APPLE) |
|
||||||
add_custom_command( |
|
||||||
TARGET ${EXECUTABLE_NAME} |
|
||||||
POST_BUILD |
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/lib/ |
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SDL2_LIB_FILES} ${CMAKE_BINARY_DIR}/lib/ |
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ODE_LIB_FILES} ${CMAKE_BINARY_DIR}/lib/ |
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${SOLOUD_LIB_FILES} ${CMAKE_BINARY_DIR}/lib/ |
|
||||||
COMMENT "Copying libraries...") |
|
||||||
endif() |
|
||||||
|
|
||||||
|
|
||||||
################################################################ |
|
||||||
# Install |
|
||||||
################################################################ |
|
||||||
|
|
||||||
Install(TARGETS ${EXECUTABLE_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}) |
|
||||||
Install(TARGETS ${GAME_LIB_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}) |
|
||||||
install(DIRECTORY ${CMAKE_SOURCE_DIR}/assets DESTINATION ${CMAKE_INSTALL_PREFIX}) |
|
||||||
install( |
|
||||||
FILES ${SDL2_LIB_FILES} ${ODE_LIB_FILES} ${SOLOUD_LIB_FILES} |
|
||||||
DESTINATION lib) |
|
@ -1,97 +0,0 @@ |
|||||||
PROJECT_NAME = Symmetry
|
|
||||||
CC = gcc
|
|
||||||
SRC_DIR = ../../src
|
|
||||||
INCLUDE_DIR = ../../include
|
|
||||||
DIST_DIR = ../../bin/linux
|
|
||||||
BUILD_TYPE = release
|
|
||||||
CFLAGS = -Wall -I$(INCLUDE_DIR) -DUSE_GLAD -std=c99
|
|
||||||
CFLAGS_GAME = $(CFLAGS) -DGAME $(shell pkg-config --cflags-only-other sdl2 openal)
|
|
||||||
CFLAGS_GAME_LIB = $(CFLAGS) -DGAME_LIB
|
|
||||||
CFLAGS_DEBUG = -g -DGL_DEBUG_CONTEXT -DAL_DEBUG
|
|
||||||
CFLAGS_RELEASE = -O3 -ffast-math
|
|
||||||
LFLAGS = $(shell pkg-config --libs sdl2 openal) -lm
|
|
||||||
ITCH_BUTLER = ~/.config/itch/bin/butler
|
|
||||||
|
|
||||||
SRCS_GAME = main.c platform.c log.c array.c utils.c config_vars.c file_io.c glad.c hashmap.c sound.c string_utils.c variant.c linmath.c
|
|
||||||
OBJS_RELEASE_GAME = $(patsubst %.c,.release/%.o,$(SRCS_GAME))
|
|
||||||
OBJS_DEBUG_GAME = $(patsubst %.c,.debug/%.o,$(SRCS_GAME))
|
|
||||||
|
|
||||||
SRCS_GAME_LIB = gl_load.c glad.c log.c array.c utils.c hashmap.c string_utils.c variant.c linmath.c entity.c game.c transform.c camera.c renderer.c geometry.c light.c bounding_volumes.c editor.c framebuffer.c gui.c input.c material.c model.c scene.c shader.c texture.c
|
|
||||||
OBJS_RELEASE_GAME_LIB = $(patsubst %.c,.release/%.lib.o,$(SRCS_GAME_LIB))
|
|
||||||
OBJS_DEBUG_GAME_LIB = $(patsubst %.c,.debug/%.lib.o,$(SRCS_GAME_LIB))
|
|
||||||
|
|
||||||
all: release |
|
||||||
|
|
||||||
library: CFLAGS_GAME_LIB += $(CFLAGS_DEBUG) |
|
||||||
library: $(OBJS_RELEASE_GAME_LIB) |
|
||||||
-@echo -e "\e[34mBuilding Game Lib\e[0m"
|
|
||||||
-@$(CC) -shared $(OBJS_RELEASE_GAME_LIB) -lm -o lib$(PROJECT_NAME).so
|
|
||||||
|
|
||||||
.release/%.lib.o: $(SRC_DIR)/%.c |
|
||||||
-@echo -e "\e[96mCompiling $<\e[0m"
|
|
||||||
-@$(CC) -fpic $(CFLAGS_GAME_LIB) -c $< -o $@
|
|
||||||
|
|
||||||
|
|
||||||
release: BUILD_TYPE = release |
|
||||||
release: CFLAGS_GAME += $(CFLAGS_RELEASE) |
|
||||||
release: pre_build $(OBJS_RELEASE_GAME) post_build |
|
||||||
-@echo -e "\e[34mLINKING\e[0m Release build"
|
|
||||||
-@$(CC) $(OBJS_RELEASE_GAME) $(LFLAGS) -o $(PROJECT_NAME)
|
|
||||||
-@echo -e "\e[32mDONE\e[0m building $(PROJECT_NAME)"
|
|
||||||
|
|
||||||
debug: BUILD_TYPE = debug |
|
||||||
debug: CFLAGS_GAME += $(CFLAGS_DEBUG) |
|
||||||
debug: pre_build $(OBJS_DEBUG_GAME) post_build |
|
||||||
-@echo -e "\e[34mLINKING\e[0m Debug build"
|
|
||||||
-@$(CC) $(OBJS_DEBUG_GAME) $(LFLAGS) -o $(PROJECT_NAME)
|
|
||||||
-@echo -e "\e[32mDONE\e[0m building $(PROJECT_NAME)"
|
|
||||||
|
|
||||||
.release/%.o: $(SRC_DIR)/%.c |
|
||||||
-@echo -e "\e[96mCompiling $<\e[0m"
|
|
||||||
-@$(CC) $(CFLAGS_GAME) -c $< -o $@
|
|
||||||
|
|
||||||
.debug/%.o: $(SRC_DIR)/%.c |
|
||||||
-@echo -e "\e[96mCompiling $<\e[0m"
|
|
||||||
-@$(CC) $(CFLAGS_GAME) -c $< -o $@
|
|
||||||
|
|
||||||
pre_build: |
|
||||||
-@mkdir -p .debug .release
|
|
||||||
|
|
||||||
post_build: |
|
||||||
-@ln -fs /mnt/Dev/Projects/symmetry/assets assets
|
|
||||||
|
|
||||||
dist: release |
|
||||||
-@echo -e "\e[34mCreating Distribution at $(DIST_DIR)/$(PROJECT_NAME)\e[0m"
|
|
||||||
-@strip $(PROJECT_NAME)
|
|
||||||
-@rm -rf $(DIST_DIR)/$(PROJECT_NAME)
|
|
||||||
-@mkdir -p $(DIST_DIR)/$(PROJECT_NAME)
|
|
||||||
-@mkdir -p $(DIST_DIR)/$(PROJECT_NAME)/lib
|
|
||||||
-@cp -R ../../assets $(DIST_DIR)/$(PROJECT_NAME)
|
|
||||||
-@cp /usr/lib64/libSDL2* $(DIST_DIR)/$(PROJECT_NAME)/lib
|
|
||||||
-@cp /usr/lib64/libopenal* $(DIST_DIR)/$(PROJECT_NAME)/lib
|
|
||||||
-@echo '#!/bin/sh' >> $(DIST_DIR)/$(PROJECT_NAME)/Launch.sh
|
|
||||||
-@echo 'export LD_LIBRARY_PATH=lib' >> $(DIST_DIR)/$(PROJECT_NAME)/Launch.sh
|
|
||||||
-@echo './Symmetry' >> $(DIST_DIR)/$(PROJECT_NAME)/Launch.sh
|
|
||||||
-@chmod +x $(DIST_DIR)/$(PROJECT_NAME)/Launch.sh
|
|
||||||
-@cp $(PROJECT_NAME) $(DIST_DIR)/$(PROJECT_NAME)
|
|
||||||
-@chmod +x $(DIST_DIR)/$(PROJECT_NAME)/$(PROJECT_NAME)
|
|
||||||
-@echo -e "\e[32mDONE creating distribution\e[0m"
|
|
||||||
|
|
||||||
upload_itch: dist |
|
||||||
-@echo -e "\e[34mUploading Linux build to Itch\e[0m"
|
|
||||||
-@${ITCH_BUTLER} push ${DIST_DIR}/${PROJECT_NAME}/ bluerriq/symmetry:linux-prealpha
|
|
||||||
-@echo -e "\e[32mDONE uploading to Itch\e[0m"
|
|
||||||
|
|
||||||
clean: |
|
||||||
-@echo -e "\e[31m"
|
|
||||||
-rm -f $(PROJECT_NAME)
|
|
||||||
-rm -rf .release/*.o
|
|
||||||
-rm -rf .debug/*.o
|
|
||||||
-@echo -e "\e[0m"
|
|
||||||
|
|
||||||
clean_library: |
|
||||||
-@echo -e "\e[31m"
|
|
||||||
-rm -f lib$(PROJECT_NAME).so
|
|
||||||
-rm -rf .release/*.lib.o
|
|
||||||
-rm -rf .debug/*.lib.o
|
|
||||||
-@echo -e "\e[0m"
|
|
@ -1,57 +0,0 @@ |
|||||||
PROJECT_NAME = Symmetry.exe
|
|
||||||
SRC_DIR = ../../src
|
|
||||||
INCLUDE_DIR = $(shell mingw64-pkg-config --cflags sdl2 openal) -I../../include
|
|
||||||
DIST_DIR = ../../bin/win_mingw
|
|
||||||
PROJECT_DIST_NAME = $(patsubst %.exe,%, $(PROJECT_NAME))
|
|
||||||
BUILD_TYPE = release
|
|
||||||
SRCS = $(patsubst $(SRC_DIR)/%.c, %.c, $(wildcard ../../src/*.c))
|
|
||||||
OBJS_RELEASE = $(patsubst %.c,.release/%.o,$(SRCS))
|
|
||||||
CFLAGS = -Wall -I$(INCLUDE_DIR) -DUSE_GLAD -std=c99 -DCOLOURED_STDOUT
|
|
||||||
CFLAGS_RELEASE = -O3 -ffast-math
|
|
||||||
LFLAGS = $(shell mingw64-pkg-config --libs --static sdl2 openal)
|
|
||||||
LIB_BINARY_DIR = $(patsubst -L%/lib,%/bin, $(shell mingw64-pkg-config --libs-only-L sdl2))
|
|
||||||
ITCH_BUTLER = ~/.config/itch/bin/butler
|
|
||||||
|
|
||||||
all: release |
|
||||||
|
|
||||||
release: BUILD_TYPE = release |
|
||||||
release: CFLAGS += $(CFLAGS_RELEASE) |
|
||||||
release: pre_build $(OBJS_RELEASE) post_build |
|
||||||
-@echo -e "\e[34mLINKING\e[0m Release build"
|
|
||||||
-@$(CC) $(OBJS_RELEASE) $(LFLAGS) -o $(PROJECT_NAME)
|
|
||||||
-@echo -e "\e[32mDONE\e[0m building $(PROJECT_NAME)"
|
|
||||||
|
|
||||||
.release/%.o: $(SRC_DIR)/%.c |
|
||||||
-@echo -e "\e[96mCompiling $<\e[0m"
|
|
||||||
-@$(CC) $(CFLAGS) -c $< -o $@
|
|
||||||
|
|
||||||
pre_build: |
|
||||||
-@mkdir -p .debug .release
|
|
||||||
|
|
||||||
post_build: |
|
||||||
-@ln -fs /mnt/Dev/Projects/symmetry/assets assets
|
|
||||||
-@cp $(LIB_BINARY_DIR)/SDL2.dll /mnt/Dev/Projects/symmetry/build/win_mingw64
|
|
||||||
-@cp $(LIB_BINARY_DIR)/OpenAL32.dll /mnt/Dev/Projects/symmetry/build/win_mingw64
|
|
||||||
|
|
||||||
dist: release |
|
||||||
-@echo -e "\e[34mCreating Distribution at $(DIST_DIR)/$(PROJECT_NAME)\e[0m"
|
|
||||||
-@mingw-strip $(PROJECT_NAME)
|
|
||||||
-@rm -rf $(DIST_DIR)/$(PROJECT_DIST_NAME)
|
|
||||||
-@mkdir -p $(DIST_DIR)/$(PROJECT_DIST_NAME)
|
|
||||||
-@cp -R ../../assets $(DIST_DIR)/$(PROJECT_DIST_NAME)
|
|
||||||
-@cp $(PROJECT_NAME) $(DIST_DIR)/$(PROJECT_DIST_NAME)
|
|
||||||
-@cp SDL2.dll $(DIST_DIR)/$(PROJECT_DIST_NAME)
|
|
||||||
-@cp OpenAL32.dll $(DIST_DIR)/$(PROJECT_DIST_NAME)
|
|
||||||
-@echo -e "\e[32mDONE creating distribution\e[0m"
|
|
||||||
|
|
||||||
upload_itch: dist |
|
||||||
-@echo -e "\e[34mUploading Windows build to Itch\e[0m"
|
|
||||||
-@${ITCH_BUTLER} push ${DIST_DIR}/${PROJECT_DIST_NAME}/ bluerriq/symmetry:windows-prealpha
|
|
||||||
-@echo -e "\e[32mDONE uploading to Itch\e[0m"
|
|
||||||
|
|
||||||
clean: |
|
||||||
-@echo -e "\e[31m"
|
|
||||||
-rm -f $(PROJECT_NAME)
|
|
||||||
-rm -rf .release
|
|
||||||
-rm -rf .debug
|
|
||||||
-@echo -e "\e[0m"
|
|
@ -0,0 +1,192 @@ |
|||||||
|
Todo: |
||||||
|
- Add warning to genie build script when running on windows and WindowsSdkVersion cannot be found. This happens when the script is not run from vcvarsall command prompt |
||||||
|
? Rethink/remove the game executable and game library split. |
||||||
|
- Refactor all global application state into 'Application_Context' struct. A single global instance of which is available everywhere |
||||||
|
? Improve bounding sphere calculation |
||||||
|
- Change the way lights are set as uniforms to remove snprintf calls per frame for every light attribute |
||||||
|
- Screen mouse coordinates to world-coordinates for aiming |
||||||
|
- Player projectiles and sounds |
||||||
|
- Console commands |
||||||
|
- Console command history |
||||||
|
- Console command help |
||||||
|
- Space partitioning and scene handling |
||||||
|
- Move Gui_State and Editor_State into game_state and modify usage as needed |
||||||
|
- Get editor camera speed and other settings from config file |
||||||
|
- Recompile Soloud on windows to use static sdl2 backend |
||||||
|
- Figure out a way to reduce of remove snprintf calls from render code |
||||||
|
- Re-Implement saving/loading scene to/from files |
||||||
|
- Implement storing console's scroll location and restore it when console is toggled |
||||||
|
- Implement collision/physics data serialization, read and write. |
||||||
|
- Physics forces/torque etc |
||||||
|
- Implement physics debug visualizations for other primitives and tri mesh shapes |
||||||
|
- Serializing/Deserializing physics data |
||||||
|
- Proper implementation of Scene struct with per-scene settings and configurations that can be loaded/saved to file instead of just dumping entities into a file |
||||||
|
- Necessary basic editor additions like placing objects, scaling, rotating etc |
||||||
|
- Add fallback shader |
||||||
|
- Implement Game States |
||||||
|
- Store Materials in new format supported by parser |
||||||
|
- Add model description file which has the same syntax supported by parser and modify old blender exporter to conform to new standards |
||||||
|
- Fix bugs with sound sources not updating |
||||||
|
- Add creating distributable build and uploading to itch.io account support to GENie under windows and linux. |
||||||
|
- Remove hardcoded numerical values from sscanf and other format strings. |
||||||
|
? Recalculated bounding boxes for rotated meshes |
||||||
|
? Wrap malloc and free calls in custom functions to track usage |
||||||
|
? File extension checking for asset loading |
||||||
|
? Only allocate hashmap bucket when required |
||||||
|
- Mapping actions to keybindings, for example map action "Jump" to Space key etc |
||||||
|
? Add marking or queuing up custom meshes for debug render with particular transform and color for rendering bounding spheres for example |
||||||
|
? Interleaved vbos for meshes and changes to blender exporter accordingly |
||||||
|
- Enumerate and save all the uniform and attribute positions in shader when it is added and cache them in shader object? |
||||||
|
? Better handling incase assets folder is not found |
||||||
|
- Write entity to/from file |
||||||
|
- Ogg format loading and playback |
||||||
|
- Sound streaming |
||||||
|
- Implment missing sound source properties (inner/outer cone, getting sound source data) |
||||||
|
- Ray picking for editor |
||||||
|
- Shadow maps |
||||||
|
- Print processor stats and machine capabilites RAM etc on every run to log. |
||||||
|
- Do input maps really need to be queried by their string names? |
||||||
|
- Write default config/keybindings etc to file if none are found in preferences dir |
||||||
|
- Multisampled textures and framebuffers |
||||||
|
- Validate necessary assets at game launch |
||||||
|
- Gamma correctness |
||||||
|
- Log and debug/stats output in gui |
||||||
|
- Event Subsystem |
||||||
|
- Textual/Binary format for data serialization and persistance |
||||||
|
- Array based string type comptible with cstring(char*) |
||||||
|
- ??? |
||||||
|
- Profit! |
||||||
|
|
||||||
|
|
||||||
|
Bugs: |
||||||
|
- Better handling of wav format checking at load time |
||||||
|
- Fix light rotation/direction bugs |
||||||
|
- Fix lights type not being correctly saved/loaded from file |
||||||
|
- Console fix bug when enabled in editor mode |
||||||
|
- Fix mouse button press/release behaviour by investigating how sdl handles mouse release or by explicitly caching mouse state by using event callbacks recieved when a mousebutton release event is reported by sdl |
||||||
|
|
||||||
|
|
||||||
|
Done: |
||||||
|
* Input |
||||||
|
* Shaders |
||||||
|
* Geometry |
||||||
|
* change struct usage |
||||||
|
* change Array implementation |
||||||
|
* resolve vec-types sizes |
||||||
|
* Transform |
||||||
|
* Deltatime |
||||||
|
* Investigate about Exit() and at_exit() functions and whether to use them or not. |
||||||
|
* Fix readme markdown |
||||||
|
* Framebuffer and resolution independent rendering |
||||||
|
* A simpler build system without dependencies |
||||||
|
* Remove dependencies |
||||||
|
* Remove Kazmath dependency |
||||||
|
* Entity |
||||||
|
* Find a permanent solution for build system |
||||||
|
* Textures |
||||||
|
* Camera |
||||||
|
* Test render |
||||||
|
* Fix input lag and other framerate related issues |
||||||
|
* Materials |
||||||
|
* Mesh/Model |
||||||
|
* Add modifiers to input maps to enable combinations for example, c-x, m-k etc |
||||||
|
* Heirarchical Transforms |
||||||
|
* Materials with textures |
||||||
|
* Lights! |
||||||
|
* Fix problems with texture units |
||||||
|
* Fix problems with frustrum culling |
||||||
|
* Gui |
||||||
|
* Fix mouse bugs on windows |
||||||
|
* Configuration/Settings load/save handling |
||||||
|
* Fix mousewheel bugs and gui not responding to mousewheel input |
||||||
|
* Setup cross compilation with mingw or stick to msvc? |
||||||
|
* Toggleable debug drawing for meshes |
||||||
|
* Font selection |
||||||
|
* Font atlas proper cleanup |
||||||
|
* In second refactor pass, use entities everywhere, no need to pass in transform and model separately for example since they're both part of the same entity anyway |
||||||
|
* Show SDL dialogbox if we cannot launch at all? |
||||||
|
* Writing back to config file |
||||||
|
* Reading from config file |
||||||
|
* Variant -> String conversion procedure. Use in editor for debug var slots |
||||||
|
* Add strings and booleans to variant types |
||||||
|
* Fix Key release not being reported |
||||||
|
* OpenAL not working in releasebuilds |
||||||
|
* 3d sound using OpenAL |
||||||
|
* Fix frustum culling bugs |
||||||
|
* Array-based Hashmaps |
||||||
|
* Fix bugs with heirarchical transformations |
||||||
|
* Remove reduntant "settings" structures and move all configuration stuff to config variables |
||||||
|
* Log output to file on every run |
||||||
|
* Add option to specify where to read/write files from instead of being hard-coded assets dir |
||||||
|
* Fix input map bugs |
||||||
|
* Live data views in editor |
||||||
|
* Camera resize on window reisze |
||||||
|
* Resizable framebuffers and textures |
||||||
|
* Support for multiple color attachments in framebuffers? |
||||||
|
* Better way to store and manage textures attached to framebuffers |
||||||
|
* Variant type |
||||||
|
* Editor |
||||||
|
* Fix frustum culling sometimes not working |
||||||
|
* Compile and test on windows |
||||||
|
* Fix mouse bugs |
||||||
|
* Fix issues with opengl context showing 2.1 only |
||||||
|
* Improve this readme |
||||||
|
* Replace orgfile with simple text readme and reduce duplication |
||||||
|
* Fix camera acting all weird when right click is held |
||||||
|
* Fix README to conform with markdown syntax |
||||||
|
* Added video driver selection to make game launch under wayland or x11 on linux. |
||||||
|
* Separate game code into a dynamical library that can be reloaded at runtime. |
||||||
|
* Move game, common and game library related code into separate folders. |
||||||
|
* Fixed game crashing on exit after game library has been reloaded more than once. |
||||||
|
* Made game compile and run under windows with visual studio 2017 using GENie |
||||||
|
* Implemented file copy and file delete on windows and linux. |
||||||
|
* Implemented a work-around for dll locking on windows by creating a copy of the game lib at launch and when reloading, |
||||||
|
unloading the current dll, deleting it and creating new copy of the updated dll and loading that |
||||||
|
* Added file copy and delete to platform api |
||||||
|
* Made dll reloading workaround compatilble on linux |
||||||
|
* Default keybindings as fallback |
||||||
|
* Implemented writing scene to file |
||||||
|
* Fixed space not being added after light entities are written to file by adding missing new-line |
||||||
|
* Fixed error caused by the way eof was checked in scene file |
||||||
|
* Camera fbo params are now written to file when entity is saved |
||||||
|
* Fixed several bugs with entity loading |
||||||
|
* Removed duplicate parsing logic |
||||||
|
* Fixed bugs in stripping key name for input map |
||||||
|
* Modify entity loading logic to use the new parsing code by parsing all entity properties into a hashmap first then recreating entity from that |
||||||
|
* Implmented writing to file through the new Parser and Parser_Objects |
||||||
|
* Changed Config to read/write using new Parser and Parser_Objects |
||||||
|
* Implemented Reading/Writing keybindings using new parser object |
||||||
|
* Replaced OpenAL with Soloud with SDL2 backend |
||||||
|
* Implemented sound/listener loading from scene file |
||||||
|
* Finished loading scene from file |
||||||
|
* Initial implementation of immediate-mode batched sprite render |
||||||
|
* Fixed bugs with shader include file pre-processor |
||||||
|
* Fixed bugs with editor's camera property viewer |
||||||
|
* Fixed bugs related to changing camera projection |
||||||
|
* Fixed bugs with sprite batch renderer not working with projection matrix |
||||||
|
* Fixed broken orthographic camera |
||||||
|
* Implement necessary changes to run Soloud on linux |
||||||
|
* Moved third party libs/include directories into root/lib and root/include. Put common includes like header-only libs into root/include/common and others which require platform specific stuff into root/include/linux etc. |
||||||
|
* Got rid of pkg-confg and system-installed SDL2 dependancy on linux and instead put custom compiled SDL libs in libs folder similar to how we're handling it in windows |
||||||
|
* Proper physics time-step and speed |
||||||
|
* Proper handling of rigidbody associated with an entity and notifying it of movement or collision |
||||||
|
* Added physics spheres and other primitive shapes |
||||||
|
* Separated collision shape and rigidbody |
||||||
|
* Implemented Getting/Modifying primitive physics shapes' values like length, radius etc |
||||||
|
* Update physics if entity position/rotation/scale etc are changed |
||||||
|
* Implemented Physics raycasting |
||||||
|
* Implemented immediate mode renderer that can draw arbitrary points, lines and triangles |
||||||
|
* Converted IM_Vertex array to only be used as temporary storage for vertices between begin and end calls |
||||||
|
* Implemented Debug physics mesh drawing for box and sphere primitives |
||||||
|
* Completed Phase 1 of codebase refactoring |
||||||
|
* Improved editor camera handling |
||||||
|
* Re-implemented showing all the entities in the editor |
||||||
|
* Player init, update, visual representation and movement |
||||||
|
* Switching between editor and game mode/cameras |
||||||
|
* In-game basis for scrollable console/log-viewer |
||||||
|
* Console log output |
||||||
|
* Console error/warning output |
||||||
|
* Implemented Auto scrolling to the bottom in console |
||||||
|
* Implemented screen coordinate to ray conversion and ray-sphere collision |
||||||
|
* Split todo and readme into two files |
||||||
|
* Replace all renderer_check_gl calls with GL_CHECK macro |
@ -1,3 +1,3 @@ |
|||||||
@echo off |
@echo off |
||||||
|
|
||||||
"C:\Program Files\emacs-26.1-x86_64\bin\runemacs.exe" |
"C:\Applications\Emacs\bin\runemacs.exe" -mm |
||||||
|
@ -1,8 +1,8 @@ |
|||||||
@echo off |
@echo off |
||||||
|
|
||||||
call D:\VS_2017\VC\Auxiliary\Build\vcvarsall.bat x64 |
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 |
||||||
cls |
cls |
||||||
set edito="C:\Program Files\emacs-26.1-x86_64\bin\runemacs.exe" |
set editor=""C:\Applications\Emacs\bin\runemacs.exe"" |
||||||
set path=W:\tools;%path% rem |
set path=W:\tools;%path% rem |
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in new issue