mirror of
https://github.com/bkaradzic/bgfx.cmake.git
synced 2026-02-21 14:43:02 +01:00
bx: Restructure bx.cmake to be more like bx.lua
This commit is contained in:
@@ -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 $<BUILD_INTERFACE:${BX_DIR}/include> #
|
||||
$<BUILD_INTERFACE:${BX_DIR}/3rdparty> #
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}> #
|
||||
$<BUILD_INTERFACE:${BX_DIR}/include/compat/${BX_COMPAT_PLATFORM}> #
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/compat/${BX_COMPAT_PLATFORM}> #
|
||||
)
|
||||
|
||||
# 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=$<IF:$<CONFIG:Debug>,1,$<BOOL:${BX_CONFIG_DEBUG}>>")
|
||||
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_INTERFACE:${BX_DIR}/include> $<BUILD_INTERFACE:${BX_DIR}/3rdparty>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
)
|
||||
|
||||
# Build system specific configurations
|
||||
if(MINGW)
|
||||
target_include_directories(
|
||||
bx PUBLIC $<BUILD_INTERFACE:${BX_DIR}/include/compat/mingw>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/compat/mingw>
|
||||
)
|
||||
elseif(WIN32)
|
||||
target_include_directories(
|
||||
bx PUBLIC $<BUILD_INTERFACE:${BX_DIR}/include/compat/msvc>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/compat/msvc>
|
||||
)
|
||||
elseif(APPLE) # APPLE is technically UNIX... ORDERING MATTERS!
|
||||
target_include_directories(
|
||||
bx PUBLIC $<BUILD_INTERFACE:${BX_DIR}/include/compat/osx>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/compat/osx>
|
||||
)
|
||||
elseif(UNIX)
|
||||
target_include_directories(
|
||||
bx PUBLIC $<BUILD_INTERFACE:${BX_DIR}/include/compat/linux>
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/compat/linux>
|
||||
)
|
||||
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=$<IF:$<CONFIG:Debug>,1,$<BOOL:${BX_CONFIG_DEBUG}>>")
|
||||
|
||||
# Additional dependencies on Unix
|
||||
if(ANDROID)
|
||||
# For __android_log_write
|
||||
|
||||
Reference in New Issue
Block a user