libSquish/CMakeLists.txt

105 lines
2.8 KiB
CMake

# cmake build file for squish
# by Stefan Roettger (stefan@stereofx.org)
# updated by Simon Brown (si@sjbrown.co.uk)
# features:
# Xcode: builds universal binaries, uses SSE2 on i386 and Altivec on ppc
# Unix and VS: SSE2 support is enabled by default
# use BUILD_SQUISH_WITH_SSE2 and BUILD_SQUISH_WITH_ALTIVEC to override
PROJECT(squish)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3)
OPTION(BUILD_SQUISH_WITH_SSE2 "Build with SSE2." ON)
OPTION(BUILD_SQUISH_WITH_ALTIVEC "Build with Altivec." OFF)
OPTION(BUILD_SHARED_LIBS "Build shared libraries." OFF)
OPTION(BUILD_SQUISH_EXTRA "Build extra source code." OFF)
IF (CMAKE_GENERATOR STREQUAL "Xcode")
SET(CMAKE_OSX_ARCHITECTURES "i386;ppc")
ELSE (CMAKE_GENERATOR STREQUAL "Xcode")
IF (BUILD_SQUISH_WITH_SSE2 AND NOT WIN32)
ADD_DEFINITIONS(-DSQUISH_USE_SSE=2 -msse2)
ENDIF (BUILD_SQUISH_WITH_SSE2 AND NOT WIN32)
IF (BUILD_SQUISH_WITH_ALTIVEC AND NOT WIN32)
ADD_DEFINITIONS(-DSQUISH_USE_ALTIVEC=1 -maltivec)
ENDIF (BUILD_SQUISH_WITH_ALTIVEC AND NOT WIN32)
ENDIF (CMAKE_GENERATOR STREQUAL "Xcode")
SET(SQUISH_HDRS
squish.h
)
SET(SQUISH_SRCS
alpha.cpp
alpha.h
clusterfit.cpp
clusterfit.h
colourblock.cpp
colourblock.h
colourfit.cpp
colourfit.h
colourset.cpp
colourset.h
maths.cpp
maths.h
rangefit.cpp
rangefit.h
simd.h
simd_float.h
simd_sse.h
simd_ve.h
singlecolourfit.cpp
singlecolourfit.h
singlecolourlookup.inl
squish.cpp
)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
ADD_LIBRARY(squish ${SQUISH_SRCS} ${SQUISH_HDRS})
SET_TARGET_PROPERTIES(
squish PROPERTIES
PUBLIC_HEADER "${SQUISH_HDRS}"
VERSION 0.0
SOVERSION 0.0
DEBUG_POSTFIX "d"
XCODE_ATTRIBUTE_GCC_PREPROCESSOR_DEFINITIONS "$(SQUISH_CPP_$(CURRENT_ARCH))"
XCODE_ATTRIBUTE_OTHER_CFLAGS "$(SQUISH_CFLAGS_$(CURRENT_ARCH))"
XCODE_ATTRIBUTE_SQUISH_CPP_i386 "SQUISH_USE_SSE=2"
XCODE_ATTRIBUTE_SQUISH_CFLAGS_i386 ""
XCODE_ATTRIBUTE_SQUISH_CPP_ppc "SQUISH_USE_ALTIVEC=1"
XCODE_ATTRIBUTE_SQUISH_CFLAGS_ppc "-maltivec"
)
IF (BUILD_SQUISH_EXTRA)
SET(SQUISHTEST_SRCS extra/squishtest.cpp)
ADD_EXECUTABLE(squishtest ${SQUISHTEST_SRCS})
SET_TARGET_PROPERTIES(squishtest PROPERTIES DEBUG_POSTFIX "d")
TARGET_LINK_LIBRARIES(squishtest squish)
SET(SQUISHPNG_SRCS extra/squishpng.cpp)
FIND_PACKAGE(PNG)
IF (PNG_FOUND)
SET(CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES)
INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
ADD_EXECUTABLE(squishpng ${SQUISHPNG_SRCS})
SET_TARGET_PROPERTIES(squishpng PROPERTIES DEBUG_POSTFIX "d")
TARGET_LINK_LIBRARIES(squishpng squish ${PNG_LIBRARIES})
ENDIF (PNG_FOUND)
ENDIF (BUILD_SQUISH_EXTRA)
INSTALL(
TARGETS squish
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
PUBLIC_HEADER DESTINATION include
)