mirror of
https://github.com/BinomialLLC/basis_universal.git
synced 2026-08-31 23:48:15 +00:00
Adding EXAMPLES option so they can be optionally compiled (partially from PR 383)
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
# Important: The Basis Universal encoder and transcoder libraries must be compiled with -fno-strict-aliasing (MSVC's default, and also the Linux kernel).
|
||||
# It should also work without this option, but we do not test with it.
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
project(basisu C CXX)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
option(STATIC "static linking" FALSE)
|
||||
option(SAN "sanitize" FALSE)
|
||||
option(EXAMPLES "build examples" TRUE)
|
||||
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
|
||||
|
||||
@@ -32,6 +33,7 @@ message("Initial SSE=${SSE}")
|
||||
message("Initial ZSTD=${ZSTD}")
|
||||
message("Initial OPENCL=${OPENCL}")
|
||||
message("Initial SAN=${SAN}")
|
||||
message("Initial EXAMPLES=${EXAMPLES}")
|
||||
|
||||
if ((NOT MSVC) AND OPENCL)
|
||||
# With MSVC builds we use the Khronos lib/include files in the project's "OpenCL" directory, to completely avoid requiring fiddly to install vendor SDK's.
|
||||
@@ -218,15 +220,21 @@ add_executable(basisu basisu_tool.cpp)
|
||||
target_link_libraries(basisu PRIVATE basisu_encoder)
|
||||
|
||||
# Create the new example executable and link against the static library
|
||||
add_executable(examples example/example.cpp)
|
||||
target_link_libraries(examples PRIVATE basisu_encoder)
|
||||
if(EXAMPLES)
|
||||
add_executable(examples example/example.cpp)
|
||||
target_link_libraries(examples PRIVATE basisu_encoder)
|
||||
endif()
|
||||
|
||||
if (ZSTD)
|
||||
target_compile_definitions(basisu PRIVATE BASISD_SUPPORT_KTX2_ZSTD=1)
|
||||
target_compile_definitions(examples PRIVATE BASISD_SUPPORT_KTX2_ZSTD=1)
|
||||
if(EXAMPLES)
|
||||
target_compile_definitions(examples PRIVATE BASISD_SUPPORT_KTX2_ZSTD=1)
|
||||
endif()
|
||||
else()
|
||||
target_compile_definitions(basisu PRIVATE BASISD_SUPPORT_KTX2_ZSTD=0)
|
||||
target_compile_definitions(examples PRIVATE BASISD_SUPPORT_KTX2_ZSTD=0)
|
||||
if(EXAMPLES)
|
||||
target_compile_definitions(examples PRIVATE BASISD_SUPPORT_KTX2_ZSTD=0)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (NOT MSVC)
|
||||
@@ -236,7 +244,9 @@ if (NOT MSVC)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_OPENCL=1")
|
||||
|
||||
target_include_directories(basisu PRIVATE ${OpenCL_INCLUDE_DIRS})
|
||||
target_include_directories(examples PRIVATE ${OpenCL_INCLUDE_DIRS})
|
||||
if(EXAMPLES)
|
||||
target_include_directories(examples PRIVATE ${OpenCL_INCLUDE_DIRS})
|
||||
endif()
|
||||
target_include_directories(basisu_encoder PRIVATE ${OpenCL_INCLUDE_DIRS})
|
||||
set(BASISU_EXTRA_LIBS ${OpenCL_LIBRARIES})
|
||||
endif()
|
||||
@@ -247,22 +257,30 @@ else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBASISU_SUPPORT_OPENCL=1")
|
||||
|
||||
target_include_directories(basisu PRIVATE "OpenCL")
|
||||
target_include_directories(examples PRIVATE "OpenCL")
|
||||
if(EXAMPLES)
|
||||
target_include_directories(examples PRIVATE "OpenCL")
|
||||
endif()
|
||||
target_include_directories(basisu_encoder PRIVATE "OpenCL")
|
||||
|
||||
if (BUILD_X64)
|
||||
target_link_libraries(basisu PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL64.lib")
|
||||
target_link_libraries(examples PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL64.lib")
|
||||
if(EXAMPLES)
|
||||
target_link_libraries(examples PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL64.lib")
|
||||
endif()
|
||||
else()
|
||||
target_link_libraries(basisu PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL.lib")
|
||||
target_link_libraries(examples PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL.lib")
|
||||
if(EXAMPLES)
|
||||
target_link_libraries(examples PRIVATE "${CMAKE_SOURCE_DIR}/OpenCL/lib/OpenCL.lib")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (NOT MSVC)
|
||||
target_link_libraries(basisu PRIVATE m pthread ${BASISU_EXTRA_LIBS})
|
||||
target_link_libraries(examples PRIVATE m pthread ${BASISU_EXTRA_LIBS})
|
||||
if(EXAMPLES)
|
||||
target_link_libraries(examples PRIVATE m pthread ${BASISU_EXTRA_LIBS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (NOT EMSCRIPTEN)
|
||||
@@ -288,12 +306,14 @@ if (MSVC)
|
||||
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
)
|
||||
|
||||
set_target_properties(examples PROPERTIES
|
||||
RUNTIME_OUTPUT_NAME "examples"
|
||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
)
|
||||
if(EXAMPLES)
|
||||
set_target_properties(examples PROPERTIES
|
||||
RUNTIME_OUTPUT_NAME "examples"
|
||||
RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user