From 52d61551a94373a7c8d0d80a5151743aff84fcce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Tue, 19 Jan 2021 10:44:43 +0100 Subject: [PATCH] cmake: reorganize project structure --- CMakeLists.txt | 4 ++ cmake/utils.cmake | 9 +++++ code/apps/client/CMakeLists.txt | 27 ++++--------- code/apps/server/CMakeLists.txt | 40 +------------------ code/common/CMakeLists.txt | 2 + .../{apps/client/header => common}/platform.h | 0 code/vendors/CMakeLists.txt | 2 + code/vendors/cwpack/CMakeLists.txt | 2 + code/vendors/flecs/CMakeLists.txt | 2 + 9 files changed, 30 insertions(+), 58 deletions(-) create mode 100644 cmake/utils.cmake create mode 100644 code/common/CMakeLists.txt rename code/{apps/client/header => common}/platform.h (100%) create mode 100644 code/vendors/CMakeLists.txt create mode 100644 code/vendors/cwpack/CMakeLists.txt create mode 100644 code/vendors/flecs/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index aeb5f2d..1c61613 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,6 @@ cmake_minimum_required(VERSION 3.0) project(eco2d) +include(cmake/utils.cmake) set(CMAKE_C_STANDARD 11) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/) @@ -11,5 +12,8 @@ include_directories(eco2d-cli code/vendors code/common) include_directories(eco2d-client code/vendors code/common) include_directories(eco2d-server code/vendors code/vendors/flecs code/common) +add_subdirectory(code/common) +add_subdirectory(code/vendors) + add_subdirectory(code/apps/client) add_subdirectory(code/apps/server) diff --git a/cmake/utils.cmake b/cmake/utils.cmake new file mode 100644 index 0000000..e354f3c --- /dev/null +++ b/cmake/utils.cmake @@ -0,0 +1,9 @@ +function(link_system_libs target_name) + if (WIN32) + target_link_libraries(${target_name} winmm) + elseif (APPLE) + target_link_libraries(${target_name} pthread m dl) + elseif (UNIX) + target_link_libraries(${target_name} pthread m dl atomic) + endif() +endfunction() diff --git a/code/apps/client/CMakeLists.txt b/code/apps/client/CMakeLists.txt index 0395254..51c6f2e 100644 --- a/code/apps/client/CMakeLists.txt +++ b/code/apps/client/CMakeLists.txt @@ -25,14 +25,7 @@ add_library(client-common STATIC source/main.c header/network.h - header/platform.h header/game.h - - ../../common/signal_handling.c - ../../common/signal_handling.h - - ../../common/assets.h - ../../common/assets.c ) add_executable(eco2d-client @@ -43,17 +36,11 @@ add_executable(eco2d-cli source/platform_text.c ) -include_directories(header/) -target_link_libraries(eco2d-client raylib client-common) -target_link_libraries(eco2d-cli client-common) +set(LIBS client-common cwpack eco2d-common) -if (WIN32) - target_link_libraries(eco2d-cli winmm) - target_link_libraries(eco2d-client winmm) -elseif (APPLE) - target_link_libraries(eco2d-cli pthread m dl) - target_link_libraries(eco2d-client pthread m dl) -elseif (UNIX) - target_link_libraries(eco2d-cli pthread m dl atomic) - target_link_libraries(eco2d-client pthread m dl atomic) -endif() +include_directories(header/) +target_link_libraries(eco2d-client raylib ${LIBS}) +target_link_libraries(eco2d-cli ${LIBS}) + +link_system_libs(eco2d-cli) +link_system_libs(eco2d-client) diff --git a/code/apps/server/CMakeLists.txt b/code/apps/server/CMakeLists.txt index 029d926..f021f4f 100644 --- a/code/apps/server/CMakeLists.txt +++ b/code/apps/server/CMakeLists.txt @@ -18,44 +18,8 @@ add_executable(eco2d-server header/components/physics.h header/components/general.h header/components/controllers.h - - ../../common/signal_handling.c - ../../common/signal_handling.h - - ../../common/assets.h - ../../common/assets.c - - ../../vendors/cwpack/cwpack.c - ../../vendors/cwpack/cwpack.h - - ../../vendors/flecs/flecs.c - ../../vendors/flecs/flecs.h - ../../vendors/flecs/flecs_meta.c - ../../vendors/flecs/flecs_meta.h - ../../vendors/flecs/flecs_json.h - ../../vendors/flecs/flecs_json.c - ../../vendors/flecs/flecs_rest.h - ../../vendors/flecs/flecs_rest.c - ../../vendors/flecs/flecs_monitor.h - ../../vendors/flecs/flecs_monitor.c - ../../vendors/flecs/flecs_player.h - ../../vendors/flecs/flecs_player.c - ../../vendors/flecs/flecs_dash.h - ../../vendors/flecs/flecs_dash.c - ../../vendors/flecs/flecs_components_http.h - ../../vendors/flecs/flecs_components_http.c - ../../vendors/flecs/flecs_systems_civetweb.h - ../../vendors/flecs/flecs_systems_civetweb.c - ../../vendors/flecs/flecs_os_api_posix.h - ../../vendors/flecs/flecs_os_api_posix.c ) include_directories(eco2d-server header) - -if (WIN32) - target_link_libraries(eco2d-server winmm) -elseif (APPLE) - target_link_libraries(eco2d-server pthread m dl) -elseif (UNIX) - target_link_libraries(eco2d-server pthread m dl atomic) -endif() +target_link_libraries(eco2d-server eco2d-common flecs-bundle cwpack) +link_system_libs(eco2d-server) diff --git a/code/common/CMakeLists.txt b/code/common/CMakeLists.txt new file mode 100644 index 0000000..1bdc102 --- /dev/null +++ b/code/common/CMakeLists.txt @@ -0,0 +1,2 @@ +file(GLOB_RECURSE SRCS *.h *.c) +add_library(eco2d-common STATIC ${SRCS}) diff --git a/code/apps/client/header/platform.h b/code/common/platform.h similarity index 100% rename from code/apps/client/header/platform.h rename to code/common/platform.h diff --git a/code/vendors/CMakeLists.txt b/code/vendors/CMakeLists.txt new file mode 100644 index 0000000..a8e9f2d --- /dev/null +++ b/code/vendors/CMakeLists.txt @@ -0,0 +1,2 @@ +add_subdirectory(flecs) +add_subdirectory(cwpack) diff --git a/code/vendors/cwpack/CMakeLists.txt b/code/vendors/cwpack/CMakeLists.txt new file mode 100644 index 0000000..3d77b32 --- /dev/null +++ b/code/vendors/cwpack/CMakeLists.txt @@ -0,0 +1,2 @@ +file(GLOB SRCS *.h *.c) +add_library(cwpack STATIC ${SRCS}) diff --git a/code/vendors/flecs/CMakeLists.txt b/code/vendors/flecs/CMakeLists.txt new file mode 100644 index 0000000..5540a42 --- /dev/null +++ b/code/vendors/flecs/CMakeLists.txt @@ -0,0 +1,2 @@ +file(GLOB SRCS *.c *.h) +add_library(flecs-bundle STATIC ${SRCS})