| ######################################################################## |
| # CMake build script for Google Typography sfntly. |
| cmake_minimum_required(VERSION 2.6.2) |
| set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "good configs" FORCE) |
| set(CMAKE_LEGACY_CYGWIN_WIN32 0) |
| |
| project(sfntly) |
| |
| # For gcc, make the default be debug build and valgrind friendly. |
| if(CMAKE_COMPILER_IS_GNUCXX) |
| if(NOT CMAKE_BUILD_TYPE) |
| set(CMAKE_BUILD_TYPE Debug) |
| add_definitions("-DDEBUG -D_DEBUG -g -fno-inline -fno-omit-frame-pointer -fno-builtin") |
| endif(NOT CMAKE_BUILD_TYPE) |
| endif(CMAKE_COMPILER_IS_GNUCXX) |
| |
| set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) |
| set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin) |
| include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src ext/gtest/include ext/gtest |
| ${CMAKE_CURRENT_SOURCE_DIR}/src/sample ${CMAKE_CURRENT_SOURCE_DIR}/src/sample/subtly) |
| |
| # The following simulates Chrome compilation flags |
| add_definitions(-DSFNTLY_NO_EXCEPTION) |
| if(CMAKE_COMPILER_IS_GNUCXX) |
| add_definitions(-D__wur=__attribute__\(\(warn_unused_result\)\) -Wall -Werror -fno-exceptions) |
| endif(CMAKE_COMPILER_IS_GNUCXX) |
| |
| # Use STL for TinyXML library |
| add_definitions(-DTIXML_USE_STL) |
| |
| # Enable CMap and Bitmap handling |
| add_definitions(-DSFNTLY_EXPERIMENTAL) |
| |
| # VC specific flags |
| if(MSVC10 OR MSVC90) |
| set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi /nologo /W4 /WX /O2 /Ob2 /Oy /GF /Gm- /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /GR-") |
| set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Zi /nologo /W4 /WX /Od /Oy- /RTC1 /MTd /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /GR-") |
| add_definitions(-D_UNICODE -DUNICODE) |
| include_directories(${CMAKE_CURRENT_SOURCE_DIR}/ext/icu/include) |
| link_directories(${CMAKE_CURRENT_SOURCE_DIR}/ext/icu/lib) |
| endif(MSVC10 OR MSVC90) |
| |
| file(GLOB SFNTLY_CORE_FILES src/sfntly/*.h src/sfntly/*.cc) |
| file(GLOB SFNTLY_PORT_FILES src/sfntly/port/*.h src/sfntly/port/*.cc) |
| file(GLOB SFNTLY_DATA_FILES src/sfntly/data/*.h src/sfntly/data/*.cc) |
| file(GLOB SFNTLY_MATH_FILES src/sfntly/math/*.h src/sfntly/math/*.cc) |
| file(GLOB SFNTLY_TABLE_COMMON_FILES src/sfntly/table/*.h src/sfntly/table/*.cc) |
| file(GLOB SFNTLY_TABLE_BITMAP_FILES src/sfntly/table/bitmap/*.h src/sfntly/table/bitmap/*.cc) |
| file(GLOB SFNTLY_TABLE_CORE_FILES src/sfntly/table/core/*.h src/sfntly/table/core/*.cc) |
| file(GLOB SFNTLY_TABLE_TTF_FILES src/sfntly/table/truetype/*.h src/sfntly/table/truetype/*.cc) |
| source_group(core FILES ${SFNTLY_CORE_FILES}) |
| source_group(ports FILES ${SFNTLY_PORT_FILES}) |
| source_group(data FILES ${SFNTLY_DATA_FILES}) |
| source_group(math FILES ${SFNTLY_MATH_FILES}) |
| source_group(table FILES ${SFNTLY_TABLE_COMMON_FILES}) |
| source_group(table\\bitmap FILES ${SFNTLY_TABLE_BITMAP_FILES}) |
| source_group(table\\core FILES ${SFNTLY_TABLE_CORE_FILES}) |
| source_group(table\\truetype FILES ${SFNTLY_TABLE_TTF_FILES}) |
| add_library(sfntly |
| ${SFNTLY_CORE_FILES} |
| ${SFNTLY_PORT_FILES} |
| ${SFNTLY_DATA_FILES} |
| ${SFNTLY_MATH_FILES} |
| ${SFNTLY_TABLE_COMMON_FILES} |
| ${SFNTLY_TABLE_BITMAP_FILES} |
| ${SFNTLY_TABLE_CORE_FILES} |
| ${SFNTLY_TABLE_TTF_FILES}) |
| file(GLOB_RECURSE SIMPLE_SUBSETTER src/sample/subsetter/*.h src/sample/subsetter/*.cc |
| src/sfntly/tools/*.h src/sfntly/tools/*.cc) |
| add_executable(subsetter ${SIMPLE_SUBSETTER}) |
| target_link_libraries(subsetter sfntly icuuc) |
| if(CMAKE_COMPILER_IS_GNUCXX) |
| target_link_libraries(subsetter pthread) |
| endif(CMAKE_COMPILER_IS_GNUCXX) |
| file(GLOB TINYXML src/test/tinyxml/*.cpp) |
| add_library(tinyxml |
| ${TINYXML}) |
| file(GLOB TEST_CASES src/test/*.cc src/test/autogenerated/*.cc) |
| file(GLOB CHROME_SUBSETTER_LIB |
| src/sample/chromium/subsetter_impl.h |
| src/sample/chromium/subsetter_impl.cc |
| src/sample/chromium/font_subsetter.cc |
| src/sample/chromium/font_subsetter.h) |
| add_executable(unit_test |
| ${TEST_CASES} ${CHROME_SUBSETTER_LIB} |
| ext/gtest/src/gtest-all.cc |
| ext/gtest/src/gtest_main.cc) |
| target_link_libraries(unit_test sfntly icuuc tinyxml) |
| if(CMAKE_COMPILER_IS_GNUCXX) |
| target_link_libraries(unit_test pthread) |
| endif(CMAKE_COMPILER_IS_GNUCXX) |
| # subtly targets |
| file(GLOB SUBTLY_FILES src/sample/subtly/*.h src/sample/subtly/*.cc) |
| file(GLOB SUBTLY_MAINS src/sample/subtly/*main.cc) |
| list(REMOVE_ITEM SUBTLY_FILES ${SUBTLY_MAINS}) |
| add_library(subtly |
| ${SUBTLY_FILES}) |
| add_executable(subtly_subsetter |
| src/sample/subtly/subsetter_main.cc) |
| target_link_libraries(subtly_subsetter subtly sfntly icuuc) |
| if(CMAKE_COMPILER_IS_GNUCXX) |
| target_link_libraries(subtly_subsetter pthread) |
| endif(CMAKE_COMPILER_IS_GNUCXX) |
| add_executable(subtly_merger |
| src/sample/subtly/merger_main.cc) |
| target_link_libraries(subtly_merger subtly sfntly icuuc) |
| if(CMAKE_COMPILER_IS_GNUCXX) |
| target_link_libraries(subtly_merger pthread) |
| endif(CMAKE_COMPILER_IS_GNUCXX) |
| add_executable(subtly_debug |
| src/sample/subtly/debug_main.cc) |
| target_link_libraries(subtly_debug subtly sfntly icuuc) |
| if(CMAKE_COMPILER_IS_GNUCXX) |
| target_link_libraries(subtly_debug pthread) |
| endif(CMAKE_COMPILER_IS_GNUCXX) |
| add_executable(chrome_subsetter |
| ${CHROME_SUBSETTER_LIB} |
| src/sample/chromium/chrome_subsetter.cc |
| ) |
| target_link_libraries(chrome_subsetter sfntly icuuc) |
| if(CMAKE_COMPILER_IS_GNUCXX) |
| target_link_libraries(chrome_subsetter pthread) |
| endif(CMAKE_COMPILER_IS_GNUCXX) |