Windows-bcc32.cmake 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. # Borland shared library issues:
  2. # When building dll's with borland, the run time dll c/c++ library from
  3. # borland must be used. This is specified with the -tWR compiler option.
  4. # This flag must be present during compilation of c and c++ files and
  5. # for the linking of exe and dll files. But wait, there is more,
  6. # the -tWR flag must come after the -tWD and -tWM flags, but before the -tWC flag.
  7. # Order counts, so be careful!
  8. # if building static, you don't want the -tWR flag as it will make your program
  9. # depend on the borland run time dll.
  10. # So, if a project has CMAKE_BUILD_SHARED on, then the -tWR flag is added all over, and
  11. # it is left out if not.
  12. SET(CMAKE_LIBRARY_PATH_FLAG "-L")
  13. SET(CMAKE_LINK_LIBRARY_FLAG "")
  14. SET(CMAKE_SHARED_BUILD_CXX_FLAGS "-tWR")
  15. SET(CMAKE_SHARED_BUILD_C_FLAGS "-tWR")
  16. SET(BORLAND 1)
  17. SET(CMAKE_FIND_LIBRARY_SUFFIXES "-bcc.lib" ".lib")
  18. # uncomment these out to debug makefiles
  19. #SET(CMAKE_START_TEMP_FILE "")
  20. #SET(CMAKE_END_TEMP_FILE "")
  21. #SET(CMAKE_VERBOSE_MAKEFILE 1)
  22. # Borland cannot handle + in the file name, so mangle object file name
  23. SET (CMAKE_MANGLE_OBJECT_FILE_NAMES "ON")
  24. # Create an import library for another target.
  25. SET(CMAKE_CXX_CREATE_IMPORT_LIBRARY
  26. "implib -c -w <TARGET_IMPLIB> <TARGET>"
  27. )
  28. # Create a C++ module library.
  29. SET(CMAKE_CXX_CREATE_SHARED_MODULE
  30. "<CMAKE_CXX_COMPILER> ${CMAKE_START_TEMP_FILE}-e<TARGET> -tWD <LINK_FLAGS> -tWR <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
  31. )
  32. # Create a C++ shared library.
  33. # First create a module and then its import library.
  34. SET(CMAKE_CXX_CREATE_SHARED_LIBRARY
  35. ${CMAKE_CXX_CREATE_SHARED_MODULE}
  36. ${CMAKE_CXX_CREATE_IMPORT_LIBRARY})
  37. # Create an import library for another target.
  38. SET(CMAKE_C_CREATE_IMPORT_LIBRARY ${CMAKE_CXX_CREATE_IMPORT_LIBRARY})
  39. # Create a C module library.
  40. SET(CMAKE_C_CREATE_SHARED_MODULE
  41. "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE}-e<TARGET> -tWD <LINK_FLAGS> -tWR <LINK_LIBRARIES> <OBJECTS>${CMAKE_END_TEMP_FILE}"
  42. )
  43. # Create a C shared library.
  44. # First create a module and then its import library.
  45. SET(CMAKE_C_CREATE_SHARED_LIBRARY
  46. ${CMAKE_C_CREATE_SHARED_MODULE}
  47. ${CMAKE_C_CREATE_IMPORT_LIBRARY})
  48. # create a C++ static library
  49. SET(CMAKE_CXX_CREATE_STATIC_LIBRARY "tlib ${CMAKE_START_TEMP_FILE}/p512 <LINK_FLAGS> /a <TARGET_QUOTED> <OBJECTS>${CMAKE_END_TEMP_FILE}")
  50. # create a C static library
  51. SET(CMAKE_C_CREATE_STATIC_LIBRARY ${CMAKE_CXX_CREATE_STATIC_LIBRARY})
  52. # compile a C++ file into an object file
  53. # place <DEFINES> outside the response file because Borland refuses
  54. # to parse quotes from the response file.
  55. SET(CMAKE_CXX_COMPILE_OBJECT
  56. "<CMAKE_CXX_COMPILER> <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 -P <FLAGS> -o<OBJECT> -c <SOURCE>${CMAKE_END_TEMP_FILE}")
  57. # compile a C file into an object file
  58. # place <DEFINES> outside the response file because Borland refuses
  59. # to parse quotes from the response file.
  60. SET(CMAKE_C_COMPILE_OBJECT
  61. "<CMAKE_C_COMPILER> <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 -o<OBJECT> <FLAGS> -c <SOURCE>${CMAKE_END_TEMP_FILE}")
  62. SET(CMAKE_C_LINK_EXECUTABLE
  63. "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE}-e<TARGET> <LINK_FLAGS> <FLAGS> <LINK_LIBRARIES> <OBJECTS> ${CMAKE_END_TEMP_FILE}"
  64. # "implib -c -w <TARGET_IMPLIB> <TARGET>"
  65. )
  66. SET(CMAKE_CXX_LINK_EXECUTABLE
  67. "<CMAKE_CXX_COMPILER> ${CMAKE_START_TEMP_FILE} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> -e<TARGET> <FLAGS> <LINK_LIBRARIES> <OBJECTS> ${CMAKE_END_TEMP_FILE}"
  68. # "implib -c -w <TARGET_IMPLIB> <TARGET>"
  69. )
  70. SET (CMAKE_BUILD_TYPE Debug CACHE STRING
  71. "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel.")
  72. # extra flags for a win32 exe
  73. SET(CMAKE_CREATE_WIN32_EXE "-tW -tWM" )
  74. # extra flags for a console app
  75. SET(CMAKE_CREATE_CONSOLE_EXE "-tWC" )
  76. SET (CMAKE_CXX_FLAGS_INIT "-tWM")
  77. SET (CMAKE_CXX_FLAGS_DEBUG_INIT "-Od -v")
  78. SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-O1 -DNDEBUG")
  79. SET (CMAKE_CXX_FLAGS_RELEASE_INIT "-O2 -DNDEBUG")
  80. SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-Od")
  81. SET (CMAKE_C_FLAGS_INIT "-tWM")
  82. SET (CMAKE_C_FLAGS_DEBUG_INIT "-Od -v")
  83. SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "-O1 -DNDEBUG")
  84. SET (CMAKE_C_FLAGS_RELEASE_INIT "-O2 -DNDEBUG")
  85. SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-Od")
  86. SET (CMAKE_EXE_LINKER_FLAGS_INIT "-tWM -lS:10000000 -lSc:10000000 ")
  87. SET (CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT "-v")
  88. SET (CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT "-v")
  89. SET (CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT})
  90. SET (CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT ${CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT})
  91. SET (CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO_INIT})
  92. SET (CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_SHARED_LINKER_FLAGS_INIT})
  93. SET (CMAKE_MODULE_LINKER_FLAGS_DEBUG_INIT ${CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT})
  94. SET (CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO_INIT ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO_INIT})
  95. SET (CMAKE_C_STANDARD_LIBRARIES_INIT "import32.lib")
  96. SET (CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
  97. # preprocess C and CXX files
  98. # place <DEFINES> outside the response file because Borland refuses
  99. # to parse quotes from the response file.
  100. SET (CMAKE_C_CREATE_PREPROCESSED_SOURCE
  101. "cpp32 <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 <FLAGS> -o<PREPROCESSED_SOURCE> -c <SOURCE>${CMAKE_END_TEMP_FILE}")
  102. SET (CMAKE_CXX_CREATE_PREPROCESSED_SOURCE
  103. "cpp32 <DEFINES> ${CMAKE_START_TEMP_FILE}-DWIN32 <FLAGS> -o<PREPROCESSED_SOURCE> -P -c <SOURCE>${CMAKE_END_TEMP_FILE}")
  104. # Borland >= 5.6 allows -P option for cpp32, <= 5.5 does not