|
| 1 | +CMAKE_MINIMUM_REQUIRED(VERSION 2.8) |
| 2 | + |
| 3 | +## =========================================================================== |
| 4 | +## Project Information |
| 5 | +## =========================================================================== |
| 6 | +PROJECT ( tksvg ) |
| 7 | +## Package version information. |
| 8 | +SET ( PKG_NAME ${PROJECT_NAME} ) |
| 9 | +set ( PKG_TARGET_LIB_NAME ${PROJECT_NAME} ) |
| 10 | +SET ( PKG_MAJOR_VERSION 0 ) |
| 11 | +SET ( PKG_MINOR_VERSION 7 ) |
| 12 | +SET ( PKG_BUILD_VERSION 0 ) |
| 13 | +SET ( PKG_VERSION "${PKG_MAJOR_VERSION}.${PKG_MINOR_VERSION}" ) |
| 14 | +SET ( PKG_NAME_VERSION ${PKG_NAME}-${PKG_VERSION} ) |
| 15 | +SET ( PKG_VENDOR "RedFantom" ) |
| 16 | +SET ( PKG_HOME_DIR ${PROJECT_SOURCE_DIR} ) |
| 17 | +SET ( NO_MSVCRT ON ) |
| 18 | + |
| 19 | +SET ( PKG_SOURCES |
| 20 | + generic/nanosvg.h |
| 21 | + generic/nanosvgrast.h |
| 22 | + generic/tkImgSVG.c) |
| 23 | + |
| 24 | +MESSAGE ( STATUS "===========================================================" ) |
| 25 | +MESSAGE ( STATUS " Welcome to the ${PKG_NAME} ${PKG_VERSION} build system!" ) |
| 26 | +MESSAGE ( STATUS " * Selected generator: ${CMAKE_GENERATOR}" ) |
| 27 | +MESSAGE ( STATUS " * Operating System ID: " |
| 28 | + ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}-${CMAKE_SYSTEM_PROCESSOR} ) |
| 29 | +MESSAGE ( STATUS " * Installation Directory: " ${CMAKE_INSTALL_PREFIX} ) |
| 30 | +MESSAGE ( STATUS "===========================================================" ) |
| 31 | + |
| 32 | +## =========================================================================== |
| 33 | +## Locate Tcl/Tk |
| 34 | +## =========================================================================== |
| 35 | +MESSAGE(STATUS "Searching for Tcl/Tk...") |
| 36 | +FIND_PACKAGE(TCL REQUIRED) |
| 37 | +FIND_PACKAGE(TclStub REQUIRED) |
| 38 | +MESSAGE(STATUS " TCL_TCLSH: " ${TCL_TCLSH}) |
| 39 | +MESSAGE(STATUS " TCL_INCLUDE_PATH: " ${TCL_INCLUDE_PATH}) |
| 40 | +MESSAGE(STATUS " TCL_STUB_LIBRARY: " ${TCL_STUB_LIBRARY}) |
| 41 | +MESSAGE(STATUS " TCL_LIBRARY: " ${TCL_LIBRARY}) |
| 42 | +MESSAGE(STATUS " TK_WISH: " ${TK_WISH}) |
| 43 | +MESSAGE(STATUS " TK_INCLUDE_PATH: " ${TK_INCLUDE_PATH}) |
| 44 | +MESSAGE(STATUS " TK_STUB_LIBRARY: " ${TK_STUB_LIBRARY}) |
| 45 | +MESSAGE(STATUS " TTK_STUB_LIBRARY: " ${TTK_STUB_LIBRARY}) |
| 46 | +MESSAGE(STATUS " TK_LIBRARY: " ${TK_LIBRARY}) |
| 47 | +# STRING ( REPLACE stub "" TCL_LIBRARY_STATIC ${TCL_STUB_LIBRARY} ) |
| 48 | +# STRING ( REPLACE stub "" TK_LIBRARY_STATIC ${TK_STUB_LIBRARY} ) |
| 49 | +# MESSAGE ( STATUS " TCL_LIBRARY_STATIC: " ${TCL_LIBRARY_STATIC} ) |
| 50 | +# MESSAGE ( STATUS " TK_LIBRARY_STATIC: " ${TK_LIBRARY_STATIC} ) |
| 51 | + |
| 52 | +IF ( WIN32 AND NO_MSVCRT ) |
| 53 | + STRING ( REPLACE /MD /MT CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE} ) |
| 54 | + STRING ( REPLACE /MDd /MTd CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG} ) |
| 55 | + STRING ( REPLACE /MD /MT CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) |
| 56 | + STRING ( REPLACE /MDd /MTd CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} ) |
| 57 | + # SET ( CMAKE_EXE_LINKER_FLAGS |
| 58 | + # "${CMAKE_EXE_LINKER_FLAGS} /nodefaultlib:MSVCRT.LIB" ) |
| 59 | + SET ( CMAKE_EXE_LINKER_FLAGS_RELEASE |
| 60 | + "${CMAKE_EXE_LINKER_FLAGS_RELEASE} LIBCMT.LIB" ) |
| 61 | + SET ( CMAKE_EXE_LINKER_FLAGS_DEBUG |
| 62 | + "${CMAKE_EXE_LINKER_FLAGS_DEBUG} LIBCMTD.LIB" ) |
| 63 | + # SET ( CMAKE_SHARED_LINKER_FLAGS |
| 64 | + # "${CMAKE_SHARED_LINKER_FLAGS} /nodefaultlib:MSVCRT.LIB" ) |
| 65 | + SET ( CMAKE_SHARED_LINKER_FLAGS_RELEASE |
| 66 | + "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} LIBCMT.LIB" ) |
| 67 | + SET ( CMAKE_SHARED_LINKER_FLAGS_DEBUG |
| 68 | + "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} |
| 69 | + /nodefaultlib:LIBCMT.LIB LIBCMTD.LIB" ) |
| 70 | + ADD_DEFINITIONS ( -D_STATIC_CPPLIB ) |
| 71 | + ADD_DEFINITIONS ( -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 ) |
| 72 | + ADD_DEFINITIONS ( -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1 ) |
| 73 | +ENDIF ( WIN32 AND NO_MSVCRT ) |
| 74 | + |
| 75 | +IF ( WIN32 ) |
| 76 | + ADD_DEFINITIONS ( -DWIN32 ) |
| 77 | + ADD_DEFINITIONS ( -D_WIN32 ) |
| 78 | + ADD_DEFINITIONS ( -D_WINDOWS ) |
| 79 | + ADD_DEFINITIONS ( -D__WIN32__ ) |
| 80 | + SET ( CMAKE_SHARED_LIBRARY_PREFIX lib ) |
| 81 | +ENDIF ( WIN32 ) |
| 82 | + |
| 83 | +IF ( CMAKE_BUILD_TYPE STREQUAL Debug ) |
| 84 | + ADD_DEFINITIONS ( -DGTTK_SYNCHRONIZE ) |
| 85 | + ADD_DEFINITIONS ( -DGTTK_VERBOSE_XERROR_HANDLER ) |
| 86 | +ENDIF ( CMAKE_BUILD_TYPE STREQUAL Debug ) |
| 87 | +ADD_DEFINITIONS ( -DGTTK_INSTALL_XERROR_HANDLER ) |
| 88 | +ADD_DEFINITIONS ( -DUSE_TCL_STUBS ) |
| 89 | +ADD_DEFINITIONS ( -DUSE_TK_STUBS ) |
| 90 | +ADD_DEFINITIONS ( -DUSE_TTK_STUBS ) |
| 91 | +ADD_DEFINITIONS ( -DPACKAGE_NAME="${PKG_NAME}" ) |
| 92 | +ADD_DEFINITIONS ( -DPACKAGE_VERSION="${PKG_VERSION}" ) |
| 93 | +INCLUDE_DIRECTORIES ( ${TCL_INCLUDE_PATH} ) |
| 94 | +INCLUDE_DIRECTORIES ( ${TK_INCLUDE_PATH} ) |
| 95 | +INCLUDE_DIRECTORIES ( ${TK_INCLUDE_PATH}/tk-private/generic/ttk ) |
| 96 | +IF ( WIN32 ) # Include additional directories for MSYS build |
| 97 | + INCLUDE_DIRECTORIES ( ${TK_INCLUDE_PATH}/tk8.6/tk-private/generic ) |
| 98 | + INCLUDE_DIRECTORIES ( ${TK_INCLUDE_PATH}/tk8.6/tk-private/generic/ttk ) |
| 99 | + INCLUDE_DIRECTORIES ( ${TK_INCLUDE_PATH}/tk8.6/tk-private/win ) |
| 100 | +ENDIF ( WIN32 ) |
| 101 | +INCLUDE_DIRECTORIES ( ${PROJECT_SOURCE_DIR}/generic ) |
| 102 | + |
| 103 | +## =========================================================================== |
| 104 | +## Target: tksvg shared library |
| 105 | +## =========================================================================== |
| 106 | +MESSAGE ( STATUS "===========================================================" ) |
| 107 | +MESSAGE ( STATUS " ++++ Shared Library: ${PKG_TARGET_LIB_NAME} ++++" ) |
| 108 | +MESSAGE ( STATUS "===========================================================" ) |
| 109 | +ADD_LIBRARY ( ${PKG_TARGET_LIB_NAME} SHARED ${PKG_SOURCES} ) |
| 110 | +TARGET_LINK_LIBRARIES ( ${PKG_TARGET_LIB_NAME} ${TCL_STUB_LIBRARY} ) |
| 111 | +TARGET_LINK_LIBRARIES ( ${PKG_TARGET_LIB_NAME} ${TK_STUB_LIBRARY} ) |
| 112 | +IF ( TTK_STUB_LIBRARY ) |
| 113 | + TARGET_LINK_LIBRARIES ( ${PKG_TARGET_LIB_NAME} ${TTK_STUB_LIBRARY} ) |
| 114 | +ENDIF ( TTK_STUB_LIBRARY ) |
| 115 | +# IF ( TCL_LIBRARY_STATIC ) |
| 116 | +# TARGET_LINK_LIBRARIES ( ${PKG_TARGET_LIB_NAME} ${TCL_LIBRARY_STATIC} ) |
| 117 | +# ENDIF ( TCL_LIBRARY_STATIC ) |
| 118 | +# IF ( TK_LIBRARY_STATIC ) |
| 119 | +# TARGET_LINK_LIBRARIES ( ${PKG_TARGET_LIB_NAME} ${TK_LIBRARY_STATIC} ) |
| 120 | +# ENDIF ( TK_LIBRARY_STATIC ) |
| 121 | + |
| 122 | +FILE ( WRITE tksvg/pkgIndex.tcl |
| 123 | + "package ifneeded tksvg ${PKG_VERSION} \\ |
| 124 | + [list load [file join $dir lib${PKG_NAME}[info sharedlibextension]] tksvg]" ) |
| 125 | + |
| 126 | +SET ( LIBRARY_OUTPUT_PATH ${PKG_TARGET_LIB_NAME} ) |
| 127 | +INSTALL ( TARGETS ${PKG_TARGET_LIB_NAME} |
| 128 | + RUNTIME DESTINATION ${PKG_TARGET_LIB_NAME} |
| 129 | + LIBRARY DESTINATION ${PKG_TARGET_LIB_NAME} |
| 130 | + ARCHIVE DESTINATION ${PKG_TARGET_LIB_NAME} ) |
| 131 | +INSTALL ( FILES tksvg/pkgIndex.tcl DESTINATION ${PKG_TARGET_LIB_NAME} ) |
0 commit comments