From e9b0bb3b6c3d85684eeaf13f2af7e3781ee89f23 Mon Sep 17 00:00:00 2001 From: Sandy Carter Date: Fri, 6 Jan 2023 14:12:44 -0500 Subject: [PATCH] bx: Restructure bx.cmake to be more like bx.lua --- cmake/bx/bx.cmake | 125 +++++++++++++++++++++++++++------------------- 1 file changed, 75 insertions(+), 50 deletions(-) diff --git a/cmake/bx/bx.cmake b/cmake/bx/bx.cmake index a0d8197..ef541ce 100644 --- a/cmake/bx/bx.cmake +++ b/cmake/bx/bx.cmake @@ -14,21 +14,84 @@ if(NOT IS_DIRECTORY ${BX_DIR}) return() endif() -# Grab the bx source files -file(GLOB BX_SOURCES ${BX_DIR}/src/*.cpp) +include(GNUInstallDirs) -if(BX_AMALGAMATED) - set(BX_NOBUILD ${BX_SOURCES}) - list(REMOVE_ITEM BX_NOBUILD ${BX_DIR}/src/amalgamated.cpp) - foreach(BX_SRC ${BX_NOBUILD}) - set_source_files_properties(${BX_SRC} PROPERTIES HEADER_FILE_ONLY ON) - endforeach() -else() - set_source_files_properties(${BX_DIR}/src/amalgamated.cpp PROPERTIES HEADER_FILE_ONLY ON) +add_library(bx STATIC) + +# Put in a "bgfx" folder in Visual Studio +set_target_properties(bx PROPERTIES FOLDER "bgfx") + +# Build system specific configurations +if(MINGW) + set(BX_COMPAT_PLATFORM mingw) +elseif(WIN32) + set(BX_COMPAT_PLATFORM msvc) +elseif(APPLE) # APPLE is technically UNIX... ORDERING MATTERS! + set(BX_COMPAT_PLATFORM osx) +elseif(UNIX) + set(BX_COMPAT_PLATFORM linux) endif() -# Create the bx target -add_library(bx STATIC ${BX_SOURCES}) +# Add include directory of bx +target_include_directories( + bx + PUBLIC $ # + $ # + $ # + $ # + $ # +) + +# Grab the bx source files +file( + GLOB_RECURSE + BX_SOURCES + ${BX_DIR}/include/*.h # + ${BX_DIR}/include/**.inl # + ${BX_DIR}/src/*.cpp # + ${BX_DIR}/scripts/*.natvis # +) + +if(BX_AMALGAMATED) + list(INSERT BX_NOBUILD "${BX_DIR}/src/allocator.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/bounds.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/bx.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/commandline.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/crtnone.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/debug.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/dtoa.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/easing.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/file.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/filepath.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/hash.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/math.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/mutex.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/os.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/process.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/semaphore.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/settings.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/sort.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/string.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/thread.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/timer.cpp") + list(INSERT BX_NOBUILD "${BX_DIR}/src/url.cpp") +else() + file(GLOB_RECURSE BX_NOBUILD "${BX_DIR}/src/amalgamated.*") +endif() + +# Exclude files from the build but keep them in project +foreach(BX_SRC ${BX_NOBUILD}) + set_source_files_properties(${BX_SRC} PROPERTIES HEADER_FILE_ONLY ON) +endforeach() + +# Add sources to the project +target_sources(bx PRIVATE ${BX_SOURCES}) + +# All configurations +target_compile_definitions(bx PUBLIC "BX_CONFIG_DEBUG=$,1,$>") +target_compile_definitions(bx PUBLIC "__STDC_LIMIT_MACROS") +target_compile_definitions(bx PUBLIC "__STDC_FORMAT_MACROS") +target_compile_definitions(bx PUBLIC "__STDC_CONSTANT_MACROS") target_compile_features(bx PUBLIC cxx_std_14) # (note: see bx\scripts\toolchain.lua for equivalent compiler flag) @@ -39,44 +102,6 @@ if(WIN32) target_link_libraries(bx PUBLIC psapi) endif() -include(GNUInstallDirs) - -# Add include directory of bx -target_include_directories( - bx PUBLIC $ $ - $ -) - -# Build system specific configurations -if(MINGW) - target_include_directories( - bx PUBLIC $ - $ - ) -elseif(WIN32) - target_include_directories( - bx PUBLIC $ - $ - ) -elseif(APPLE) # APPLE is technically UNIX... ORDERING MATTERS! - target_include_directories( - bx PUBLIC $ - $ - ) -elseif(UNIX) - target_include_directories( - bx PUBLIC $ - $ - ) -endif() - -# All configurations -target_compile_definitions(bx PUBLIC "__STDC_LIMIT_MACROS") -target_compile_definitions(bx PUBLIC "__STDC_FORMAT_MACROS") -target_compile_definitions(bx PUBLIC "__STDC_CONSTANT_MACROS") - -target_compile_definitions(bx PUBLIC "BX_CONFIG_DEBUG=$,1,$>") - # Additional dependencies on Unix if(ANDROID) # For __android_log_write