diff --git a/CMakeDCompiler.cmake.in b/CMakeDCompiler.cmake.in new file mode 100644 index 0000000..129a520 --- /dev/null +++ b/CMakeDCompiler.cmake.in @@ -0,0 +1,31 @@ +SET(CMAKE_D_COMPILER "@CMAKE_D_COMPILER@") +SET(CMAKE_D_COMPILER_ARG1 "@CMAKE_D_COMPILER_ARG1@") +SET(CMAKE_AR "@CMAKE_AR@") +SET(CMAKE_RANLIB "@CMAKE_RANLIB@") +SET(CMAKE_COMPILER_IS_GDC @CMAKE_COMPILER_IS_GDC@) +SET(CMAKE_COMPILER_IS_DMD @CMAKE_COMPILER_IS_DMD@) +SET(CMAKE_D_COMPILER_LOADED 1) +SET(CMAKE_COMPILER_IS_MINGW @CMAKE_COMPILER_IS_MINGW@) +SET(CMAKE_COMPILER_IS_CYGWIN @CMAKE_COMPILER_IS_CYGWIN@) +IF(CMAKE_COMPILER_IS_CYGWIN) + SET(CYGWIN 1) + SET(UNIX 1) +ENDIF(CMAKE_COMPILER_IS_CYGWIN) + +SET(CMAKE_D_COMPILER_ENV_VAR "DC") + +IF(CMAKE_COMPILER_IS_MINGW) + SET(MINGW 1) +ENDIF(CMAKE_COMPILER_IS_MINGW) +SET(CMAKE_COMPILER_IS_GDC_RUN 1) +SET(CMAKE_D_SOURCE_FILE_EXTENSIONS d) +SET(CMAKE_D_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +SET(CMAKE_D_LINKER_PREFERENCE None) +IF(UNIX) + SET(CMAKE_D_OUTPUT_EXTENSION .o) +ELSE(UNIX) + SET(CMAKE_D_OUTPUT_EXTENSION .obj) +ENDIF(UNIX) +# save the size of void* in case where cache is removed +# and the this file is still around +#SET(CMAKE_SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@) diff --git a/CMakeDInformation.cmake b/CMakeDInformation.cmake new file mode 100644 index 0000000..68de1b0 --- /dev/null +++ b/CMakeDInformation.cmake @@ -0,0 +1,138 @@ +# This file sets the basic flags for the D language in CMake. +# It also loads the available platform file for the system-compiler +# if it exists. + +GET_FILENAME_COMPONENT(CMAKE_BASE_NAME ${CMAKE_D_COMPILER} NAME_WE) +IF(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_BASE_NAME gdc) +ELSE(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_BASE_NAME dmd) +ENDIF(CMAKE_COMPILER_IS_GDC) +SET(CMAKE_SYSTEM_AND_D_COMPILER_INFO_FILE + ${CMAKE_ROOT}/Modules/Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME}.cmake) +INCLUDE(Platform/${CMAKE_SYSTEM_NAME}-${CMAKE_BASE_NAME} OPTIONAL) + +# This should be included before the _INIT variables are +# used to initialize the cache. Since the rule variables +# have if blocks on them, users can still define them here. +# But, it should still be after the platform file so changes can +# be made to those values. + +IF(CMAKE_USER_MAKE_RULES_OVERRIDE) + INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE}) +ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE) + +IF(CMAKE_USER_MAKE_RULES_OVERRIDE_D) + INCLUDE(${CMAKE_USER_MAKE_RULES_OVERRIDE_D}) +ENDIF(CMAKE_USER_MAKE_RULES_OVERRIDE_D) + + +# for most systems a module is the same as a shared library +# so unless the variable CMAKE_MODULE_EXISTS is set just +# copy the values from the LIBRARY variables +IF(NOT CMAKE_MODULE_EXISTS) + SET(CMAKE_SHARED_MODULE_D_FLAGS ${CMAKE_SHARED_LIBRARY_D_FLAGS}) + SET(CMAKE_SHARED_MODULE_CREATE_D_FLAGS ${CMAKE_SHARED_LIBRARY_CREATE_D_FLAGS}) +ENDIF(NOT CMAKE_MODULE_EXISTS) + +SET (CMAKE_D_FLAGS "$ENV{CFLAGS} ${CMAKE_D_FLAGS_INIT}" CACHE STRING + "Flags for D compiler.") + +IF(NOT CMAKE_NOT_USING_CONFIG_FLAGS) +# default build type is none + IF(NOT CMAKE_NO_BUILD_TYPE) + SET (CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE_INIT} CACHE STRING + "Choose the type of build, options are: None(CMAKE_D_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.") + ENDIF(NOT CMAKE_NO_BUILD_TYPE) + SET (CMAKE_D_FLAGS_DEBUG "${CMAKE_D_FLAGS_DEBUG_INIT}" CACHE STRING + "Flags used by the compiler during debug builds.") + SET (CMAKE_D_FLAGS_MINSIZEREL "${CMAKE_D_FLAGS_MINSIZEREL_INIT}" CACHE STRING + "Flags used by the compiler during release minsize builds.") + SET (CMAKE_D_FLAGS_RELEASE "${CMAKE_D_FLAGS_RELEASE_INIT}" CACHE STRING + "Flags used by the compiler during release builds (/MD /Ob1 /Oi /Ot /Oy /Gs will produce slightly less optimized but smaller files).") + SET (CMAKE_D_FLAGS_RELWITHDEBINFO "${CMAKE_D_FLAGS_RELWITHDEBINFO_INIT}" CACHE STRING + "Flags used by the compiler during Release with Debug Info builds.") +ENDIF(NOT CMAKE_NOT_USING_CONFIG_FLAGS) + +IF(CMAKE_D_STANDARD_LIBRARIES_INIT) + SET(CMAKE_D_STANDARD_LIBRARIES "${CMAKE_D_STANDARD_LIBRARIES_INIT}" + CACHE STRING "Libraries linked by defalut with all D applications.") + MARK_AS_ADVANCED(CMAKE_D_STANDARD_LIBRARIES) +ENDIF(CMAKE_D_STANDARD_LIBRARIES_INIT) + +INCLUDE(CMakeCommonLanguageInclude) + +# now define the following rule variables + +# CMAKE_D_CREATE_SHARED_LIBRARY +# CMAKE_D_CREATE_SHARED_MODULE +# CMAKE_D_CREATE_STATIC_LIBRARY +# CMAKE_D_COMPILE_OBJECT +# CMAKE_D_LINK_EXECUTABLE + +# variables supplied by the generator at use time +# +# the target without the suffix +# +# +# +# +# + +# D compiler information +# +# +# +# + +# Static library tools +# +# +IF(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_OUTPUT_D_FLAG "-o ") +# SET(CMAKE_SHARED_LIBRARY_D_FLAGS "-g -O2 -fPIC") +# SET(CMAKE_SHARED_LIBRARY_CREATE_D_FLAGS "-shared") +ELSE(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_OUTPUT_D_FLAG "-of") +# SET(CMAKE_SHARED_LIBRARY_D_FLAGS "-g -O -L-fPIC") +# SET(CMAKE_SHARED_LIBRARY_CREATE_D_FLAGS "-L-shared") +ENDIF(CMAKE_COMPILER_IS_GDC) + + +# create a D shared library +IF(NOT CMAKE_D_CREATE_SHARED_LIBRARY) + SET(CMAKE_D_CREATE_SHARED_LIBRARY + " ${CMAKE_OUTPUT_D_FLAG} ") +ENDIF(NOT CMAKE_D_CREATE_SHARED_LIBRARY) + +# create a D shared module just copy the shared library rule +IF(NOT CMAKE_D_CREATE_SHARED_MODULE) + SET(CMAKE_D_CREATE_SHARED_MODULE ${CMAKE_D_CREATE_SHARED_LIBRARY}) +ENDIF(NOT CMAKE_D_CREATE_SHARED_MODULE) + +# create a D static library +IF(NOT CMAKE_D_CREATE_STATIC_LIBRARY) + SET(CMAKE_D_CREATE_STATIC_LIBRARY + " cr " + " ") +ENDIF(NOT CMAKE_D_CREATE_STATIC_LIBRARY) + +# compile a D file into an object file +IF(NOT CMAKE_D_COMPILE_OBJECT) + SET(CMAKE_D_COMPILE_OBJECT + " ${CMAKE_OUTPUT_D_FLAG} -c ") +ENDIF(NOT CMAKE_D_COMPILE_OBJECT) + +IF(NOT CMAKE_D_LINK_EXECUTABLE) + SET(CMAKE_D_LINK_EXECUTABLE + " ${CMAKE_OUTPUT_D_FLAG} ") +ENDIF(NOT CMAKE_D_LINK_EXECUTABLE) + +MARK_AS_ADVANCED( +CMAKE_D_FLAGS +CMAKE_D_FLAGS_DEBUG +CMAKE_D_FLAGS_MINSIZEREL +CMAKE_D_FLAGS_RELEASE +CMAKE_D_FLAGS_RELWITHDEBINFO +) +SET(CMAKE_D_INFORMATION_LOADED 1) diff --git a/CMakeDetermineDCompiler.cmake b/CMakeDetermineDCompiler.cmake new file mode 100644 index 0000000..fc823e8 --- /dev/null +++ b/CMakeDetermineDCompiler.cmake @@ -0,0 +1,88 @@ +# determine the compiler to use for D programs +# NOTE, a generator may set CMAKE_D_COMPILER before +# loading this file to force a compiler. +# use environment variable DCC first if defined by user, next use +# the cmake variable CMAKE_GENERATOR_D which can be defined by a generator +# as a default compiler + +IF(NOT CMAKE_D_COMPILER) + + # prefer the environment variable DC + IF($ENV{DC} MATCHES ".+") + GET_FILENAME_COMPONENT(CMAKE_D_COMPILER_INIT $ENV{DC} PROGRAM PROGRAM_ARGS CMAKE_D_FLAGS_ENV_INIT) + IF(CMAKE_D_FLAGS_ENV_INIT) + SET(CMAKE_D_COMPILER_ARG1 "${CMAKE_D_FLAGS_ENV_INIT}" CACHE STRING "First argument to D compiler") + ENDIF(CMAKE_D_FLAGS_ENV_INIT) + IF(EXISTS ${CMAKE_D_COMPILER_INIT}) + ELSE(EXISTS ${CMAKE_D_COMPILER_INIT}) + MESSAGE(FATAL_ERROR "Could not find compiler set in environment variable C:\n$ENV{DC}.") + ENDIF(EXISTS ${CMAKE_D_COMPILER_INIT}) + ENDIF($ENV{DC} MATCHES ".+") + + # next try prefer the compiler specified by the generator + IF(CMAKE_GENERATOR_D) + IF(NOT CMAKE_D_COMPILER_INIT) + SET(CMAKE_D_COMPILER_INIT ${CMAKE_GENERATOR_D}) + ENDIF(NOT CMAKE_D_COMPILER_INIT) + ENDIF(CMAKE_GENERATOR_D) + + # finally list compilers to try + IF(CMAKE_D_COMPILER_INIT) + SET(CMAKE_D_COMPILER_LIST ${CMAKE_D_COMPILER_INIT}) + ELSE(CMAKE_D_COMPILER_INIT) + SET(CMAKE_D_COMPILER_LIST gdc dmd) + ENDIF(CMAKE_D_COMPILER_INIT) + + # Find the compiler. + FIND_PROGRAM(CMAKE_D_COMPILER NAMES ${CMAKE_D_COMPILER_LIST} DOC "C compiler") + IF(CMAKE_D_COMPILER_INIT AND NOT CMAKE_D_COMPILER) + SET(CMAKE_D_COMPILER "${CMAKE_D_COMPILER_INIT}" CACHE FILEPATH "C compiler" FORCE) + ENDIF(CMAKE_D_COMPILER_INIT AND NOT CMAKE_D_COMPILER) +ENDIF(NOT CMAKE_D_COMPILER) +MARK_AS_ADVANCED(CMAKE_D_COMPILER) +GET_FILENAME_COMPONENT(COMPILER_LOCATION "${CMAKE_D_COMPILER}" PATH) + +FIND_PROGRAM(CMAKE_AR NAMES ar PATHS ${COMPILER_LOCATION} ) + +FIND_PROGRAM(CMAKE_RANLIB NAMES ranlib) +IF(NOT CMAKE_RANLIB) + SET(CMAKE_RANLIB : CACHE INTERNAL "noop for ranlib") +ENDIF(NOT CMAKE_RANLIB) +MARK_AS_ADVANCED(CMAKE_RANLIB) + +# do not test for GNU if the generator is visual studio +IF(${CMAKE_GENERATOR} MATCHES "Visual Studio") + SET(CMAKE_COMPILER_IS_GDC_RUN 1) +ENDIF(${CMAKE_GENERATOR} MATCHES "Visual Studio") + + +IF(NOT CMAKE_COMPILER_IS_GDC_RUN) + # test to see if the d compiler is gdc + SET(CMAKE_COMPILER_IS_GDC_RUN 1) + IF("${CMAKE_D_COMPILER}" MATCHES ".*gdc.*" ) + SET(CMAKE_COMPILER_IS_GDC 1) + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the D compiler is GDC succeeded with " + "the following output:\n${CMAKE_D_COMPILER}\n\n") + EXEC_PROGRAM(${CMAKE_D_COMPILER} ARGS "--version" OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT) + IF("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*mingw.*" ) + SET(CMAKE_COMPILER_IS_MINGW 1) + ENDIF("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*mingw.*" ) + IF("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*THIS_IS_CYGWIN.*" ) + SET(CMAKE_COMPILER_IS_CYGWIN 1) + ENDIF("${CMAKE_COMPILER_OUTPUT}" MATCHES ".*THIS_IS_CYGWIN.*" ) + ELSE("${CMAKE_D_COMPILER}" MATCHES ".*dmd.*" ) + SET(CMAKE_COMPILER_IS_DMD 1) + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the D compiler is DMD succeeded with " + "the following output:\n${CMAKE_D_COMPILER}\n\n") + ENDIF("${CMAKE_D_COMPILER}" MATCHES ".*gdc.*" ) +ENDIF(NOT CMAKE_COMPILER_IS_GDC_RUN) + + +# configure variables set in this file for fast reload later on +CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeDCompiler.cmake.in + "${CMAKE_PLATFORM_ROOT_BIN}/CMakeDCompiler.cmake" IMMEDIATE) +MARK_AS_ADVANCED(CMAKE_AR) + +SET(CMAKE_D_COMPILER_ENV_VAR "DC") diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..c424d41 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,15 @@ +PROJECT (cmaked NONE) + +SET (MOD_SRCS + CMakeDCompiler.cmake.in FindGTK2.cmake + CMakeDInformation.cmake CMakeTestDCompiler.cmake + CMakeDetermineDCompiler.cmake FindGDCPath.cmake ) + + +SET (PLAT_SRCS + Linux-dmd.cmake Linux-gdc.cmake + Windows-dmd.cmake Windows-gdc.cmake ) + + +INSTALL (FILES ${MOD_SRCS} DESTINATION ${CMAKE_ROOT}/Modules) +INSTALL (FILES ${PLAT_SRCS} DESTINATION ${CMAKE_ROOT}/Modules/Platform) diff --git a/CMakeTestDCompiler.cmake b/CMakeTestDCompiler.cmake new file mode 100644 index 0000000..bcf9c24 --- /dev/null +++ b/CMakeTestDCompiler.cmake @@ -0,0 +1,39 @@ +# This file is used by EnableLanguage in cmGlobalGenerator to +# determine that that selected D compiler can actually compile +# and link the most basic of programs. If not, a fatal error +# is set and cmake stops processing commands and will not generate +# any makefiles or projects. +IF(NOT CMAKE_D_COMPILER_WORKS) + MESSAGE(STATUS "Check for working D compiler: ${CMAKE_D_COMPILER}") + FILE(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testDCompiler.d + "import std.stdio;\n" + "int main(char[][] args)\n" + "{ writefln(\"%s\", args[0]); return args.sizeof-1;}\n") + TRY_COMPILE(CMAKE_D_COMPILER_WORKS ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testDCompiler.d + OUTPUT_VARIABLE OUTPUT) + SET(C_TEST_WAS_RUN 1) +ENDIF(NOT CMAKE_D_COMPILER_WORKS) + +IF(NOT CMAKE_D_COMPILER_WORKS) + MESSAGE(STATUS "Check for working D compiler: ${CMAKE_D_COMPILER} -- broken") + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log + "Determining if the D compiler works failed with " + "the following output:\n${OUTPUT}\n\n") + MESSAGE(FATAL_ERROR "The D compiler \"${CMAKE_D_COMPILER}\" " + "is not able to compile a simple test program.\nIt fails " + "with the following output:\n ${OUTPUT}\n\n" + "CMake will not be able to correctly generate this project.") +ELSE(NOT CMAKE_D_COMPILER_WORKS) + IF(C_TEST_WAS_RUN) + MESSAGE(STATUS "Check for working D compiler: ${CMAKE_D_COMPILER} -- works") + FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log + "Determining if the D compiler works passed with " + "the following output:\n${OUTPUT}\n\n") + ENDIF(C_TEST_WAS_RUN) + SET(CMAKE_D_COMPILER_WORKS 1 CACHE INTERNAL "") + # re-configure this file CMakeDCompiler.cmake so that it gets + # the value for CMAKE_SIZEOF_VOID_P + # configure variables set in this file for fast reload later on + CONFIGURE_FILE(${CMAKE_ROOT}/Modules/CMakeDCompiler.cmake.in + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeDCompiler.cmake IMMEDIATE) +ENDIF(NOT CMAKE_D_COMPILER_WORKS) diff --git a/FindGDCPath.cmake b/FindGDCPath.cmake new file mode 100644 index 0000000..97692a7 --- /dev/null +++ b/FindGDCPath.cmake @@ -0,0 +1,29 @@ +# - Find GDC Include Path +# +# GDC_INCLUDE_PATH = path to where object.d is found +# + +SET(GDC_POSSIBLE_INCLUDE_PATHS + /usr/include/d/4.1.2 + /usr/include/d/4.1.1 + /usr/include/d/4.1.0 + /usr/include/d/4.0.4 + /usr/include/d/4.0.3 + /usr/include/d/4.0.2 + /usr/include/d/4.0.1 + /usr/include/d/4.0.0 + /usr/include/d/4.0.6 + /usr/include/d/4.0.5 + /usr/include/d/3.4.4 + /usr/include/d/3.4.3 + /usr/include/d/3.4.2 + /usr/include/d/3.4.1 + /usr/include/d/3.4.0 + ) + +FIND_PATH(GDC_INCLUDE_PATH object.d + ${GDC_POSSIBLE_INCLUDE_PATHS}) + +MARK_AS_ADVANCED( + GDC_INCLUDE_PATH + ) diff --git a/FindGTK2.cmake b/FindGTK2.cmake new file mode 100644 index 0000000..39094b9 --- /dev/null +++ b/FindGTK2.cmake @@ -0,0 +1,452 @@ +# - Try to find GTK2 +# Once done this will define +# +# GTK2_FOUND - System has Boost +# GTK2_INCLUDE_DIRS - GTK2 include directory +# GTK2_LIBRARIES - Link these to use GTK2 +# GTK2_LIBRARY_DIRS - The path to where the GTK2 library files are. +# GTK2_DEFINITIONS - Compiler switches required for using GTK2 +# +# Copyright (c) 2007 Andreas Schneider +# +# Redistribution and use is allowed according to the terms of the New +# BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# + +set(GTK2_DEBUG ON) + +macro(GTK2_DEBUG_MESSAGE _message) + if (GTK2_DEBUG) + message(STATUS "(DEBUG) ${_message}") + endif (GTK2_DEBUG) +endmacro(GTK2_DEBUG_MESSAGE _message) + +if (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS) + # in cache already + set(GTK2_FOUND TRUE) +else (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS) + if (UNIX) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + include(UsePkgConfig) + + pkgconfig(gtk+-2.0 _GTK2IncDir _GTK2LinkDir _GTK2LinkFlags _GTK2Cflags) + + find_path(GTK2_GTK_INCLUDE_DIR + NAMES + gtk/gtk.h + PATHS + $ENV{GTK2_HOME} + ${_GTK2IncDir} + /usr/include/gtk-2.0 + /usr/local/include/gtk-2.0 + /opt/include/gtk-2.0 + /opt/gnome/include/gtk-2.0 + /sw/include/gtk-2.0 + ) + gtk2_debug_message("GTK2_GTK_INCLUDE_DIR is ${GTK2_GTK_INCLUDE_DIR}") + + # Some Linux distributions (e.g. Red Hat) have glibconfig.h + # and glib.h in different directories, so we need to look + # for both. + # - Atanas Georgiev + pkgconfig(glib-2.0 _GLIB2IncDir _GLIB2LinkDir _GLIB2LinkFlags _GLIB2Cflags) + pkgconfig(gmodule-2.0 _GMODULE2IncDir _GMODULE2LinkDir _GMODULE2LinkFlags _GMODULE2Cflags) + + find_path(GTK2_GLIBCONFIG_INCLUDE_DIR + NAMES + glibconfig.h + PATHS + ${_GLIB2IncDir} + ${_GMODULE2IncDir} + /opt/gnome/lib64/glib-2.0/include + /opt/gnome/lib/glib-2.0/include + /opt/lib/glib-2.0/include + /usr/lib64/glib-2.0/include + /usr/lib/glib-2.0/include + /sw/lib/glib-2.0/include + ) + gtk2_debug_message("GTK2_GLIBCONFIG_INCLUDE_DIR is ${GTK2_GLIBCONFIG_INCLUDE_DIR}") + + find_path(GTK2_GLIB_INCLUDE_DIR + NAMES + glib.h + PATHS + ${_GLIB2IncDir} + ${_GMODULE2IncDir} + /opt/include/glib-2.0 + /opt/gnome/include/glib-2.0 + /usr/include/glib-2.0 + /sw/include/glib-2.0 + ) + gtk2_debug_message("GTK2_GLIB_INCLUDE_DIR is ${GTK2_GLIB_INCLUDE_DIR}") + + pkgconfig(gdk-2.0 _GDK2IncDir _GDK2LinkDir _GDK2LinkFlags _GDK2Cflags) + + find_path(GTK2_GDK_INCLUDE_DIR + NAMES + gdkconfig.h + PATHS + ${_GDK2IncDir} + /opt/gnome/lib/gtk-2.0/include + /opt/gnome/lib64/gtk-2.0/include + /opt/lib/gtk-2.0/include + /usr/lib/gtk-2.0/include + /usr/lib64/gtk-2.0/include + /sw/lib/gtk-2.0/include + ) + gtk2_debug_message("GTK2_GDK_INCLUDE_DIR is ${GTK2_GDK_INCLUDE_DIR}") + + find_path(GTK2_GTKGL_INCLUDE_DIR + NAMES + gtkgl/gtkglarea.h + PATHS + ${_GLIB2IncDir} + /usr/include + /usr/local/include + /usr/openwin/share/include + /opt/gnome/include + /opt/include + /sw/include + ) + gtk2_debug_message("GTK2_GTKGL_INCLUDE_DIR is ${GTK2_GTKGL_INCLUDE_DIR}") + + pkgconfig(libglade-2.0 _GLADEIncDir _GLADELinkDir _GLADELinkFlags _GLADECflags) + + find_path(GTK2_GLADE_INCLUDE_DIR + NAMES + glade/glade.h + PATHS + ${_GLADEIncDir} + /opt/gnome/include/libglade-2.0 + /usr/include/libglade-2.0 + /opt/include/libglade-2.0 + /sw/include/libglade-2.0 + ) + gtk2_debug_message("GTK2_GLADE_INCLUDE_DIR is ${GTK2_GLADE_INCLUDE_DIR}") + + pkgconfig(pango _PANGOIncDir _PANGOLinkDir _PANGOLinkFlags _PANGOCflags) + + find_path(GTK2_PANGO_INCLUDE_DIR + NAMES + pango/pango.h + PATHS + ${_PANGOIncDir} + /usr/include/pango-1.0 + /opt/gnome/include/pango-1.0 + /opt/include/pango-1.0 + /sw/include/pango-1.0 + ) + gtk2_debug_message("GTK2_PANGO_INCLUDE_DIR is ${GTK2_PANGO_INCLUDE_DIR}") + + pkgconfig(cairo _CAIROIncDir _CAIROLinkDir _CAIROLinkFlags _CAIROCflags) + + find_path(GTK2_CAIRO_INCLUDE_DIR + NAMES + cairo.h + PATHS + ${_CAIROIncDir} + /opt/gnome/include/cairo + /usr/include + /usr/include/cairo + /opt/include + /opt/include/cairo + /sw/include + /sw/include/cairo + ) + gtk2_debug_message("GTK2_CAIRO_INCLUDE_DIR is ${GTK2_CAIRO_INCLUDE_DIR}") + + pkgconfig(atk _ATKIncDir _ATKLinkDir _ATKLinkFlags _ATKCflags) + + find_path(GTK2_ATK_INCLUDE_DIR + NAMES + atk/atk.h + PATHS + ${_ATKIncDir} + /opt/gnome/include/atk-1.0 + /usr/include/atk-1.0 + /opt/include/atk-1.0 + /sw/include/atk-1.0 + ) + gtk2_debug_message("GTK2_ATK_INCLUDE_DIR is ${GTK2_ATK_INCLUDE_DIR}") + + find_library(GTK2_GTK_LIBRARY + NAMES + gtk-x11-2.0 + PATHS + ${_GTK2LinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_GTK_LIBRARY is ${GTK2_GTK_LIBRARY}") + + find_library(GTK2_GDK_LIBRARY + NAMES + gdk-x11-2.0 + PATHS + ${_GDK2LinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_GDK_LIBRARY is ${GTK2_GDK_LIBRARY}") + + find_library(GTK2_GDK_PIXBUF_LIBRARY + NAMES + gdk_pixbuf-2.0 + PATHS + ${_GDK2LinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_GDK_PIXBUF_LIBRARY is ${GTK2_GDK_PIXBUF_LIBRARY}") + + find_library(GTK2_GMODULE_LIBRARY + NAMES + gmodule-2.0 + PATHS + ${_GMODULE2LinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_GMODULE_LIBRARY is ${GTK2_GMODULE_LIBRARY}") + + find_library(GTK2_GTHREAD_LIBRARY + NAMES + gthread-2.0 + PATHS + ${_GTK2LinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_GTHREAD_LIBRARY is ${GTK2_GTHREAD_LIBRARY}") + + find_library(GTK2_GOBJECT_LIBRARY + NAMES + gobject-2.0 + PATHS + ${_GTK2LinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_GOBJECT_LIBRARY is ${GTK2_GOBJECT_LIBRARY}") + + find_library(GTK2_GLIB_LIBRARY + NAMES + glib-2.0 + PATHS + ${_GLIB2LinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_GLIB_LIBRARY is ${GTK2_GLIB_LIBRARY}") + + find_library(GTK2_GTKGL_LIBRARY + NAMES + gtkgl + PATHS + ${_GTK2LinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_GTKGL_LIBRARY is ${GTK2_GTKGL_LIBRARY}") + + find_library(GTK2_GLADE_LIBRARY + NAMES + glade-2.0 + PATHS + ${_GLADELinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_GLADE_LIBRARY is ${GTK2_GLADE_LIBRARY}") + + find_library(GTK2_PANGO_LIBRARY + NAMES + pango-1.0 + PATHS + ${_PANGOLinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_PANGO_LIBRARY is ${GTK2_PANGO_LIBRARY}") + + find_library(GTK2_CAIRO_LIBRARY + NAMES + pangocairo-1.0 + PATHS + ${_CAIROLinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_PANGO_LIBRARY is ${GTK2_CAIRO_LIBRARY}") + + find_library(GTK2_ATK_LIBRARY + NAMES + atk-1.0 + PATHS + ${_ATKinkDir} + /usr/lib + /usr/local/lib + /usr/openwin/lib + /usr/X11R6/lib + /opt/gnome/lib + /opt/lib + /sw/lib + ) + gtk2_debug_message("GTK2_ATK_LIBRARY is ${GTK2_ATK_LIBRARY}") + + set(GTK2_INCLUDE_DIRS + ${GTK2_GTK_INCLUDE_DIR} + ${GTK2_GLIBCONFIG_INCLUDE_DIR} + ${GTK2_GLIB_INCLUDE_DIR} + ${GTK2_GDK_INCLUDE_DIR} + ${GTK2_GLADE_INCLUDE_DIR} + ${GTK2_PANGO_INCLUDE_DIR} + ${GTK2_CAIRO_INCLUDE_DIR} + ${GTK2_ATK_INCLUDE_DIR} + ) + + if (GTK2_GTK_LIBRARY AND GTK2_GTK_INCLUDE_DIR) + if (GTK2_GDK_LIBRARY AND GTK2_GDK_PIXBUF_LIBRARY AND GTK2_GDK_INCLUDE_DIR) + if (GTK2_GMODULE_LIBRARY) + if (GTK2_GTHREAD_LIBRARY) + if (GTK2_GOBJECT_LIBRARY) + if (GTK2_GLADE_LIBRARY AND GTK2_GLADE_INCLUDE_DIR) + if (GTK2_PANGO_LIBRARY AND GTK2_PANGO_INCLUDE_DIR) + if (GTK2_CAIRO_LIBRARY AND GTK2_CAIRO_INCLUDE_DIR) + if (GTK2_ATK_LIBRARY AND GTK2_ATK_INCLUDE_DIR) + + # set GTK2 libraries + set (GTK2_LIBRARIES + ${GTK2_GTK_LIBRARY} + ${GTK2_GDK_LIBRARY} + ${GTK2_GDK_PIXBUF_LIBRARY} + ${GTK2_GMODULE_LIBRARY} + ${GTK2_GTHREAD_LIBRARY} + ${GTK2_GOBJECT_LIBRARY} + ${GTK2_GLADE_LIBRARY} + ${GTK2_PANGO_LIBRARY} + ${GTK2_CAIRO_LIBRARY} + ${GTK2_ATK_LIBRARY} + ) + + # check for gtkgl support + if (GTK2_GTKGL_LIBRARY AND GTK2_GTKGL_INCLUDE_DIR) + set(GTK2_GTKGL_FOUND TRUE) + + set(GTK2_INCLUDE_DIRS + ${GTK2_INCLUDE_DIR} + ${GTK2_GTKGL_INCLUDE_DIR} + ) + + set(GTK2_LIBRARIES + ${GTK2_LIBRARIES} + ${GTK2_GTKGL_LIBRARY} + ) + endif (GTK2_GTKGL_LIBRARY AND GTK2_GTKGL_INCLUDE_DIR) + + else (GTK2_ATK_LIBRARY AND GTK2_ATK_INCLUDE_DIR) + message(SEND_ERROR "Could not find ATK") + endif (GTK2_ATK_LIBRARY AND GTK2_ATK_INCLUDE_DIR) + else (GTK2_CAIRO_LIBRARY AND GTK2_CAIRO_INCLUDE_DIR) + message(SEND_ERROR "Could not find CAIRO") + endif (GTK2_CAIRO_LIBRARY AND GTK2_CAIRO_INCLUDE_DIR) + else (GTK2_PANGO_LIBRARY AND GTK2_PANGO_INCLUDE_DIR) + message(SEND_ERROR "Could not find PANGO") + endif (GTK2_PANGO_LIBRARY AND GTK2_PANGO_INCLUDE_DIR) + else (GTK2_GLADE_LIBRARY AND GTK2_GLADE_INCLUDE_DIR) + message(SEND_ERROR "Could not find GLADE") + endif (GTK2_GLADE_LIBRARY AND GTK2_GLADE_INCLUDE_DIR) + else (GTK2_GOBJECT_LIBRARY) + message(SEND_ERROR "Could not find GOBJECT") + endif (GTK2_GOBJECT_LIBRARY) + else (GTK2_GTHREAD_LIBRARY) + message(SEND_ERROR "Could not find GTHREAD") + endif (GTK2_GTHREAD_LIBRARY) + else (GTK2_GMODULE_LIBRARY) + message(SEND_ERROR "Could not find GMODULE") + endif (GTK2_GMODULE_LIBRARY) + else (GTK2_GDK_LIBRARY AND GTK2_GDK_PIXBUF_LIBRARY AND GTK2_GDK_INCLUDE_DIR) + message(SEND_ERROR "Could not find GDK (GDK_PIXBUF)") + endif (GTK2_GDK_LIBRARY AND GTK2_GDK_PIXBUF_LIBRARY AND GTK2_GDK_INCLUDE_DIR) + else (GTK2_GTK_LIBRARY AND GTK2_GTK_INCLUDE_DIR) + message(SEND_ERROR "Could not find GTK2-X11") + endif (GTK2_GTK_LIBRARY AND GTK2_GTK_INCLUDE_DIR) + + + if (GTK2_INCLUDE_DIRS AND GTK2_LIBRARIES) + set(GTK2_FOUND TRUE) + endif (GTK2_INCLUDE_DIRS AND GTK2_LIBRARIES) + + if (GTK2_FOUND) + if (NOT GTK2_FIND_QUIETLY) + message(STATUS "Found GTK2: ${GTK2_LIBRARIES}") + endif (NOT GTK2_FIND_QUIETLY) + else (GTK2_FOUND) + if (GTK2_FIND_REQUIRED) + message(FATAL_ERROR "Could not find GTK2") + endif (GTK2_FIND_REQUIRED) + endif (GTK2_FOUND) + + # show the GTK2_INCLUDE_DIRS and GTK2_LIBRARIES variables only in the advanced view + mark_as_advanced(GTK2_INCLUDE_DIRS GTK2_LIBRARIES) + + endif (UNIX) +endif (GTK2_LIBRARIES AND GTK2_INCLUDE_DIRS) + diff --git a/Linux-dmd.cmake b/Linux-dmd.cmake new file mode 100644 index 0000000..3953ff1 --- /dev/null +++ b/Linux-dmd.cmake @@ -0,0 +1,8 @@ +SET (CMAKE_D_FLAGS_INIT "") +SET (CMAKE_D_FLAGS_DEBUG_INIT "-g") +# SET (CMAKE_D_FLAGS_MINSIZEREL_INIT "-Os") +SET (CMAKE_D_FLAGS_RELEASE_INIT "-O -release -inline") +SET (CMAKE_D_FLAGS_RELWITHDEBINFO_INIT "-O -g") +# SET (CMAKE_D_CREATE_PREPROCESSED_SOURCE " -E > ") +SET (CMAKE_D_CREATE_ASSEMBLY_SOURCE " -S -o ") +# SET (CMAKE_INCLUDE_SYSTEM_FLAG_D "-isystem ") diff --git a/Linux-gdc.cmake b/Linux-gdc.cmake new file mode 100644 index 0000000..449496a --- /dev/null +++ b/Linux-gdc.cmake @@ -0,0 +1,9 @@ +SET (CMAKE_D_FLAGS_INIT "") +SET (CMAKE_D_FLAGS_DEBUG_INIT "-g") +SET (CMAKE_D_FLAGS_MINSIZEREL_INIT "-Os") +SET (CMAKE_D_FLAGS_RELEASE_INIT "-O3 -fomit-frame-pointer -fweb -frelease -finline-functions") +SET (CMAKE_D_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") +# SET (CMAKE_D_CREATE_PREPROCESSED_SOURCE " -E > ") +SET (CMAKE_D_CREATE_ASSEMBLY_SOURCE " -S -o ") +#SET (CMAKE_INCLUDE_SYSTEM_FLAG_D "-isystem ") + diff --git a/Windows-dmd.cmake b/Windows-dmd.cmake new file mode 100644 index 0000000..3953ff1 --- /dev/null +++ b/Windows-dmd.cmake @@ -0,0 +1,8 @@ +SET (CMAKE_D_FLAGS_INIT "") +SET (CMAKE_D_FLAGS_DEBUG_INIT "-g") +# SET (CMAKE_D_FLAGS_MINSIZEREL_INIT "-Os") +SET (CMAKE_D_FLAGS_RELEASE_INIT "-O -release -inline") +SET (CMAKE_D_FLAGS_RELWITHDEBINFO_INIT "-O -g") +# SET (CMAKE_D_CREATE_PREPROCESSED_SOURCE " -E > ") +SET (CMAKE_D_CREATE_ASSEMBLY_SOURCE " -S -o ") +# SET (CMAKE_INCLUDE_SYSTEM_FLAG_D "-isystem ") diff --git a/Windows-gdc.cmake b/Windows-gdc.cmake new file mode 100644 index 0000000..449496a --- /dev/null +++ b/Windows-gdc.cmake @@ -0,0 +1,9 @@ +SET (CMAKE_D_FLAGS_INIT "") +SET (CMAKE_D_FLAGS_DEBUG_INIT "-g") +SET (CMAKE_D_FLAGS_MINSIZEREL_INIT "-Os") +SET (CMAKE_D_FLAGS_RELEASE_INIT "-O3 -fomit-frame-pointer -fweb -frelease -finline-functions") +SET (CMAKE_D_FLAGS_RELWITHDEBINFO_INIT "-O2 -g") +# SET (CMAKE_D_CREATE_PREPROCESSED_SOURCE " -E > ") +SET (CMAKE_D_CREATE_ASSEMBLY_SOURCE " -S -o ") +#SET (CMAKE_INCLUDE_SYSTEM_FLAG_D "-isystem ") +