Split Borland compiler information files
This commit re-writes Borland compiler build rules. We split the rules into modern <os>-<id>-<lang> information modules but share a common macro between languages to avoid duplication. We also address a bug in the previous rules that would build some target types against the static Borland runtime and others against the shared Borland runtime in one build tree. Now we always use the shared runtime as is the default in the rules for MS tools.
This commit is contained in:
parent
2af045dfc5
commit
0653286dc6
|
@ -0,0 +1,2 @@
|
|||
include(Platform/Windows-Borland)
|
||||
__borland_language(C)
|
|
@ -0,0 +1,2 @@
|
|||
include(Platform/Windows-Borland)
|
||||
__borland_language(CXX)
|
|
@ -0,0 +1,121 @@
|
|||
|
||||
#=============================================================================
|
||||
# Copyright 2002-2009 Kitware, Inc.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distributed this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
# This module is shared by multiple languages; use include blocker.
|
||||
if(__WINDOWS_BORLAND)
|
||||
return()
|
||||
endif()
|
||||
set(__WINDOWS_BORLAND 1)
|
||||
|
||||
SET(BORLAND 1)
|
||||
|
||||
# Borland target type flags (bcc32 -h -t):
|
||||
# -tW GUI App (implies -U__CONSOLE__)
|
||||
# -tWC Console App (implies -D__CONSOLE__=1)
|
||||
# -tWD Build a DLL (implies -D__DLL__=1 -D_DLL=1)
|
||||
# -tWM Enable threads (implies -D__MT__=1 -D_MT=1)
|
||||
# -tWR Use DLL runtime (implies -D_RTLDLL, and '-tW' too!!)
|
||||
#
|
||||
# Notes:
|
||||
# - The flags affect linking so we pass them to the linker.
|
||||
# - The flags affect preprocessing so we pass them to the compiler.
|
||||
# - Since '-tWR' implies '-tW' we use '-tWR -tW-' instead.
|
||||
# - Since '-tW-' disables '-tWD' we use '-tWR -tW- -tWD' for DLLs.
|
||||
set(_RTLDLL "-tWR -tW-")
|
||||
set(_COMPILE_C "-c")
|
||||
set(_COMPILE_CXX "-P -c")
|
||||
|
||||
SET(CMAKE_LIBRARY_PATH_FLAG "-L")
|
||||
SET(CMAKE_LINK_LIBRARY_FLAG "")
|
||||
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES "-bcc.lib" ".lib")
|
||||
|
||||
# uncomment these out to debug makefiles
|
||||
#SET(CMAKE_START_TEMP_FILE "")
|
||||
#SET(CMAKE_END_TEMP_FILE "")
|
||||
#SET(CMAKE_VERBOSE_MAKEFILE 1)
|
||||
|
||||
# Borland cannot handle + in the file name, so mangle object file name
|
||||
SET (CMAKE_MANGLE_OBJECT_FILE_NAMES "ON")
|
||||
|
||||
# extra flags for a win32 exe
|
||||
SET(CMAKE_CREATE_WIN32_EXE "-tW" )
|
||||
# extra flags for a console app
|
||||
SET(CMAKE_CREATE_CONSOLE_EXE "-tWC" )
|
||||
|
||||
SET (CMAKE_BUILD_TYPE Debug CACHE STRING
|
||||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel.")
|
||||
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_INIT "-tWM -lS:10000000 -lSc:10000000 ")
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "-v")
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "-v")
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT})
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT})
|
||||
|
||||
macro(__borland_language lang)
|
||||
set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "-tWD")
|
||||
|
||||
# compile a source file into an object file
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
# to parse quotes from the response file.
|
||||
set(CMAKE_${lang}_COMPILE_OBJECT
|
||||
"<CMAKE_${lang}_COMPILER> ${_RTLDLL} <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 -o<OBJECT> <FLAGS> ${_COMPILE_${lang}} <SOURCE>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
|
||||
set(CMAKE_${lang}_LINK_EXECUTABLE
|
||||
"<CMAKE_${lang}_COMPILER> ${_RTLDLL} -e<TARGET> ${CMAKE_START_TEMP_FILE}<LINK_FLAGS> <FLAGS> <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
|
||||
# "implib -c -w <TARGET_IMPLIB> <TARGET>"
|
||||
)
|
||||
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
# to parse quotes from the response file.
|
||||
set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
|
||||
"cpp32 <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 <FLAGS> -o<PREPROCESSED_SOURCE> ${_COMPILE_${lang}} <SOURCE>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
# Borland >= 5.6 allows -P option for cpp32, <= 5.5 does not
|
||||
|
||||
# Create a module library.
|
||||
set(CMAKE_${lang}_CREATE_SHARED_MODULE
|
||||
"<CMAKE_${lang}_COMPILER> ${_RTLDLL} -tWD ${CMAKE_START_TEMP_FILE}-e<TARGET> <LINK_FLAGS> <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
|
||||
# Create an import library for another target.
|
||||
set(CMAKE_${lang}_CREATE_IMPORT_LIBRARY
|
||||
"implib -c -w <TARGET_IMPLIB> <TARGET>"
|
||||
)
|
||||
|
||||
# Create a shared library.
|
||||
# First create a module and then its import library.
|
||||
set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
|
||||
${CMAKE_${lang}_CREATE_SHARED_MODULE}
|
||||
${CMAKE_${lang}_CREATE_IMPORT_LIBRARY}
|
||||
)
|
||||
|
||||
# create a static library
|
||||
set(CMAKE_${lang}_CREATE_STATIC_LIBRARY
|
||||
"tlib ${CMAKE_START_TEMP_FILE}/p512 <LINK_FLAGS> /a <TARGET_QUOTED> <OBJECTS>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
|
||||
# Initial configuration flags.
|
||||
set(CMAKE_${lang}_FLAGS_INIT "-tWM")
|
||||
set(CMAKE_${lang}_FLAGS_DEBUG_INIT "-Od -v")
|
||||
set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "-O1 -DNDEBUG")
|
||||
set(CMAKE_${lang}_FLAGS_RELEASE_INIT "-O2 -DNDEBUG")
|
||||
set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "-Od")
|
||||
set(CMAKE_${lang}_STANDARD_LIBRARIES_INIT "import32.lib")
|
||||
endmacro()
|
|
@ -1,128 +0,0 @@
|
|||
# Borland shared library issues:
|
||||
# When building dll's with borland, the run time dll c/c++ library from
|
||||
# borland must be used. This is specified with the -tWR compiler option.
|
||||
# This flag must be present during compilation of c and c++ files and
|
||||
# for the linking of exe and dll files. But wait, there is more,
|
||||
# the -tWR flag must come after the -tWD and -tWM flags, but before the -tWC flag.
|
||||
# Order counts, so be careful!
|
||||
# if building static, you don't want the -tWR flag as it will make your program
|
||||
# depend on the borland run time dll.
|
||||
# So, if a project has CMAKE_BUILD_SHARED on, then the -tWR flag is added all over, and
|
||||
# it is left out if not.
|
||||
|
||||
SET(CMAKE_LIBRARY_PATH_FLAG "-L")
|
||||
SET(CMAKE_LINK_LIBRARY_FLAG "")
|
||||
SET(CMAKE_SHARED_BUILD_CXX_FLAGS "-tWR")
|
||||
SET(CMAKE_SHARED_BUILD_C_FLAGS "-tWR")
|
||||
SET(BORLAND 1)
|
||||
|
||||
SET(CMAKE_FIND_LIBRARY_SUFFIXES "-bcc.lib" ".lib")
|
||||
|
||||
# uncomment these out to debug makefiles
|
||||
#SET(CMAKE_START_TEMP_FILE "")
|
||||
#SET(CMAKE_END_TEMP_FILE "")
|
||||
#SET(CMAKE_VERBOSE_MAKEFILE 1)
|
||||
|
||||
# Borland cannot handle + in the file name, so mangle object file name
|
||||
SET (CMAKE_MANGLE_OBJECT_FILE_NAMES "ON")
|
||||
|
||||
# Create an import library for another target.
|
||||
SET(CMAKE_CXX_CREATE_IMPORT_LIBRARY
|
||||
"implib -c -w <TARGET_IMPLIB> <TARGET>"
|
||||
)
|
||||
|
||||
# Create a C++ module library.
|
||||
SET(CMAKE_CXX_CREATE_SHARED_MODULE
|
||||
"<CMAKE_CXX_COMPILER> ${CMAKE_START_TEMP_FILE}-e<TARGET> -tWD <LINK_FLAGS> -tWR <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
|
||||
# Create a C++ shared library.
|
||||
# First create a module and then its import library.
|
||||
SET(CMAKE_CXX_CREATE_SHARED_LIBRARY
|
||||
${CMAKE_CXX_CREATE_SHARED_MODULE}
|
||||
${CMAKE_CXX_CREATE_IMPORT_LIBRARY})
|
||||
|
||||
# Create an import library for another target.
|
||||
SET(CMAKE_C_CREATE_IMPORT_LIBRARY ${CMAKE_CXX_CREATE_IMPORT_LIBRARY})
|
||||
|
||||
# Create a C module library.
|
||||
SET(CMAKE_C_CREATE_SHARED_MODULE
|
||||
"<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE}-e<TARGET> -tWD <LINK_FLAGS> -tWR <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
|
||||
)
|
||||
|
||||
# Create a C shared library.
|
||||
# First create a module and then its import library.
|
||||
SET(CMAKE_C_CREATE_SHARED_LIBRARY
|
||||
${CMAKE_C_CREATE_SHARED_MODULE}
|
||||
${CMAKE_C_CREATE_IMPORT_LIBRARY})
|
||||
|
||||
# create a C++ static library
|
||||
SET(CMAKE_CXX_CREATE_STATIC_LIBRARY "tlib ${CMAKE_START_TEMP_FILE}/p512 <LINK_FLAGS> /a <TARGET_QUOTED> <OBJECTS>${CMAKE_END_TEMP_FILE}")
|
||||
|
||||
# create a C static library
|
||||
SET(CMAKE_C_CREATE_STATIC_LIBRARY ${CMAKE_CXX_CREATE_STATIC_LIBRARY})
|
||||
|
||||
# compile a C++ file into an object file
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
# to parse quotes from the response file.
|
||||
SET(CMAKE_CXX_COMPILE_OBJECT
|
||||
"<CMAKE_CXX_COMPILER> <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 -P <FLAGS> -o<OBJECT> -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
||||
|
||||
# compile a C file into an object file
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
# to parse quotes from the response file.
|
||||
SET(CMAKE_C_COMPILE_OBJECT
|
||||
"<CMAKE_C_COMPILER> <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 -o<OBJECT> <FLAGS> -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
||||
|
||||
|
||||
SET(CMAKE_C_LINK_EXECUTABLE
|
||||
"<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE}-e<TARGET> <LINK_FLAGS> <FLAGS> <LINK_LIBRARIES> <OBJECTS> ${CMAKE_END_TEMP_FILE}"
|
||||
# "implib -c -w <TARGET_IMPLIB> <TARGET>"
|
||||
)
|
||||
|
||||
|
||||
SET(CMAKE_CXX_LINK_EXECUTABLE
|
||||
"<CMAKE_CXX_COMPILER> ${CMAKE_START_TEMP_FILE} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> -e<TARGET> <FLAGS> <LINK_LIBRARIES> <OBJECTS> ${CMAKE_END_TEMP_FILE}"
|
||||
# "implib -c -w <TARGET_IMPLIB> <TARGET>"
|
||||
)
|
||||
|
||||
SET (CMAKE_BUILD_TYPE Debug CACHE STRING
|
||||
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel.")
|
||||
|
||||
# extra flags for a win32 exe
|
||||
SET(CMAKE_CREATE_WIN32_EXE "-tW -tWM" )
|
||||
# extra flags for a console app
|
||||
SET(CMAKE_CREATE_CONSOLE_EXE "-tWC" )
|
||||
|
||||
SET (CMAKE_CXX_FLAGS_INIT "-tWM")
|
||||
SET (CMAKE_CXX_FLAGS_DEBUG_INIT "-Od -v")
|
||||
SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-O1 -DNDEBUG")
|
||||
SET (CMAKE_CXX_FLAGS_RELEASE_INIT "-O2 -DNDEBUG")
|
||||
SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-Od")
|
||||
SET (CMAKE_C_FLAGS_INIT "-tWM")
|
||||
SET (CMAKE_C_FLAGS_DEBUG_INIT "-Od -v")
|
||||
SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "-O1 -DNDEBUG")
|
||||
SET (CMAKE_C_FLAGS_RELEASE_INIT "-O2 -DNDEBUG")
|
||||
SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-Od")
|
||||
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_INIT "-tWM -lS:10000000 -lSc:10000000 ")
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "-v")
|
||||
SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "-v")
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT})
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
|
||||
SET (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT})
|
||||
SET (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT})
|
||||
|
||||
SET (CMAKE_C_STANDARD_LIBRARIES_INIT "import32.lib")
|
||||
SET (CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
|
||||
|
||||
# preprocess C and CXX files
|
||||
# place <DEFINES> outside the response file because Borland refuses
|
||||
# to parse quotes from the response file.
|
||||
SET (CMAKE_C_CREATE_PREPROCESSED_SOURCE
|
||||
"cpp32 <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 <FLAGS> -o<PREPROCESSED_SOURCE> -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
||||
SET (CMAKE_CXX_CREATE_PREPROCESSED_SOURCE
|
||||
"cpp32 <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 <FLAGS> -o<PREPROCESSED_SOURCE> -P -c <SOURCE>${CMAKE_END_TEMP_FILE}")
|
||||
# Borland >= 5.6 allows -P option for cpp32, <= 5.5 does not
|
|
@ -1951,15 +1951,6 @@ void cmLocalGenerator::AddSharedFlags(std::string& flags,
|
|||
flagsVar += "_FLAGS";
|
||||
this->AppendFlags(flags, this->Makefile->GetDefinition(flagsVar.c_str()));
|
||||
}
|
||||
|
||||
// Add flags specific to shared builds.
|
||||
if(cmSystemTools::IsOn(this->Makefile->GetDefinition("BUILD_SHARED_LIBS")))
|
||||
{
|
||||
flagsVar = "CMAKE_SHARED_BUILD_";
|
||||
flagsVar += lang;
|
||||
flagsVar += "_FLAGS";
|
||||
this->AppendFlags(flags, this->Makefile->GetDefinition(flagsVar.c_str()));
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -490,6 +490,9 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel
|
|||
IF(CMAKE_TEST_DIFFERENT_GENERATOR OR CMAKE_TEST_SYSTEM_LIBRARIES)
|
||||
SET(COMPLEX_TEST_CMAKELIB 0)
|
||||
ENDIF(CMAKE_TEST_DIFFERENT_GENERATOR OR CMAKE_TEST_SYSTEM_LIBRARIES)
|
||||
IF(BORLAND)
|
||||
SET(COMPLEX_TEST_CMAKELIB 0)
|
||||
ENDIF(BORLAND)
|
||||
ADD_TEST(complex ${CMAKE_CTEST_COMMAND}
|
||||
--build-and-test
|
||||
"${CMake_SOURCE_DIR}/Tests/Complex"
|
||||
|
|
Loading…
Reference in New Issue