diff --git a/CMakeLists.txt b/CMakeLists.txt index 232174b..26f4dc5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,16 @@ if( APPLE ) set( CMAKE_CXX_FLAGS "-ObjC++" ) endif() +option( BGFX_BUILD_TOOLS "Build bgfx tools." ON ) +option( BGFX_BUILD_EXAMPLES "Build bgfx examples." ON ) + include( cmake/bx.cmake ) include( cmake/bgfx.cmake ) -include( cmake/tools.cmake ) -include( cmake/examples.cmake ) + +if( BGFX_BUILD_TOOLS ) + include( cmake/tools.cmake ) +endif() + +if( BGFX_BUILD_EXAMPLES ) + include( cmake/examples.cmake ) +endif() diff --git a/cmake/3rdparty/fcpp.cmake b/cmake/3rdparty/fcpp.cmake index 9e73e69..b16c022 100755 --- a/cmake/3rdparty/fcpp.cmake +++ b/cmake/3rdparty/fcpp.cmake @@ -7,5 +7,5 @@ target_include_directories( fcpp PUBLIC ${BGFX_DIR}/3rdparty/fcpp ) if( MSVC ) set_target_properties( fcpp PROPERTIES COMPILE_FLAGS "/W0" ) endif() -set_target_properties( fcpp PROPERTIES FOLDER "3rdparty" ) +set_target_properties( fcpp PROPERTIES FOLDER "bgfx/3rdparty" ) set_source_files_properties( ${BGFX_DIR}/3rdparty/fcpp/usecpp.c PROPERTIES HEADER_FILE_ONLY ON ) diff --git a/cmake/3rdparty/glsl-optimizer.cmake b/cmake/3rdparty/glsl-optimizer.cmake index 653ad80..ba890e7 100755 --- a/cmake/3rdparty/glsl-optimizer.cmake +++ b/cmake/3rdparty/glsl-optimizer.cmake @@ -15,7 +15,7 @@ target_include_directories( glcpp PUBLIC ${GLSL-OPTIMIZER_INCLUDES} ) if( MSVC ) set_target_properties( glcpp PROPERTIES COMPILE_FLAGS "/W0" ) endif() -set_target_properties( glcpp PROPERTIES FOLDER "3rdparty" ) +set_target_properties( glcpp PROPERTIES FOLDER "bgfx/3rdparty" ) # mesa file( GLOB MESA_SOURCES ${BGFX_DIR}/3rdparty/glsl-optimizer/src/mesa/program/*.c ${BGFX_DIR}/3rdparty/glsl-optimizer/src/mesa/main/*.c ) @@ -24,7 +24,7 @@ target_include_directories( mesa PUBLIC ${GLSL-OPTIMIZER_INCLUDES} ) if( MSVC ) set_target_properties( mesa PROPERTIES COMPILE_FLAGS "/W0" ) endif() -set_target_properties( mesa PROPERTIES FOLDER "3rdparty" ) +set_target_properties( mesa PROPERTIES FOLDER "bgfx/3rdparty" ) # glsl_optimizer file( GLOB GLSL-OPTIMIZER_SOURCES ${BGFX_DIR}/3rdparty/glsl-optimizer/src/glsl/*.cpp ${BGFX_DIR}/3rdparty/glsl-optimizer/src/glsl/*.c ) @@ -35,4 +35,4 @@ target_link_libraries( glsl-optimizer glcpp mesa ) if( MSVC ) set_target_properties( glsl-optimizer PROPERTIES COMPILE_FLAGS "/W0" ) endif() -set_target_properties( glsl-optimizer PROPERTIES FOLDER "3rdparty" ) +set_target_properties( glsl-optimizer PROPERTIES FOLDER "bgfx/3rdparty" ) diff --git a/cmake/3rdparty/ib-compress.cmake b/cmake/3rdparty/ib-compress.cmake index 6f70dca..c0949da 100644 --- a/cmake/3rdparty/ib-compress.cmake +++ b/cmake/3rdparty/ib-compress.cmake @@ -4,4 +4,4 @@ file( GLOB IB_COMPRESS_SOURCES ${BGFX_DIR}/3rdparty/ib-compress/*.cpp ${BGFX_DIR add_library( ib-compress STATIC ${IB_COMPRESS_SOURCES} ) target_include_directories( ib-compress PUBLIC ${BGFX_DIR}/3rdparty ) -set_target_properties( ib-compress PROPERTIES FOLDER "3rdparty" ) +set_target_properties( ib-compress PROPERTIES FOLDER "bgfx/3rdparty" ) diff --git a/cmake/3rdparty/ocornut-imgui.cmake b/cmake/3rdparty/ocornut-imgui.cmake index 69cc153..e766499 100644 --- a/cmake/3rdparty/ocornut-imgui.cmake +++ b/cmake/3rdparty/ocornut-imgui.cmake @@ -6,4 +6,4 @@ add_library( ocornut-imgui STATIC ${OCORNUT_IMGUI_SOURCES} ) target_compile_definitions( ocornut-imgui PRIVATE "-D_CRT_SECURE_NO_WARNINGS" "-D__STDC_FORMAT_MACROS" ) target_include_directories( ocornut-imgui PUBLIC ${BGFX_DIR}/3rdparty ) target_link_libraries( ocornut-imgui PUBLIC bx ) -set_target_properties( ocornut-imgui PROPERTIES FOLDER "3rdparty" ) +set_target_properties( ocornut-imgui PROPERTIES FOLDER "bgfx/3rdparty" ) diff --git a/cmake/bgfx.cmake b/cmake/bgfx.cmake index baa3314..0bbfc21 100755 --- a/cmake/bgfx.cmake +++ b/cmake/bgfx.cmake @@ -1,6 +1,13 @@ # Copyright (c) 2016 Joshua Brookover -set( BGFX_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bgfx" ) +if( NOT BGFX_DIR ) + set( BGFX_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bgfx" CACHE STRING "Location of bgfx." ) +endif() + +if( NOT IS_DIRECTORY ${BGFX_DIR} ) + message( SEND_ERROR "Could not load bgfx, directory does not exist. ${BGFX_DIR}" ) + return() +endif() file( GLOB BGFX_SOURCES ${BGFX_DIR}/src/*.cpp ${BGFX_DIR}/src/*.mm ${BGFX_DIR}/src/*.h ) @@ -36,3 +43,4 @@ if( NOT APPLE ) set_source_files_properties( ${BGFX_DIR}/src/glcontext_nsgl.mm PROPERTIES HEADER_FILE_ONLY ON ) set_source_files_properties( ${BGFX_DIR}/src/renderer_mtl.mm PROPERTIES HEADER_FILE_ONLY ON ) endif() +set_target_properties( bgfx PROPERTIES FOLDER "bgfx" ) diff --git a/cmake/bx.cmake b/cmake/bx.cmake index aa64bff..e84c093 100644 --- a/cmake/bx.cmake +++ b/cmake/bx.cmake @@ -1,6 +1,13 @@ # Copyright (c) 2016 Joshua Brookover -set( BX_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bx" ) +if( NOT BX_DIR ) + set( BX_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bx" CACHE STRING "Location of bgfx." ) +endif() + +if( NOT IS_DIRECTORY ${BX_DIR} ) + message( SEND_ERROR "Could not load bx, directory does not exist. ${BX_DIR}" ) + return() +endif() add_library( bx INTERFACE ) diff --git a/cmake/tools/shaderc.cmake b/cmake/tools/shaderc.cmake index 91f9e79..81d98ae 100644 --- a/cmake/tools/shaderc.cmake +++ b/cmake/tools/shaderc.cmake @@ -7,7 +7,7 @@ include( cmake/3rdparty/glsl-optimizer.cmake ) add_executable( shaderc bgfx/tools/shaderc/shaderc.cpp bgfx/tools/shaderc/shaderc.h bgfx/tools/shaderc/shaderc_glsl.cpp bgfx/tools/shaderc/shaderc_hlsl.cpp ) target_compile_definitions( shaderc PRIVATE "-D_CRT_SECURE_NO_WARNINGS" ) -set_target_properties( shaderc PROPERTIES FOLDER "tools" ) +set_target_properties( shaderc PROPERTIES FOLDER "bgfx/tools" ) target_link_libraries( shaderc bx bgfx fcpp glsl-optimizer ) # shaderc( FILE file OUTPUT file ... ) @@ -15,7 +15,7 @@ target_link_libraries( shaderc bx bgfx fcpp glsl-optimizer ) function( shaderc ) cmake_parse_arguments( ARG "" "FILE;OUTPUT" "" ${ARGN} ) shaderc_parse( CLI ${ARGN} ) - add_custom_command( OUTPUT ${ARG_OUTPUT} COMMAND "$" ${CLI} MAIN_DEPENDENCY ${ARG_FILE} COMMENT "Compiling shader ${ARG_FILE}" ) + add_custom_command( OUTPUT ${ARG_OUTPUT} COMMAND "$" ${CLI} MAIN_DEPENDENCY ${ARG_FILE} COMMENT "Compiling shader ${ARG_FILE}" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" ) endfunction() # shaderc_parse( diff --git a/cmake/util/ConfigureDebugging.cmake b/cmake/util/ConfigureDebugging.cmake index 3d85a91..6379799 100644 --- a/cmake/util/ConfigureDebugging.cmake +++ b/cmake/util/ConfigureDebugging.cmake @@ -145,6 +145,6 @@ function( configure_debugging ARG_TARGET ) endif() endforeach() endforeach() - configure_file( ${CMAKE_SOURCE_DIR}/cmake/util/vcxproj.user.in ${CMAKE_CURRENT_BINARY_DIR}/${ARG_TARGET}.vcxproj.user @ONLY ) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/util/vcxproj.user.in ${CMAKE_CURRENT_BINARY_DIR}/${ARG_TARGET}.vcxproj.user @ONLY ) endif() endfunction()