cmake_minimum_required(VERSION 3.5) project(basisu_transcoder_js) # KTX2 support (and Zstandard) in the transcoder is purely optional. Use "cmake -DKTX2=FALSE" to completely disable KTX2 support (which also disables Zstandard). # If this is FALSE you'll only be able to transcode .basis files. option(KTX2 "KTX2" TRUE) # If KTX2 is enabled, Zstandard is needed to support decompressing supercompressed UASTC files. # If you know you'll never be transcoding KTX2 files using this feature you can set KTX2_ZSTANDARD to 0. option(KTX2_ZSTANDARD "KTX2_ZSTANDARD" TRUE) message("KTX2=${KTX2}") message("KTX2_ZSTANDARD=${KTX2_ZSTANDARD}") if (EMSCRIPTEN) set(CMAKE_CXX_STANDARD 17) set(SRC_LIST ../../transcoder/basisu_transcoder.cpp basis_wrappers.cpp ) if (KTX2) set(KTX2_DEFINITION BASISD_SUPPORT_KTX2=1) else() set(KTX2_DEFINITION BASISD_SUPPORT_KTX2=0) endif() if (KTX2_ZSTANDARD) set(SRC_LIST ${SRC_LIST} ../../zstd/zstddeclib.c ) set(ZSTD_DEFINITION BASISD_SUPPORT_KTX2_ZSTD=1) else() set(ZSTD_DEFINITION BASISD_SUPPORT_KTX2_ZSTD=0) endif() # message("KTX2_DEFINITION=${KTX2_DEFINITION}) # message("ZSTD_DEFINITION=${ZSTD_DEFINITION}) add_executable(basis_transcoder.js ${SRC_LIST}) target_compile_definitions(basis_transcoder.js PRIVATE NDEBUG BASISD_SUPPORT_UASTC_HDR=1 BASISD_SUPPORT_UASTC=1 BASISD_SUPPORT_BC7=1 BASISD_SUPPORT_ATC=0 BASISD_SUPPORT_ASTC_HIGHER_OPAQUE_QUALITY=0 BASISD_SUPPORT_PVRTC2=0 BASISD_SUPPORT_FXT1=0 BASISD_SUPPORT_ETC2_EAC_RG11=0 BASISU_SUPPORT_ENCODING=0 BASISD_ENABLE_DEBUG_FLAGS=1 ${KTX2_DEFINITION} ${ZSTD_DEFINITION} ) target_compile_options(basis_transcoder.js PRIVATE -O3 -fno-strict-aliasing) #target_compile_options(basis_transcoder.js PRIVATE -O0 -g -fno-strict-aliasing) target_include_directories(basis_transcoder.js PRIVATE ../../transcoder) set_target_properties(basis_transcoder.js PROPERTIES OUTPUT_NAME "basis_transcoder" SUFFIX ".js" LINK_FLAGS "--bind -s ALLOW_MEMORY_GROWTH=1 -s MALLOC=emmalloc -s MODULARIZE=1 -s EXPORT_NAME=BASIS -s ASSERTIONS=0 -s EXPORTED_RUNTIME_METHODS=['HEAP8']") endif()