From 637f50d9bd35979ce72df93583f3a3508f57427e Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 17 Apr 2022 19:55:04 +0200 Subject: [PATCH] Out of source builds: keep source directory clean --- .gitignore | 6 +++--- deps/protogen | 2 +- src/CMakeLists.txt | 21 ++++++++++++--------- src/mktypes.sh | 10 ++++++++-- src/version.cmake | 6 ++---- 5 files changed, 26 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 4eb449c..576b8e6 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/deps/protogen b/deps/protogen index a7957f4..45b6912 160000 --- a/deps/protogen +++ b/deps/protogen @@ -1 +1 @@ -Subproject commit a7957f4abdccb075693b01713492cd67b881d1ec +Subproject commit 45b691209c95e5a758536a32564c329683550dca diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e8d1b54..df59104 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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) diff --git a/src/mktypes.sh b/src/mktypes.sh index be1ef8f..3fb766d 100755 --- a/src/mktypes.sh +++ b/src/mktypes.sh @@ -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" diff --git a/src/version.cmake b/src/version.cmake index f6e2306..5befe41 100644 --- a/src/version.cmake +++ b/src/version.cmake @@ -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 ) -- 2.44.0