]> git.lizzy.rs Git - dragonblocks_alpha.git/commitdiff
Out of source builds: keep source directory clean
authorElias Fleckenstein <eliasfleckenstein@web.de>
Sun, 17 Apr 2022 17:55:04 +0000 (19:55 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Sun, 17 Apr 2022 17:55:04 +0000 (19:55 +0200)
.gitignore
deps/protogen
src/CMakeLists.txt
src/mktypes.sh
src/version.cmake

index 4eb449c76539bf19e57e305b3b9746156da1f77a..576b8e6194c96633713ff13ffe67586db4a78ecd 100644 (file)
@@ -25,6 +25,6 @@ server.conf
 screenshot-*.png
 
 # Generated code
-src/version.h
-src/types.c
-src/types.h
+version.h
+types.c
+types.h
index a7957f4abdccb075693b01713492cd67b881d1ec..45b691209c95e5a758536a32564c329683550dca 160000 (submodule)
@@ -1 +1 @@
-Subproject commit a7957f4abdccb075693b01713492cd67b881d1ec
+Subproject commit 45b691209c95e5a758536a32564c329683550dca
index e8d1b542acd5808a5ff5e635e514351f38c0a06c..df59104fdf6a87b61e105ea296464f7918c9b3c1 100644 (file)
@@ -3,7 +3,7 @@ project(Dragonblocks)
 
 # Variables
 
-set(DEPS_DIR "${CMAKE_SOURCE_DIR}/../deps/")
+set(DEPS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../deps/")
 
 if(NOT CMAKE_BUILD_TYPE)
        set(CMAKE_BUILD_TYPE Debug)
@@ -38,7 +38,8 @@ link_libraries(
 )
 
 include_directories(SYSTEM ${DEPS_DIR})
-include_directories(BEFORE ${CMAKE_SOURCE_DIR})
+include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
 
 # System specific options
 
@@ -55,6 +56,7 @@ endif()
 # Common sources
 
 set(COMMON_SOURCES
+       "${CMAKE_CURRENT_BINARY_DIR}/types.c"
        "${DEPS_DIR}/asprintf/asprintf.c"
        "${DEPS_DIR}/dragonnet/addr.c"
        "${DEPS_DIR}/dragonnet/listen.c"
@@ -81,7 +83,6 @@ set(COMMON_SOURCES
        perlin.c
        physics.c
        terrain.c
-       types.c
 )
 
 # Client
@@ -149,7 +150,8 @@ target_link_libraries(dragonblocks_server
 # Version
 
 add_custom_target(version
-       COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_SOURCE_DIR} -P ${CMAKE_SOURCE_DIR}/version.cmake
+       COMMAND ${CMAKE_COMMAND} -DBINARY_DIR=${CMAKE_CURRENT_BINARY_DIR}  -P ${CMAKE_CURRENT_SOURCE_DIR}/version.cmake
+       WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
 )
 
 add_dependencies(dragonblocks version)
@@ -158,14 +160,15 @@ add_dependencies(dragonblocks_server version)
 # Types
 
 add_custom_command(
-       OUTPUT "${CMAKE_SOURCE_DIR}/types.c" "${CMAKE_SOURCE_DIR}/types.h"
-       COMMAND "${CMAKE_SOURCE_DIR}/mktypes.sh"
-       MAIN_DEPENDENCY "${CMAKE_SOURCE_DIR}/types.def"
-       WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+       OUTPUT types.c types.h
+       MAIN_DEPENDENCY types.def
+       DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/../deps/protogen/protogen.lua"
+       COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/mktypes.sh" "${CMAKE_CURRENT_SOURCE_DIR}"
+       WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
 )
 
 add_custom_target(types
-       DEPENDS "${CMAKE_SOURCE_DIR}/types.c" "${CMAKE_SOURCE_DIR}/types.h"
+       DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/types.c" "${CMAKE_CURRENT_BINARY_DIR}/types.h"
 )
 
 add_dependencies(dragonblocks types)
index be1ef8f15884923e1bc1756e742a31bee876a88d..3fb766d50c3495ae3a5a6d816747c8ad82c7d736 100755 (executable)
@@ -1,3 +1,9 @@
-#!/bin/sh
-LUA_PATH="../deps/protogen/?.lua;../deps/protogen/?/init.lua" "../deps/protogen/protogen.lua"
+#!/bin/bash
+SOURCE_DIR="$1"
 
+if [[ "$SOURCE_DIR" = "" ]]; then
+       SOURCE_DIR="."
+fi
+
+export LUA_PATH="$SOURCE_DIR/../deps/protogen/?.lua;$SOURCE_DIR/../deps/protogen/?/init.lua"
+"$SOURCE_DIR/../deps/protogen/protogen.lua" "$SOURCE_DIR/types.def"
index f6e2306c9c7ae8cfe79678b03f092477c8105ccb..5befe41c558540e4a4a75b05eb5f8e18907f543d 100644 (file)
@@ -10,9 +10,7 @@ if("${GIT_VERSION}" STREQUAL "")
        )
 endif()
 
-set(VERSION_DEF "const char *version = \"${GIT_VERSION}\";")
-
 configure_file(
-       ${SOURCE_DIR}/version.h.in
-       ${SOURCE_DIR}/version.h
+       version.h.in
+       ${BINARY_DIR}/version.h
 )