CMakeLists.txt 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. # cmake build file for squish
  2. # by Stefan Roettger (snroettg@gmail.com)
  3. # updated by Simon Brown (si@sjbrown.co.uk)
  4. # features:
  5. # uses -fopenmp when available
  6. # use BUILD_SQUISH_WITH_OPENMP to override
  7. # Unix and VS: SSE2 support is enabled by default
  8. # use BUILD_SQUISH_WITH_SSE2 and BUILD_SQUISH_WITH_ALTIVEC to override
  9. CMAKE_MINIMUM_REQUIRED(VERSION 3.6.0)
  10. OPTION(BUILD_SQUISH_WITH_OPENMP "Build with OpenMP." OFF)
  11. if((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR
  12. (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64") OR
  13. (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") OR
  14. (${CMAKE_SYSTEM_PROCESSOR} MATCHES "powerpc") OR
  15. (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64") OR
  16. (${CMAKE_SYSTEM_PROCESSOR} MATCHES "s390") OR
  17. (${CMAKE_SYSTEM_PROCESSOR} MATCHES "mips"))
  18. OPTION(BUILD_SQUISH_WITH_SSE2 "Build with SSE2." OFF)
  19. else()
  20. OPTION(BUILD_SQUISH_WITH_SSE2 "Build with SSE2." ON)
  21. endif()
  22. OPTION(BUILD_SQUISH_WITH_ALTIVEC "Build with Altivec." OFF)
  23. OPTION(BUILD_SHARED_LIBS "Build shared libraries." OFF)
  24. OPTION(BUILD_SQUISH_EXTRA "Build extra source code." OFF)
  25. IF (BUILD_SQUISH_WITH_OPENMP)
  26. FIND_PACKAGE(OpenMP)
  27. IF (OPENMP_FOUND)
  28. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
  29. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
  30. ADD_DEFINITIONS(-DSQUISH_USE_OPENMP)
  31. ENDIF()
  32. ENDIF()
  33. IF (CMAKE_GENERATOR STREQUAL "Xcode")
  34. #SET(CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR})
  35. IF (BUILD_SQUISH_WITH_SSE2 AND WIN32)
  36. ADD_DEFINITIONS(-DSQUISH_USE_SSE=2)
  37. ENDIF (BUILD_SQUISH_WITH_SSE2 AND WIN32)
  38. IF (BUILD_SQUISH_WITH_SSE2 AND NOT WIN32)
  39. ADD_DEFINITIONS(-DSQUISH_USE_SSE=2 -msse2)
  40. ENDIF (BUILD_SQUISH_WITH_SSE2 AND NOT WIN32)
  41. IF (BUILD_SQUISH_WITH_ALTIVEC AND NOT WIN32)
  42. ADD_DEFINITIONS(-DSQUISH_USE_ALTIVEC=1 -maltivec)
  43. ENDIF (BUILD_SQUISH_WITH_ALTIVEC AND NOT WIN32)
  44. ENDIF (CMAKE_GENERATOR STREQUAL "Xcode")
  45. # A fix for MinGW compilation
  46. IF (BUILD_SQUISH_WITH_SSE2 AND MINGW)
  47. ADD_DEFINITIONS(-msse2)
  48. ENDIF ()
  49. SET(SQUISH_HDRS
  50. squish.h
  51. )
  52. SET(SQUISH_SRCS
  53. alpha.cpp
  54. alpha.h
  55. clusterfit.cpp
  56. clusterfit.h
  57. colourblock.cpp
  58. colourblock.h
  59. colourfit.cpp
  60. colourfit.h
  61. colourset.cpp
  62. colourset.h
  63. maths.cpp
  64. maths.h
  65. rangefit.cpp
  66. rangefit.h
  67. simd.h
  68. simd_float.h
  69. simd_sse.h
  70. simd_ve.h
  71. singlecolourfit.cpp
  72. singlecolourfit.h
  73. singlecolourlookup.inl
  74. squish.cpp
  75. )
  76. INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
  77. ADD_LIBRARY(squish ${SQUISH_SRCS} ${SQUISH_HDRS})
  78. SET_TARGET_PROPERTIES(
  79. squish PROPERTIES
  80. PUBLIC_HEADER "${SQUISH_HDRS}"
  81. VERSION 0.0
  82. SOVERSION 0.0
  83. DEBUG_POSTFIX "d"
  84. XCODE_ATTRIBUTE_GCC_PREPROCESSOR_DEFINITIONS "$(SQUISH_CPP_$(CURRENT_ARCH))"
  85. XCODE_ATTRIBUTE_OTHER_CFLAGS "$(SQUISH_CFLAGS_$(CURRENT_ARCH))"
  86. XCODE_ATTRIBUTE_SQUISH_CPP_i386 "SQUISH_USE_SSE=2"
  87. XCODE_ATTRIBUTE_SQUISH_CFLAGS_i386 ""
  88. XCODE_ATTRIBUTE_SQUISH_CPP_ppc "SQUISH_USE_ALTIVEC=1"
  89. XCODE_ATTRIBUTE_SQUISH_CFLAGS_ppc "-maltivec"
  90. )