# C M A K E L I S T S . T X T # SCL # # Copyright (c) 2010 United States Government as represented by # the U.S. Army Research Laboratory. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # 3. The name of the author may not be used to endorse or promote # products derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE # GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # ******************************************************************* # *** Tk CMakeLists.txt *** # ******************************************************************* # Minimum required version of CMake CMAKE_MINIMUM_REQUIRED(VERSION 2.8) IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0003 NEW) ENDIF(COMMAND CMAKE_POLICY) # set CMake project name PROJECT(TK) # Without Tcl libraries AND sources, we can't build Tk. Use TCL_SRC_PREFIX # and TCL_BIN_PREFIX to identify the location of the Tcl we are to use. IF(TCL_SRC_PREFIX AND TCL_BIN_PREFIX) SET(TCL_INCLUDE_DIRS ${TCL_SRC_PREFIX}/generic ${TCL_SRC_PREFIX}/libtommath) IF(WIN32) SET(TCL_INCLUDE_DIRS ${TCL_INCLUDE_DIRS} ${TCL_SRC_PREFIX}/win) ELSE(WIN32) SET(TCL_INCLUDE_DIRS ${TCL_INCLUDE_DIRS} ${TCL_SRC_PREFIX}/unix) ENDIF(WIN32) # Locate the TCL libraries. We allow these to be overridden so that a parent # build can use a CMake target instead of an actual library path. IF(NOT TCL_LIBRARY) find_library(TCL_LIBRARY tcl PATHS ${TCL_BIN_PREFIX}/lib) ENDIF(NOT TCL_LIBRARY) IF(NOT TCL_STUB_LIBRARY) find_library(TCL_STUB_LIBRARY tclstub PATHS ${TCL_BIN_PREFIX}/lib) ENDIF(NOT TCL_STUB_LIBRARY) IF(NOT TCL_LIBRARY OR NOT TCL_STUB_LIBRARY) MESSAGE(FATAL_ERROR "Could not find Tcl libraries in ${TCL_BIN_PREFIX} - please specify the parent directory for the libraries in the TCL_BIN_PREFIX variable (e.g. \${TCL_BIN_PREFIX}/lib)") ENDIF(NOT TCL_LIBRARY OR NOT TCL_STUB_LIBRARY) ELSE(TCL_SRC_PREFIX and TCL_BIN_PREFIX) MESSAGE(FATAL_ERROR "Please specify the source and library locations of Tcl using the TCL_SRC_PREFIX and TCL_BIN_PREFIX variables.") ENDIF(TCL_SRC_PREFIX AND TCL_BIN_PREFIX) MARK_AS_ADVANCED(TCL_LIBRARY) MARK_AS_ADVANCED(TCL_STUB_LIBRARY) # build shared libs by default set(BUILD_SHARED_LIBS ON) # build static libs by default set(BUILD_STATIC_LIBS ON) # version numbers SET(TK_VERSION_MAJOR 8) SET(TK_VERSION_MINOR 5) SET(TK_PATCH_LEVEL 8.5.9) SET(TK_VERSION "${TK_VERSION_MAJOR}.${TK_VERSION_MINOR}") # For Windows, we need the Resource Compiler language IF(WIN32) ENABLE_LANGUAGE(RC) ENDIF(WIN32) #--------------------------------------------------------------------- # The following logic is what allows binaries to run successfully in # the build directory AND install directory. Thanks to plplot for # identifying the necessity of setting CMAKE_INSTALL_NAME_DIR on OSX. # use, i.e. don't skip the full RPATH for the build tree SET(CMAKE_SKIP_BUILD_RPATH FALSE) # when building, don't use the install RPATH already # (but later on when installing) SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) # the RPATH/INSTALL_NAME_DIR to be used when installing if (NOT APPLE) SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib:\$ORIGIN/../lib") endif(NOT APPLE) SET(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib") # add the automatically determined parts of the RPATH which point to # directories outside the build tree to the install RPATH SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) #---------------------------------------------------------------------------- # The location in which to install Tcl. Only do this if CMAKE_INSTALL_PREFIX # hasn't been set already, to try and allow parent builds (if any) some control. IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) IF(NOT WIN32) IF ("${CMAKE_BUILD_TYPE}" MATCHES "Debug") SET(CMAKE_INSTALL_PREFIX "/usr/local/tcldev-${TCL_VERSION}") ELSE ("${CMAKE_BUILD_TYPE}" MATCHES "Debug") SET(CMAKE_INSTALL_PREFIX "/usr") ENDIF ("${CMAKE_BUILD_TYPE}" MATCHES "Debug") ENDIF(NOT WIN32) SET(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE STRING "TCL install prefix" FORCE) SET(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT 0) ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) #----------------------------------------------------------------------------- # Output directories. IF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "Single output directory for building all libraries.") ENDIF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) IF(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY) SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "Single output directory for building all archives.") ENDIF(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY) IF(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "Single output directory for building all executables.") ENDIF(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) #----------------------------------------------------------------------------- # Set CMake module path SET(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${TK_SOURCE_DIR}/CMake") #----------------------------------------------------------------------------- # Check if the compiler supports pipe - if so, use it INCLUDE(CheckCCompilerFlag) CHECK_C_COMPILER_FLAG(-pipe PIPE_COMPILER_FLAG) IF(PIPE_COMPILER_FLAG) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe") ENDIF(PIPE_COMPILER_FLAG) #----------------------------------------------------------------------------- # Tcl/Tk's normal build system uses autotools macros, referred to as the # TEA system. An attempt to duplicate the required functionality from # TEA is found in tcl.cmake INCLUDE(${TK_SOURCE_DIR}/CMake/tcl.cmake) #----------------------------------------------------------------------------- # Our replacement for SC_CONFIG_MANPAGES ADD_SUBDIRECTORY(doc) #---------------------------------------------------------------------------- # First, get some standard options out of the way - things that are constant # between various platforms or pertain to specific OS definitions add_definitions(-DPACKAGE_NAME="tk") add_definitions(-DPACKAGE_TARNAME="tk") add_definitions(-DPACKAGE_VERSION="${TK_PATCH_LEVEL}") add_definitions(-DPACKAGE_BUGREPORT="") add_definitions(-DSTDC_HEADERS=1) # We're building Tk add_definitions(-DBUILD_tk) # First, get some standard settings out of the way # Assume we have STDC_HEADERS until we meet a situation where we don't ADD_TCL_CFLAG(STDC_HEADERS) # Get the SHLIB extension from CMake add_definitions(-DTCL_SHLIB_EXT="${CMAKE_SHARED_LIBRARY_SUFFIX}") #---------------------------------------------------------------------------- # Define some platform specific flags IF(WIN32) add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ot -Oi -fp:strict -Gs -GS -GL -MD -DBUILD_tk -BUILD_ttk -DSUPPORT_CONFIG_EMBEDDED -DHAVE_UXTHEME_H=1) ENDIF(WIN32) IF(APPLE) add_definitions(-DMAC_OSX_TCL=1) INCLUDE(CMakeFindFrameworks) CMAKE_FIND_FRAMEWORKS(CoreFoundation) IF(CoreFoundation_FRAMEWORKS) SET(CoreFoundation_LIBRARIES "-framework CoreFoundation") add_definitions(-DHAVE_COREFOUNDATION=1) ENDIF(CoreFoundation_FRAMEWORKS) CMAKE_FIND_FRAMEWORKS(IOKit) IF(IOKit_FRAMEWORKS) SET(IOKit_LIBRARIES "-framework IOKit") add_definitions(-DHAVE_COREFOUNDATION=1) ENDIF(IOKit_FRAMEWORKS) ENDIF(APPLE) #---------------------------------------------------------------------------- #------------------------------------------------------------------------ # Threads support #------------------------------------------------------------------------ SC_ENABLE_THREADS() #------------------------------------------------------------------------ # Call the LINK_LIBS macro to get M_LIBRARY properly defined (TEA # doesn't do this, needs looking into...) #------------------------------------------------------------------------ SC_TCL_LINK_LIBS() #---------------------------------------------------------------------------- # 64-bit support - unlike TEA, we enable by default if the platform looks # like it's 64-bit. Can be overridden by specifying CMAKE_WORD_SIZE=32BIT #---------------------------------------------------------------------------- SC_TCL_64BIT_FLAGS() #-------------------------------------------------------------------- # Check endianness because we can optimize some operations #-------------------------------------------------------------------- IF(NOT MSVC) INCLUDE(TestBigEndian) TEST_BIG_ENDIAN(WORDS_BIGENDIAN) IF(WORDS_BIGENDIAN) add_definitions(-DWORDS_BIGENDIAN=1) ENDIF(WORDS_BIGENDIAN) ENDIF(NOT MSVC) #------------------------------------------------------------------------------ # Find out all about time handling differences. #------------------------------------------------------------------------------ SC_TIME_HANDLER() #TODO SC_BUGGY_STRTOD - Solaris 2.4 only? Do we still care? #-------------------------------------------------------------------- # Check for various typedefs and provide substitutes if # they don't exist. #-------------------------------------------------------------------- TCL_CHECK_TYPE_SIZE(mode_t MODE) TCL_CHECK_TYPE_SIZE(pid_t PID) TCL_CHECK_TYPE_SIZE(size_t SIZE) TCL_CHECK_TYPE_SIZE(uid_t UID) # The following tests may need to be more elaborate to function properly TCL_CHECK_TYPE_SIZE(socklen_t SOCKLEN sys/types.h sys/socket.h) TCL_CHECK_TYPE_SIZE(intptr_t INTPTR) TCL_CHECK_TYPE_SIZE(uintptr_t UINTPTR) IF(NOT HAVE_OPENDIR) ADD_TCL_CFLAG(USE_DIRENT2_H) ENDIF(NOT HAVE_OPENDIR) # The union wait test was for HP-UX - do we still need this? SET(UNION_WAIT_SRC " #include #include int main () { union wait x; WIFEXITED(x); /* Generates compiler error if WIFEXITED * uses an int. */ return 0; } ") CHECK_C_SOURCE_RUNS("${UNION_WAIT_SRC}" HAVE_UNION_WAIT) IF(NOT HAVE_UNION_WAIT) ADD_TCL_CFLAG(NO_UNION_WAIT) ENDIF(NOT HAVE_UNION_WAIT) #-------------------------------------------------------------------- # On Mac OS X, we can build either with X11 or with Aqua # For the moment, we don't allow enabling X11 on Windows, # eventually we may want to change that. # We support enabling only the new Cocoa backend, not the # older Carbon code #-------------------------------------------------------------------- IF(NOT WIN32) IF(APPLE) OPTION(TK_ENABLE_AQUA "Build Tk using the Aqua windowing system" OFF) IF(TK_ENABLE_AQUA) SET(TK_SYSTEM_GRAPHICS aqua) add_definitions(-DMAC_OSX_TK=1) add_definitions(-D_DARWIN_C_SOURCE=1) SET(X11_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/xlib") find_library(COCOA_FRAMEWORK Cocoa) MARK_AS_ADVANCED(COCOA_FRAMEWORK) find_library(CARBON_FRAMEWORK Carbon) MARK_AS_ADVANCED(CARBON_FRAMEWORK) SET(OPENGL_USE_AQUA ON CACHE BOOL "Building Aqua Tk" FORCE) ELSE(TK_ENABLE_AQUA) find_package(X11) SET(TK_SYSTEM_GRAPHICS x11) SET(OPENGL_USE_AQUA OFF CACHE BOOL "Building X11 Tk" FORCE) ENDIF(TK_ENABLE_AQUA) ELSE(APPLE) find_package(X11) SET(TK_SYSTEM_GRAPHICS x11) ENDIF(APPLE) ELSE(NOT WIN32) SET(TK_SYSTEM_GRAPHICS win32) ENDIF(NOT WIN32) #-------------------------------------------------------------------- # Check whether the header and library for the XScreenSaver # extension are available, and set HAVE_XSS if so. # XScreenSaver is needed for Tk_GetUserInactiveTime(). #-------------------------------------------------------------------- INCLUDE(CMakeDependentOption) CMAKE_DEPENDENT_OPTION(TK_ENABLE_XSS "Use XScreenSaver" ON "TK_SYSTEM_GRAPHICS STREQUAL x11;${X11_Xscreensaver_LIB}" OFF) #-------------------------------------------------------------------- # Check for freetype / fontconfig / Xft support. #-------------------------------------------------------------------- IF(NOT WIN32) find_package(Freetype) find_package(Fontconfig) IF(NOT FREETYPE_FOUND) SET(FREETYPE_LIBRARIES "") ENDIF(NOT FREETYPE_FOUND) IF(NOT FONTCONFIG_FOUND) SET(FONTCONFIG_LIBRARIES "") ENDIF(NOT FONTCONFIG_FOUND) ENDIF(NOT WIN32) CMAKE_DEPENDENT_OPTION(TK_ENABLE_XFT "Use freetype/fontconfig/xft" ON "TK_SYSTEM_GRAPHICS STREQUAL x11;FREETYPE_FOUND;FONTCONFIG_FOUND;X11_Xft_FOUND" OFF) #---------------------------------------------------------------------------- # signed/unsigned char - does the Tcl code still need this? See # http://lists.gnu.org/archive/html/autoconf/2008-06/msg00054.html #---------------------------------------------------------------------------- SET(unsigned_char_srcs " int main () { static int test_array [1 - 2 * !(((char) -1) < 0)]; test_array [0] = 0; return 0; } ") CHECK_C_SOURCE_RUNS("${unsigned_char_srcs}" CHAR_IS_UNSIGNED) IF(CHAR_IS_UNSIGNED) ADD_TCL_CFLAG(__CHAR_UNSIGNED__) ENDIF(CHAR_IS_UNSIGNED) SET(signed_char_srcs " int main () { signed char *p; p = 0; return 0; } ") CHECK_C_SOURCE_COMPILES("${signed_char_srcs}" HAVE_SIGNED_CHAR) IF(HAVE_SIGNED_CHAR) ADD_TCL_CFLAG(HAVE_SIGNED_CHAR) ENDIF(HAVE_SIGNED_CHAR) TCL_CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H) TCL_CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H) TCL_CHECK_INCLUDE_FILE(sys/fstatfs.h HAVE_SYS_FSTATFS_H) IF(NOT HAVE_SYS_FSTATFS_H) add_definitions(-DNO_FSTATFS=1) ENDIF(NOT HAVE_SYS_FSTATFS_H) TCL_CHECK_INCLUDE_FILE(memory.h HAVE_MEMORY_H) TCL_CHECK_INCLUDE_FILE(strings.h HAVE_STRINGS_H) TCL_CHECK_INCLUDE_FILE(inttypes.h HAVE_INTTYPES_H) TCL_CHECK_INCLUDE_FILE(stdint.h HAVE_STDINT_H) TCL_CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H) IF(${CMAKE_SYSTEM_NAME} MATCHES "^Darwin$") TCL_CHECK_FUNCTION_EXISTS(getattrlist HAVE_GETATTRLIST) TCL_CHECK_INCLUDE_FILE(copyfile.h HAVE_COPYFILE_H) TCL_CHECK_FUNCTION_EXISTS(copyfile HAVE_COPYFILE) IF(${CoreFoundation_LIBRARIES}) TCL_CHECK_INCLUDE_FILE(libkern/OSAtomic.h HAVE_LIBKERN_OSATOMIC_H) TCL_CHECK_FUNCTION_EXISTS(OSSpinLockLock HAVE_OSSPINLOCKLOCK) TCL_CHECK_FUNCTION_EXISTS(pthread_atfork HAVE_PTHREAD_ATFORK) ENDIF(${CoreFoundation_LIBRARIES}) ADD_TCL_CFLAG(USE_VFORK) add_definitions(-DTCL_DEFAULT_ENCODING="utf-8") ADD_TCL_CFLAG(TCL_LOAD_FROM_MEMORY) ADD_TCL_CFLAG(TCL_WIDE_CLICKS) TCL_CHECK_INCLUDE_FILE_USABILITY(AvailabilityMacros.h HAVE_AVAILABILITYMACROS_H) IF(HAVE_AVAILABILITYMACROS_H) SET(WEAK_IMPORT_SRCS " #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1020 #error __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1020 #endif #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1020 #error MAC_OS_X_VERSION_MIN_REQUIRED < 1020 #endif int rand(void) __attribute__((weak_import)); int main() { rand(); return 0; } ") CHECK_C_SOURCE_COMPILES("${WEAK_IMPORT_SRCS}" WEAK_IMPORT_WORKING) IF(WEAK_IMPORT_WORKING) ADD_TCL_CFLAG(HAVE_WEAK_IMPORT) ENDIF(WEAK_IMPORT_WORKING) SET(SUSV3_SRCS " #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050 #error __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050 #endif #elif MAC_OS_X_VERSION_MIN_REQUIRED < 1050 #error MAC_OS_X_VERSION_MIN_REQUIRED < 1050 #endif #define _DARWIN_C_SOURCE 1 #include int main () {return 0;} ") CHECK_C_SOURCE_COMPILES("${SUSV3_SRCS}" SUSV3_WORKING) IF(SUSV3_WORKING) ADD_TCL_CFLAG(_DARWIN_C_SOURCE) ENDIF(SUSV3_WORKING) ENDIF(HAVE_AVAILABILITYMACROS_H) ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "^Darwin$") ADD_SUBDIRECTORY(library) SET(TK_GENERIC_SRCS generic/tk3d.c generic/tkArgv.c generic/tkAtom.c generic/tkBind.c generic/tkBitmap.c generic/tkButton.c generic/tkCanvArc.c generic/tkCanvBmap.c generic/tkCanvImg.c generic/tkCanvLine.c generic/tkCanvPoly.c generic/tkCanvPs.c generic/tkCanvText.c generic/tkCanvUtil.c generic/tkCanvWind.c generic/tkCanvas.c generic/tkClipboard.c generic/tkCmds.c generic/tkColor.c generic/tkConfig.c generic/tkConsole.c generic/tkCursor.c generic/tkEntry.c generic/tkError.c generic/tkEvent.c generic/tkFocus.c generic/tkFont.c generic/tkFrame.c generic/tkGC.c generic/tkGeometry.c generic/tkGet.c generic/tkGrab.c generic/tkGrid.c generic/tkImage.c generic/tkImgBmap.c generic/tkImgGIF.c generic/tkImgPPM.c generic/tkImgPhoto.c generic/tkListbox.c generic/tkMain.c generic/tkMenu.c generic/tkMenuDraw.c generic/tkMenubutton.c generic/tkMessage.c generic/tkObj.c generic/tkOldConfig.c generic/tkOption.c generic/tkPack.c generic/tkPanedWindow.c generic/tkPlace.c generic/tkRectOval.c generic/tkScale.c generic/tkScrollbar.c generic/tkSelect.c generic/tkStubInit.c generic/tkStyle.c generic/tkText.c generic/tkTextBTree.c generic/tkTextDisp.c generic/tkTextImage.c generic/tkTextIndex.c generic/tkTextMark.c generic/tkTextTag.c generic/tkTextWind.c generic/tkTrig.c generic/tkUndo.c generic/tkUtil.c generic/tkVisual.c generic/tkWindow.c ) SET(TK_HDRS generic/tk.h generic/tkDecls.h generic/tkPlatDecls.h ) SET(TTK_SRCS generic/ttk/ttkBlink.c generic/ttk/ttkButton.c generic/ttk/ttkCache.c generic/ttk/ttkClamTheme.c generic/ttk/ttkClassicTheme.c generic/ttk/ttkDefaultTheme.c generic/ttk/ttkElements.c generic/ttk/ttkEntry.c generic/ttk/ttkFrame.c generic/ttk/ttkImage.c generic/ttk/ttkInit.c generic/ttk/ttkLabel.c generic/ttk/ttkLayout.c generic/ttk/ttkManager.c generic/ttk/ttkNotebook.c generic/ttk/ttkPanedwindow.c generic/ttk/ttkProgress.c generic/ttk/ttkScale.c generic/ttk/ttkScrollbar.c generic/ttk/ttkScroll.c generic/ttk/ttkSeparator.c generic/ttk/ttkSquare.c generic/ttk/ttkState.c generic/ttk/ttkStubInit.c generic/ttk/ttkStubLib.c generic/ttk/ttkTagSet.c generic/ttk/ttkTheme.c generic/ttk/ttkTrace.c generic/ttk/ttkTrack.c generic/ttk/ttkTreeview.c generic/ttk/ttkWidget.c ) SET(TK_STUB_SRCS generic/tkStubInit.c generic/tkStubLib.c ) SET(TTK_STUB_SRCS generic/ttk/ttkStubInit.c generic/ttk/ttkStubLib.c ) SET(TK_X11_SRCS unix/tkUnix.c unix/tkUnix3d.c unix/tkUnixButton.c unix/tkUnixColor.c unix/tkUnixConfig.c unix/tkUnixCursor.c unix/tkUnixDraw.c unix/tkUnixEmbed.c unix/tkUnixEvent.c unix/tkUnixFocus.c unix/tkUnixInit.c unix/tkUnixKey.c unix/tkUnixMenu.c unix/tkUnixMenubu.c unix/tkUnixScale.c unix/tkUnixScrlbr.c unix/tkUnixSelect.c unix/tkUnixSend.c unix/tkUnixWm.c unix/tkUnixXId.c ) IF(TK_ENABLE_XFT) SET(TK_X11_SRCS ${TK_X11_SRCS} unix/tkUnixRFont.c) ELSE(TK_ENABLE_XFT) SET(TK_X11_SRCS ${TK_X11_SRCS} unix/tkUnixFont.c) ENDIF(TK_ENABLE_XFT) SET(TK_AQUA_SRCS macosx/tkMacOSXBitmap.c macosx/tkMacOSXButton.c macosx/tkMacOSXClipboard.c macosx/tkMacOSXColor.c macosx/tkMacOSXConfig.c macosx/tkMacOSXCursor.c macosx/tkMacOSXDebug.c macosx/tkMacOSXDialog.c macosx/tkMacOSXDraw.c macosx/tkMacOSXEmbed.c macosx/tkMacOSXEntry.c macosx/tkMacOSXEvent.c macosx/tkMacOSXFont.c macosx/tkMacOSXHLEvents.c macosx/tkMacOSXInit.c macosx/tkMacOSXKeyboard.c macosx/tkMacOSXKeyEvent.c macosx/tkMacOSXMenu.c macosx/tkMacOSXMenubutton.c macosx/tkMacOSXMenus.c macosx/tkMacOSXMouseEvent.c macosx/tkMacOSXNotify.c macosx/tkMacOSXRegion.c macosx/tkMacOSXScrlbr.c macosx/tkMacOSXSend.c macosx/tkMacOSXSubwindows.c macosx/tkMacOSXTest.c macosx/tkMacOSXWindowEvent.c macosx/tkMacOSXWm.c macosx/tkMacOSXXStubs.c macosx/tkMacOSXCarbonEvents.c generic/tkFileFilter.c generic/tkMacWinMenu.c generic/tkPointer.c unix/tkUnix3d.c unix/tkUnixScale.c xlib/xcolors.c xlib/xdraw.c xlib/xgc.c xlib/ximage.c xlib/xutil.c generic/ttk/ttkMacOSXTheme.c ) SET(TK_WIN_SRCS xlib/xcolors.c xlib/xdraw.c xlib/xgc.c xlib/ximage.c xlib/xutil.c win/stubs.c win/rc/tk.rc generic/tkFileFilter.c generic/tkMacWinMenu.c generic/tkPointer.c generic/tkImgUtil.c unix/tkUnixMenubu.c unix/tkUnixScale.c win/tkWin32Dll.c win/tkWin3d.c win/tkWinButton.c win/tkWinClipboard.c win/tkWinColor.c win/tkWinConfig.c win/tkWinCursor.c win/tkWinDialog.c win/tkWinDraw.c win/tkWinEmbed.c win/tkWinFont.c win/tkWinImage.c win/tkWinInit.c win/tkWinKey.c win/tkWinMenu.c win/tkWinPixmap.c win/tkWinPointer.c win/tkWinRegion.c win/tkWinScrlbr.c win/tkWinSend.c win/tkWinSendCom.c win/tkWinTest.c win/tkWinWindow.c win/tkWinWm.c win/tkWinX.c win/ttkWinMonitor.c win/ttkWinTheme.c win/ttkWinXPTheme.c ) SET(TK_SRCS ${TK_GENERIC_SRCS} ${TTK_SRCS}) IF(WIN32) SET(TK_SRCS ${TK_SRCS} ${TK_WIN_SRCS}) ELSE(WIN32) IF(TK_ENABLE_AQUA) SET(TK_SRCS ${TK_SRCS} ${TK_AQUA_SRCS}) ELSE(TK_ENABLE_AQUA) SET(TK_SRCS ${TK_SRCS} ${TK_X11_SRCS}) ENDIF(TK_ENABLE_AQUA) ENDIF(WIN32) SET(TK_INCLUDE_PATH ${TK_SOURCE_DIR}/generic ${TK_SOURCE_DIR}/bitmaps ${TK_BINARY_DIR}/include) IF(WIN32) SET(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${TK_SOURCE_DIR}/win ${TK_SOURCE_DIR}/xlib ${TK_SOURCE_DIR}/xlib/X11) ELSE(WIN32) SET(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${TK_SOURCE_DIR}/unix) IF(APPLE) SET(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${TK_SOURCE_DIR}/macosx) IF(TK_ENABLE_AQUA) SET(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${X11_INCLUDE_DIR}) ENDIF(TK_ENABLE_AQUA) ENDIF(APPLE) ENDIF(WIN32) IF(NOT WIN32) SET(WISH_SRCS unix/tkAppInit.c) ELSE(NOT WIN32) SET(WISH_SRCS win/winMain.c)# win/rc/wish.rc) ENDIF(NOT WIN32) IF(X11_INCLUDE_DIR) SET(TK_X11_INCLUDE_DIRS ${TK_X11_INCLUDE_DIRS} ${X11_INCLUDE_DIR}) ENDIF(X11_INCLUDE_DIR) IF(X11_Xft_INCLUDE_PATH) SET(TK_X11_INCLUDE_DIRS ${TK_X11_INCLUDE_DIRS} ${X11_Xft_INCLUDE_PATH}) ENDIF(X11_Xft_INCLUDE_PATH) IF(X11_Xrender_INCLUDE_PATH) SET(TK_X11_INCLUDE_DIRS ${TK_X11_INCLUDE_DIRS} ${X11_Xrender_INCLUDE_PATH}) ENDIF(X11_Xrender_INCLUDE_PATH) IF(X11_Xscreensaver_INCLUDE_PATH) SET(TK_X11_INCLUDE_DIRS ${TK_X11_INCLUDE_DIRS} ${X11_Xscreensaver_INCLUDE_PATH}) ENDIF(X11_Xscreensaver_INCLUDE_PATH) include_directories( ${TCL_INCLUDE_DIRS} ${TK_INCLUDE_PATH} ${TK_X11_INCLUDE_DIRS} ${FREETYPE_INCLUDE_DIRS} ) SET(X11_TK_LIBS ${X11_X11_LIB} ${X11_Xext_LIB}) IF(TK_ENABLE_XSS) IF(X11_Xscreensaver_LIB) SET(X11_TK_LIBS ${X11_TK_LIBS} ${X11_Xscreensaver_LIB}) ENDIF(X11_Xscreensaver_LIB) ENDIF(TK_ENABLE_XSS) IF(X11_Xft_LIB) SET(X11_TK_LIBS ${X11_TK_LIBS} ${X11_Xft_LIB}) ENDIF(X11_Xft_LIB) IF(X11_Xrender_LIB) SET(X11_TK_LIBS ${X11_TK_LIBS} ${X11_Xrender_LIB}) ENDIF(X11_Xrender_LIB) IF(NOT LIB_DIR) SET(LIB_DIR lib) ENDIF(NOT LIB_DIR) IF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${LIB_DIR}) ENDIF(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) add_library(tkstub STATIC ${TK_STUB_SRCS} ${TTK_STUB_SRCS}) SET_TARGET_PROPERTIES(tkstub PROPERTIES COMPILE_FLAGS "-fPIC") install(TARGETS tkstub RUNTIME DESTINATION ${BIN_DIR} LIBRARY DESTINATION ${LIB_DIR} ARCHIVE DESTINATION ${LIB_DIR}) SET_PROPERTY(TARGET tkstub APPEND PROPERTY COMPILE_DEFINITIONS USE_TCL_STUBS) add_library(tk ${TK_SRCS}) IF(WIN32) target_link_libraries(tk tkstub ${TCL_STUB_LIBRARY} ${TCL_THREADS_LIB} ${X11_TK_LIBS} ${FREETYPE_LIBRARIES} ${FONTCONFIG_LIBRARIES}) ELSE(WIN32) target_link_libraries(tk tkstub ${TCL_STUB_LIBRARY} ${TCL_THREADS_LIB} ${CoreFoundation_LIBRARIES} ${CARBON_FRAMEWORK} ${COCOA_FRAMEWORK} ${IOKit_LIBRARIES} ${X11_TK_LIBS} ${FREETYPE_LIBRARIES} ${FONTCONFIG_LIBRARIES} ${M_LIBRARY}) ENDIF(WIN32) install(TARGETS tk RUNTIME DESTINATION ${BIN_DIR} LIBRARY DESTINATION ${LIB_DIR} ARCHIVE DESTINATION ${LIB_DIR}) SET_TARGET_PROPERTIES(tk PROPERTIES VERSION ${TK_VERSION} SOVERSION ${TK_VERSION_MAJOR}.${TK_VERSION_MINOR}) SET_PROPERTY(TARGET tk APPEND PROPERTY COMPILE_DEFINITIONS USE_TCL_STUBS) IF(TK_ENABLE_AQUA) SET_PROPERTY(TARGET tk APPEND PROPERTY COMPILE_FLAGS "-std=gnu99 -x objective-c -fobjc-gc") ENDIF(TK_ENABLE_AQUA) TCL_PKGINDEX(tk Tk ${TK_PATCH_LEVEL}) install(FILES ${TK_HDRS} DESTINATION include) IF(WIN32) add_executable(wish WIN32 ${WISH_SRCS}) target_link_libraries(wish tcl tk imm32.lib comctl32.lib) ELSE(WIN32) add_executable(wish ${WISH_SRCS}) target_link_libraries(wish ${TCL_LIBRARY} tk ${CoreFoundation_LIBRARIES} ${CARBON_FRAMEWORK} ${COCOA_FRAMEWORK} ${IOKit_LIBRARIES} ${TCL_THREADS_LIB} ${M_LIBRARY} ${X11_TK_LIBS} ${FREETYPE_LIBRARIES} ${FONTCONFIG_LIBRARIES}) IF(TK_ENABLE_AQUA) SET_PROPERTY(TARGET wish APPEND PROPERTY COMPILE_FLAGS "-std=gnu99 -x objective-c -fobjc-gc") ENDIF(TK_ENABLE_AQUA) ENDIF(WIN32) SET_TARGET_PROPERTIES(wish PROPERTIES VERSION ${TK_VERSION_MAJOR}.${TK_VERSION_MINOR}) install(TARGETS wish DESTINATION bin) if(CMAKE_CONFIGURATION_TYPES) foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER) FILE(COPY generic/prolog.ps DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CFG_TYPE_UPPER}}/tk${TK_VERSION_MAJOR}.${TK_VERSION_MINOR}) endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES}) else(CMAKE_CONFIGURATION_TYPES) FILE(COPY generic/prolog.ps DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/tk${TK_VERSION_MAJOR}.${TK_VERSION_MINOR}) endif(CMAKE_CONFIGURATION_TYPES) INSTALL(FILES generic/prolog.ps DESTINATION lib/tk${TK_VERSION_MAJOR}.${TK_VERSION_MINOR}) IF(NOT WIN32) FILE(COPY unix/tkAppInit.c DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/tk${TK_PATCH_LEVEL}) foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER) FILE(COPY unix/tkAppInit.c DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY_${CFG_TYPE_UPPER}}/tk${TK_PATCH_LEVEL}) endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES}) INSTALL(FILES unix/tkAppInit.c DESTINATION lib/tk${TK_PATCH_LEVEL}) ENDIF(NOT WIN32)