X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=cmake%2FModules%2FCMakeDInformation.cmake;fp=cmake%2FModules%2FCMakeDInformation.cmake;h=2e2620a82f5cd437baedda327c49c92a276bc3c5;hb=0ec2f0f11f8b044e4f85dbc3e19cab67fd2400a8;hp=0000000000000000000000000000000000000000;hpb=0afd88891b641bb01d18f0e39890f5e460a0c02f;p=apps%2Fmadmutt.git diff --git a/cmake/Modules/CMakeDInformation.cmake b/cmake/Modules/CMakeDInformation.cmake new file mode 100644 index 0000000..2e2620a --- /dev/null +++ b/cmake/Modules/CMakeDInformation.cmake @@ -0,0 +1,237 @@ +# +# CMakeD - CMake module for D Language +# +# Copyright (c) 2007, Selman Ulug +# Tim Burrell +# +# All rights reserved. +# +# See Copyright.txt for details. +# +# Modified from CMake 2.6.5 CMakeCInformation.cmake +# See http://www.cmake.org/HTML/Copyright.html for details +# + +# 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("$ENV{D_PATH}" STREQUAL "") + STRING(LENGTH ${CMAKE_D_COMPILER} CMAKE_D_COMPILER_LENGTH) + IF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + MATH(EXPR CMAKE_D_COMPILER_LENGTH "${CMAKE_D_COMPILER_LENGTH} - 12") + ELSE(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + MATH(EXPR CMAKE_D_COMPILER_LENGTH "${CMAKE_D_COMPILER_LENGTH} - 8") + ENDIF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + STRING(SUBSTRING ${CMAKE_D_COMPILER} 0 ${CMAKE_D_COMPILER_LENGTH} D_PATH) +ELSE("$ENV{D_PATH}" STREQUAL "") + SET(D_PATH "$ENV{D_PATH}") +ENDIF("$ENV{D_PATH}" STREQUAL "") +MESSAGE(STATUS "D Compiler Install Prefix (use D_PATH env var to override): ${D_PATH}") + +IF(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_OUTPUT_D_FLAG "-o ") + SET(CMAKE_SHARED_LIBRARY_D_FLAGS "-fPIC") + SET(CMAKE_SHARED_LIBRARY_CREATE_D_FLAGS "-shared") + SET(CMAKE_INCLUDE_FLAG_D "-I") # -I + SET(CMAKE_INCLUDE_FLAG_D_SEP "") # , or empty + SET(CMAKE_LIBRARY_PATH_FLAG "-L") + SET(CMAKE_LINK_LIBRARY_FLAG "-l") + SET(CMAKE_D_VERSION_FLAG "-fversion=") +ELSE(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_OUTPUT_D_FLAG "-of") + SET(CMAKE_D_VERSION_FLAG "-version=") + IF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + SET(CMAKE_INCLUDE_FLAG_D "-I") # -I + SET(CMAKE_INCLUDE_FLAG_D_SEP "") # , or empty + SET(CMAKE_LINK_LIBRARY_FLAG "-L+") + SET(CMAKE_LIBRARY_PATH_FLAG "-L+") + SET(CMAKE_LIBRARY_PATH_TERMINATOR "\\") + FIND_PROGRAM(DMD_LIBRARIAN "lib.exe") + ELSE(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + SET(CMAKE_SHARED_LIBRARY_D_FLAGS "-fPIC") + SET(CMAKE_SHARED_LIBRARY_CREATE_D_FLAGS "-shared") + SET(CMAKE_INCLUDE_FLAG_D "-I") # -I + SET(CMAKE_INCLUDE_FLAG_D_SEP "") # , or empty + SET(CMAKE_LIBRARY_PATH_FLAG "-L") + ENDIF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") +ENDIF(CMAKE_COMPILER_IS_GDC) + +IF(CMAKE_D_USE_TANGO) + IF(CMAKE_COMPILER_IS_GDC) + SET(DSTDLIB_TYPE "-fversion=Tango") + SET(DSTDLIB_FLAGS "-lgtango") + ELSE(CMAKE_COMPILER_IS_GDC) + SET(DSTDLIB_TYPE "-version=Tango") + SET(DSTDLIB_FLAGS "-L${D_PATH}/lib -ltango -lphobos") + ENDIF(CMAKE_COMPILER_IS_GDC) +ENDIF(CMAKE_D_USE_TANGO) +IF(CMAKE_D_USE_PHOBOS) + IF(CMAKE_COMPILER_IS_GDC) + SET(DSTDLIB_TYPE "-fversion=Phobos") + SET(DSTDLIB_FLAGS "-lgphobos") + ELSE(CMAKE_COMPILER_IS_GDC) + SET(DSTDLIB_TYPE "-version=Phobos") + SET(DSTDLIB_FLAGS "-L${D_PATH}/lib -lphobos") + ENDIF(CMAKE_COMPILER_IS_GDC) +ENDIF(CMAKE_D_USE_PHOBOS) + +# create a D shared library +IF(NOT CMAKE_D_CREATE_SHARED_LIBRARY) + IF(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_D_CREATE_SHARED_LIBRARY + " ${CMAKE_OUTPUT_D_FLAG} ") + ELSE(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_D_CREATE_SHARED_LIBRARY + " ${CMAKE_OUTPUT_D_FLAG} ${DSTDLIB_FLAGS}") + ENDIF(CMAKE_COMPILER_IS_GDC) +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) + IF(CMAKE_COMPILER_IS_GDC) + IF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + SET(CMAKE_D_CREATE_STATIC_LIBRARY + " cr .lib " + " .lib " + " cr " + " " + ) + ELSE(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + SET(CMAKE_D_CREATE_STATIC_LIBRARY + " cr " + " " + ) + ENDIF(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + ELSE(CMAKE_COMPILER_IS_GDC) + IF(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + SET(CMAKE_D_CREATE_STATIC_LIBRARY + " cr " + " ") + ELSE(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + SET(CMAKE_D_CREATE_STATIC_LIBRARY + "${DMD_LIBRARIAN} -c -p256 ") + ENDIF(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + ENDIF(CMAKE_COMPILER_IS_GDC) +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) + IF(CMAKE_COMPILER_IS_GDC) + SET(CMAKE_D_LINK_EXECUTABLE + " ${CMAKE_OUTPUT_D_FLAG} ${DSTDLIB_FLAGS} ${DSTDLIB_TYPE}") + ELSE(CMAKE_COMPILER_IS_GDC) + IF(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + SET(CMAKE_D_LINK_EXECUTABLE + "gcc ${DLINK_FLAGS} -o -lpthread -lm ${DSTDLIB_FLAGS}") + ELSE(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + SET(CMAKE_D_LINK_EXECUTABLE + " ${CMAKE_OUTPUT_D_FLAG} ") + ENDIF(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + ENDIF(CMAKE_COMPILER_IS_GDC) +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)