CMakeLists.txt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. IF(NOT KWSYS_NAMESPACE)
  2. SET(KWSYS_NAMESPACE "kwsys")
  3. SET(KWSYS_DEFAULTS 1)
  4. ENDIF(NOT KWSYS_NAMESPACE)
  5. PROJECT(${KWSYS_NAMESPACE})
  6. INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFileCXX.cmake)
  7. INCLUDE(${CMAKE_ROOT}/Modules/TestForSTDNamespace.cmake)
  8. INCLUDE(${CMAKE_ROOT}/Modules/TestForANSIForScope.cmake)
  9. CHECK_INCLUDE_FILE_CXX("sstream" CMAKE_HAS_ANSI_STRING_STREAM)
  10. CHECK_INCLUDE_FILE_CXX("iosfwd" CMAKE_ANSI_IOSFWD_HEADER)
  11. IF(NOT CMAKE_ANSI_IOSFWD_HEADER)
  12. SET(CMAKE_NO_ANSI_STREAM_HEADERS 1)
  13. ENDIF(NOT CMAKE_ANSI_IOSFWD_HEADER)
  14. IF(NOT CMAKE_HAS_ANSI_STRING_STREAM)
  15. SET(CMAKE_NO_ANSI_STRING_STREAM 1)
  16. ENDIF(NOT CMAKE_HAS_ANSI_STRING_STREAM)
  17. IF(KWSYS_FORCE_OLD_STREAMS)
  18. SET(CMAKE_NO_ANSI_STREAM_HEADERS 1)
  19. SET(CMAKE_NO_ANSI_STRING_STREAM 1)
  20. ENDIF(KWSYS_FORCE_OLD_STREAMS)
  21. SET(KWSYS_NO_STD_NAMESPACE ${CMAKE_NO_STD_NAMESPACE})
  22. SET(KWSYS_NO_ANSI_STREAM_HEADERS ${CMAKE_NO_ANSI_STREAM_HEADERS})
  23. SET(KWSYS_NO_ANSI_STRING_STREAM ${CMAKE_NO_ANSI_STRING_STREAM})
  24. SET(KWSYS_NO_ANSI_FOR_SCOPE ${CMAKE_NO_ANSI_FOR_SCOPE})
  25. IF(CMAKE_ANSI_CFLAGS)
  26. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_ANSI_CFLAGS}")
  27. ENDIF(CMAKE_ANSI_CFLAGS)
  28. SET(CLASSES Directory RegularExpression SystemTools)
  29. SET(H Process)
  30. SET(HXX Configure)
  31. IF(NOT UNIX)
  32. ADD_EXECUTABLE(${KWSYS_NAMESPACE}ProcessFwd9x ProcessFwd9x.c)
  33. ADD_EXECUTABLE(${KWSYS_NAMESPACE}EncodeExecutable EncodeExecutable.c)
  34. SET(SRCS ProcessWin32.c ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c)
  35. SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
  36. PROPERTIES GENERATED 1)
  37. ELSE(NOT UNIX)
  38. SET(SRCS ProcessUNIX.c)
  39. ENDIF(NOT UNIX)
  40. SET(KWSYS_INCLUDES)
  41. FOREACH(c ${CLASSES})
  42. SET(SRCS ${SRCS} ${c}.cxx)
  43. CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/${c}.hxx.in
  44. ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/${c}.hxx
  45. @ONLY IMMEDIATE)
  46. SET(KWSYS_INCLUDES ${KWSYS_INCLUDES}
  47. ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/${c}.hxx)
  48. ENDFOREACH(c)
  49. FOREACH(h ${H})
  50. CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/${h}.h.in
  51. ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/${h}.h
  52. @ONLY IMMEDIATE)
  53. SET(KWSYS_INCLUDES ${KWSYS_INCLUDES}
  54. ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/${h}.h)
  55. ENDFOREACH(h)
  56. FOREACH(h ${HXX})
  57. CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/${h}.hxx.in
  58. ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/${h}.hxx
  59. @ONLY IMMEDIATE)
  60. SET(KWSYS_INCLUDES ${KWSYS_INCLUDES}
  61. ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/${h}.hxx)
  62. ENDFOREACH(h)
  63. ADD_LIBRARY(${KWSYS_NAMESPACE} ${SRCS})
  64. ADD_DEFINITIONS("-DKWSYS_NAMESPACE=${KWSYS_NAMESPACE}")
  65. INCLUDE_DIRECTORIES(BEFORE ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE})
  66. IF(KWSYS_LIBRARY_INSTALL_DIR)
  67. INSTALL_TARGETS(${KWSYS_LIBRARY_INSTALL_DIR} ${KWSYS_NAMESPACE})
  68. ENDIF(KWSYS_LIBRARY_INSTALL_DIR)
  69. IF(KWSYS_INCLUDE_INSTALL_DIR)
  70. INSTALL_FILES(${KWSYS_INCLUDE_INSTALL_DIR}/${KWSYS_NAMESPACE}
  71. FILES ${KWSYS_INCLUDES})
  72. ENDIF(KWSYS_INCLUDE_INSTALL_DIR)
  73. #-----------------------------------------------------------------------------
  74. # Create STL header wrappers to block warnings in the STL headers.
  75. FOREACH(header algorithm deque iterator list map numeric queue set stack string
  76. utility vector)
  77. SET(KWSYS_STL_HEADER "${header}")
  78. CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_std.h.in
  79. ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/std/${header}
  80. @ONLY IMMEDIATE)
  81. IF(KWSYS_INCLUDE_INSTALL_DIR)
  82. INSTALL_FILES(${KWSYS_INCLUDE_INSTALL_DIR}/${KWSYS_NAMESPACE}
  83. FILES ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/std/${header})
  84. ENDIF(KWSYS_INCLUDE_INSTALL_DIR)
  85. ENDFOREACH(header)
  86. FOREACH(header iostream fstream sstream iosfwd)
  87. CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_std_${header}.h.in
  88. ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/std/${header}
  89. @ONLY IMMEDIATE)
  90. IF(KWSYS_INCLUDE_INSTALL_DIR)
  91. INSTALL_FILES(${KWSYS_INCLUDE_INSTALL_DIR}/${KWSYS_NAMESPACE}
  92. FILES ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/std/${header})
  93. ENDIF(KWSYS_INCLUDE_INSTALL_DIR)
  94. ENDFOREACH(header)
  95. IF(KWSYS_DEFAULTS)
  96. INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/..)
  97. ADD_EXECUTABLE(test1 test1.cxx)
  98. TARGET_LINK_LIBRARIES(test1 ${KWSYS_NAMESPACE})
  99. ENDIF(KWSYS_DEFAULTS)
  100. IF(NOT UNIX)
  101. SET(BIN_DIR ${CMAKE_CURRENT_BINARY_DIR})
  102. IF(EXECUTABLE_OUTPUT_PATH)
  103. SET(BIN_DIR ${EXECUTABLE_OUTPUT_PATH})
  104. ENDIF(EXECUTABLE_OUTPUT_PATH)
  105. SET(MAKE_SYSTEM)
  106. SET(CFG_INTDIR "/${CMAKE_CFG_INTDIR}")
  107. IF(CMAKE_BUILD_TOOL MATCHES "make")
  108. SET(CFG_INTDIR "")
  109. ENDIF(CMAKE_BUILD_TOOL MATCHES "make")
  110. SET(CMD ${BIN_DIR}${CFG_INTDIR}/${KWSYS_NAMESPACE}EncodeExecutable.exe)
  111. SET(FWD ${BIN_DIR}${CFG_INTDIR}/${KWSYS_NAMESPACE}ProcessFwd9x.exe)
  112. # Dependency work-around for cmake 1.6.7 bug.
  113. SET(DEP ${CMD} ${FWD})
  114. IF(NOT EXECUTABLE_OUTPUT_PATH)
  115. IF(CMAKE_GENERATOR MATCHES "Borland Makefiles")
  116. SET(DEP ${KWSYS_NAMESPACE}EncodeExecutable.exe ${KWSYS_NAMESPACE}ProcessFwd9x.exe)
  117. ENDIF(CMAKE_GENERATOR MATCHES "Borland Makefiles")
  118. ENDIF(NOT EXECUTABLE_OUTPUT_PATH)
  119. ADD_CUSTOM_COMMAND(
  120. TARGET ${KWSYS_NAMESPACE}
  121. SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/ProcessFwd9x.c
  122. COMMAND ${CMD}
  123. ARGS ${FWD} ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
  124. ${KWSYS_NAMESPACE} ProcessFwd9x
  125. OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/${KWSYS_NAMESPACE}ProcessFwd9xEnc.c
  126. DEPENDS ${DEP})
  127. ADD_DEPENDENCIES(${KWSYS_NAMESPACE} ${KWSYS_NAMESPACE}ProcessFwd9x
  128. ${KWSYS_NAMESPACE}EncodeExecutable)
  129. ENDIF(NOT UNIX)