244 lines
8.6 KiB
CMake

cmake_minimum_required(VERSION 3.10)
if(CMP_HOST_WINDOWS)
# this must be before add_executable
link_directories(
${PROJECT_EXTERNAL_LIBDIR}/zlib/zlib-1.2.10/VS2015/x64/lib
${PROJECT_EXTERNAL_LIBDIR}/glew/1.9.0/lib/x64
${OpenCV_LIB_DIRS}
${PROJECT_EXTERNAL_LIBDIR}/opencv/2.49/x64/VS2015/lib
)
if (OPTION_BUILD_EXR)
link_directories(
${PROJECT_EXTERNAL_LIBDIR}/openexr/ilmbase-2.2.0/VS2015/x64/lib
${PROJECT_EXTERNAL_LIBDIR}/openexr/openexr-2.2.0/VS2015/x64/lib
)
endif()
# this must be before add_executable
if (OPTION_CMP_DIRECTX)
link_directories(
${PROJECT_EXTERNAL_LIBDIR}/directxtex/DirectXTex-jun2020b/DirectXTex/Bin/Desktop_2017/x64
)
endif()
endif()
add_executable(CompressonatorCLI-bin "")
# allow const char* -> char*
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
target_compile_options(CompressonatorCLI-bin
PRIVATE
"-Wno-c++11-compat-deprecated-writable-strings")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
target_compile_options(CompressonatorCLI-bin
PRIVATE
"-Wno-write-strings")
endif()
target_compile_definitions(CompressonatorCLI-bin PUBLIC
-DUSE_WITH_COMMANDLINE_TOOL
# -DUSE_CMP_SDK
# -DUSE_AMD_PNG
)
file(GLOB_RECURSE RESOURCES
resources/*
)
if (OPTION_CMP_QT)
set (CLI_QTFILES
${PROJECT_SOURCE_DIR}/applications/_plugins/common/mipstoqimage.cpp
${PROJECT_SOURCE_DIR}/applications/_plugins/common/mipstoqimage.h
)
else()
set (CLI_QTFILES)
endif()
target_sources(CompressonatorCLI-bin
PRIVATE
${RESOURCES}
source/compressonatorcli.cpp
source/compressonatorcli_documentation.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/atiformats.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/atiformats.cpp
${PROJECT_SOURCE_DIR}/applications/_plugins/common/cmdline.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/cmdline.cpp
${PROJECT_SOURCE_DIR}/applications/_plugins/common/cmp_fileio.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/cmp_fileio.cpp
${PROJECT_SOURCE_DIR}/applications/_plugins/common/modeldata.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/modeldata.cpp
${PROJECT_SOURCE_DIR}/applications/_plugins/common/plugininterface.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/pluginmanager.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/pluginmanager.cpp
${PROJECT_SOURCE_DIR}/applications/_plugins/common/query_timer.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/query_timer.cpp
${PROJECT_SOURCE_DIR}/applications/_plugins/common/textureio.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/textureio.cpp
${PROJECT_SOURCE_DIR}/applications/_plugins/common/gltf/tiny_gltf2.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/gltf/tiny_gltf2_utils.h
${PROJECT_SOURCE_DIR}/applications/_plugins/common/gltf/tiny_gltf2_utils.cpp
${CLI_QTFILES}
)
target_include_directories(CompressonatorCLI-bin
PRIVATE
Source
${PROJECT_SOURCE_DIR}/applications/_plugins/common
${PROJECT_SOURCE_DIR}/applications/_plugins/common/json
${PROJECT_SOURCE_DIR}/applications/_plugins/cmesh/mesh_optimizer
${PROJECT_SOURCE_DIR}/applications/_libs/gpu_decode
${PROJECT_SOURCE_DIR}/applications/_libs/cmp_meshoptimizer
${PROJECT_SOURCE_DIR}/applications/_libs/cmp_math
${PROJECT_SOURCE_DIR}/cmp_compressonatorlib
${PROJECT_SOURCE_DIR}/cmp_framework/
${PROJECT_SOURCE_DIR}/cmp_framework/common/half
${PROJECT_SOURCE_DIR}/cmp_core/shaders
${PROJECT_SOURCE_DIR}/cmp_core/source
${PROJECT_SOURCE_DIR}/../common/lib/ext/glm
# ${PROJECT_SOURCE_DIR}/applications/_libs/cmp_meshcompressor/draco/src
# ${draco_INCLUDE_DIRS}
${OpenEXR_INCLUDE_DIRS}
)
if (OPTION_CMP_QT)
target_include_directories(CompressonatorCLI-bin
PRIVATE
${Qt5Gui_INCLUDE_DIRS}
)
endif()
if (OPTION_BUILD_EXR)
if (UNIX)
target_include_directories(CompressonatorCLI-bin
PRIVATE
/usr/local/include/OpenEXR/)
endif()
endif()
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if (UNIX)
target_compile_definitions(CompressonatorCLI-bin PRIVATE _LINUX)
endif()
set (CMP_LIBS "")
list(APPEND CMP_LIBS CMP_Compressonator
CMP_Framework
# CMP_MeshCompressor
Image_Analysis
Image_ASTC
Image_KTX
Image_TGA
)
if (OPTION_BUILD_EXR)
list(APPEND CMP_LIBS Image_EXR)
endif()
if (UNIX)
if(NOT APPLE)
list(APPEND CMP_LIBS Threads::Threads
${OpenEXR_LIBRARIES})
else()
list(APPEND CMP_LIBS "/usr/lib/libz.dylib")
list(APPEND CMP_LIBS "/usr/local/lib/libHalf.dylib")
list(APPEND CMP_LIBS "/usr/local/lib/libImath.dylib")
list(APPEND CMP_LIBS "/usr/local/lib/libIlmThread.dylib")
list(APPEND CMP_LIBS "/usr/local/lib/libIex.dylib")
list(APPEND CMP_LIBS "/usr/local/lib/libIlmImf.dylib")
endif()
else()
if (OPTION_CMP_QT)
list(APPEND
CMP_LIBS
CMP_GpuDecode
Image_KTX2
ExtQt5
ExtQt5Widgets
)
else()
list(APPEND
CMP_LIBS
CMP_GpuDecode
Image_KTX2
)
endif()
endif()
list(APPEND CMP_LIBS ${OpenCV_LIBRARIES}
# ${draco_LIBRARIES}
)
if (OPTION_CMP_QT)
target_link_libraries(CompressonatorCLI-bin
${CMP_LIBS}
Qt5::Gui
)
else()
target_link_libraries(CompressonatorCLI-bin
${CMP_LIBS}
)
endif()
add_dependencies(CompressonatorCLI-bin
CMP_Compressonator
CMP_Framework
# CMP_MeshCompressor
Image_Analysis
Image_ASTC
Image_KTX
Image_TGA
)
if (OPTION_BUILD_EXR)
add_dependencies(CompressonatorCLI-bin Image_EXR)
endif()
if(CMP_HOST_WINDOWS)
include(copyfiles.cmake)
set_target_properties(CompressonatorCLI-bin PROPERTIES
WIN32_EXECUTABLE OFF #Build an executable with a WinMain entry point on windows.
VS_DEBUGGER_WORKING_DIRECTORY $<TARGET_FILE_DIR:CompressonatorCLI-bin>
)
elseif(CMP_HOST_APPLE)
set_target_properties(CompressonatorCLI-bin PROPERTIES
LINK_FLAGS "-Wl,-F${CMAKE_OSX_SYSROOT}/System/Library/Frameworks,-v"
)
endif()
if(CMP_HOST_WINDOWS)
if (OPTION_CMP_QT)
set_target_properties(CompressonatorCLI-bin PROPERTIES
FOLDER "Applications"
VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/bin/$(Configuration)"
AUTORCC ON
AUTOMOC ON
OUTPUT_NAME "compressonatorcli"
)
else()
set_target_properties(CompressonatorCLI-bin PROPERTIES
FOLDER "Applications"
VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/bin/$(Configuration)"
OUTPUT_NAME "compressonatorcli"
)
endif()
else()
if (OPTION_CMP_QT)
set_target_properties(CompressonatorCLI-bin PROPERTIES
FOLDER "Applications"
AUTORCC ON
AUTOMOC ON
OUTPUT_NAME "compressonatorcli-bin"
)
else()
set_target_properties(CompressonatorCLI-bin PROPERTIES
FOLDER "Applications"
OUTPUT_NAME "compressonatorcli-bin"
)
endif()
endif()