diff --git a/CMakeLists.txt b/CMakeLists.txt index 0414c39..f2d008f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,11 +19,13 @@ elseif(UNIX) set(CMAKE_CXX_STANDARD_REQUIRED ON) endif() -option( BGFX_BUILD_TOOLS "Build bgfx tools." ON ) -option( BGFX_BUILD_EXAMPLES "Build bgfx examples." ON ) -option( BGFX_INSTALL "Create installation target." ON ) -option( BGFX_USE_OVR "Build with OVR support." OFF ) -option( BX_AMALGAMATED "Amalgamate bx source files for faster compilation" ON ) +option( BGFX_BUILD_TOOLS "Build bgfx tools." ON ) +option( BGFX_BUILD_EXAMPLES "Build bgfx examples." ON ) +option( BGFX_INSTALL "Create installation target." ON ) +option( BGFX_CUSTOM_TARGETS "Include convenience custom targets." ON ) +option( BGFX_USE_OVR "Build with OVR support." OFF ) +option( BGFX_AMALGAMATED "Amalgamated bgfx build for faster compilation" OFF ) +option( BX_AMALGAMATED "Amalgamated bx build for faster compilation" OFF ) if( NOT BX_DIR ) set( BX_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bx" CACHE STRING "Location of bx." ) diff --git a/cmake/bgfx.cmake b/cmake/bgfx.cmake index 5c284c3..61d1f4d 100755 --- a/cmake/bgfx.cmake +++ b/cmake/bgfx.cmake @@ -16,6 +16,15 @@ endif() # Grab the bgfx source files file( GLOB BGFX_SOURCES ${BGFX_DIR}/src/*.cpp ${BGFX_DIR}/src/*.mm ${BGFX_DIR}/src/*.h ${BGFX_DIR}/include/bgfx/*.h ${BGFX_DIR}/include/bgfx/c99/*.h ) +if(BGFX_AMALGAMATED) + set(BGFX_NOBUILD ${BGFX_SOURCES}) + list(REMOVE_ITEM BGFX_NOBUILD ${BGFX_DIR}/src/amalgamated.cpp) + foreach(BGFX_SRC ${BGFX_NOBUILD}) + set_source_files_properties( ${BGFX_SRC} PROPERTIES HEADER_FILE_ONLY ON ) + endforeach() +else() + set_source_files_properties( ${BGFX_DIR}/src/amalgamated.cpp PROPERTIES HEADER_FILE_ONLY ON ) +endif() # Create the bgfx target add_library( bgfx STATIC ${BGFX_SOURCES} ) @@ -56,7 +65,6 @@ if( UNIX AND NOT APPLE ) endif() # Excluded files from compilation -set_source_files_properties( ${BGFX_DIR}/src/amalgamated.cpp PROPERTIES HEADER_FILE_ONLY ON ) set_source_files_properties( ${BGFX_DIR}/src/amalgamated.mm PROPERTIES HEADER_FILE_ONLY ON ) set_source_files_properties( ${BGFX_DIR}/src/glcontext_ppapi.cpp PROPERTIES HEADER_FILE_ONLY ON ) set_source_files_properties( ${BGFX_DIR}/src/glcontext_egl.cpp PROPERTIES HEADER_FILE_ONLY ON ) diff --git a/cmake/examples.cmake b/cmake/examples.cmake index f36351e..ee304e8 100755 --- a/cmake/examples.cmake +++ b/cmake/examples.cmake @@ -117,7 +117,9 @@ function( add_example ARG_NAME ) if( MSVC ) set_target_properties( example-${ARG_NAME} PROPERTIES LINK_FLAGS "/ENTRY:\"mainCRTStartup\"" ) endif() - add_dependencies( examples example-${ARG_NAME} ) + if( BGFX_CUSTOM_TARGETS ) + add_dependencies( examples example-${ARG_NAME} ) + endif() endif() # Configure shaders @@ -133,7 +135,9 @@ function( add_example ARG_NAME ) endfunction() # Build all examples target -add_custom_target( examples ) +if( BGFX_CUSTOM_TARGETS ) + add_custom_target( examples ) +endif() # Add common library for examples add_example( diff --git a/cmake/tools.cmake b/cmake/tools.cmake index 2c79449..537a381 100644 --- a/cmake/tools.cmake +++ b/cmake/tools.cmake @@ -8,7 +8,9 @@ # You should have received a copy of the CC0 Public Domain Dedication along with # this software. If not, see . -add_custom_target( tools ) +if( BGFX_CUSTOM_TARGETS ) + add_custom_target( tools ) +endif() include( cmake/tools/geometryc.cmake ) include( cmake/tools/shaderc.cmake ) diff --git a/cmake/tools/geometryc.cmake b/cmake/tools/geometryc.cmake index 0056d24..a1be9f6 100644 --- a/cmake/tools/geometryc.cmake +++ b/cmake/tools/geometryc.cmake @@ -17,4 +17,6 @@ add_executable( geometryc ${BGFX_DIR}/tools/geometryc/geometryc.cpp ) target_compile_definitions( geometryc PRIVATE "-D_CRT_SECURE_NO_WARNINGS" ) set_target_properties( geometryc PROPERTIES FOLDER "bgfx/tools" ) target_link_libraries( geometryc bx bgfx-bounds bgfx-vertexdecl forsyth-too ib-compress ) -add_dependencies( tools geometryc ) +if( BGFX_CUSTOM_TARGETS ) + add_dependencies( tools geometryc ) +endif() diff --git a/cmake/tools/shaderc.cmake b/cmake/tools/shaderc.cmake index 1c9c313..00a78f0 100644 --- a/cmake/tools/shaderc.cmake +++ b/cmake/tools/shaderc.cmake @@ -18,7 +18,9 @@ add_executable( shaderc ${BGFX_DIR}/tools/shaderc/shaderc.cpp ${BGFX_DIR}/tools/ target_compile_definitions( shaderc PRIVATE "-D_CRT_SECURE_NO_WARNINGS" ) set_target_properties( shaderc PROPERTIES FOLDER "bgfx/tools" ) target_link_libraries( shaderc bx bgfx-vertexdecl bgfx-shader-spirv fcpp glsl-optimizer glslang ) -add_dependencies( tools shaderc ) +if( BGFX_CUSTOM_TARGETS ) + add_dependencies( tools shaderc ) +endif() function( add_shader ARG_FILE ) # Parse arguments