/platforms/unix/CMakeLists.txt

https://github.com/Geal/Squeak-VM · CMake · 154 lines · 113 code · 38 blank · 3 comment · 0 complexity · ff362536424493eecca537575702d843 MD5 · raw file

  1. # Yes, it's true: you can write makefiles in COBOL.
  2. #
  3. # Last edited: 2010-05-13 12:54:20 by piumarta on emilia-2.local
  4. PROJECT (squeak)
  5. CMAKE_MINIMUM_REQUIRED (VERSION 2.6.2)
  6. IF (NOT DEFINED VM_HOST OR NOT DEFINED VM_VERSION)
  7. MESSAGE (FATAL_ERROR "
  8. You MUST NOT run CMake directly the first time you configure a build.
  9. Run 'platforms/unix/cmake/configure' from within your build directory."
  10. )
  11. ENDIF (NOT DEFINED VM_HOST OR NOT DEFINED VM_VERSION)
  12. SET (prefix ${CMAKE_INSTALL_PREFIX})
  13. SET (version ${VM_VERSION})
  14. SET (bindir bin)
  15. SET (imgdir lib/squeak)
  16. SET (plgdir lib/squeak/${version})
  17. SET (mandir man/man1)
  18. SET (docdir share/doc/squeak-${version})
  19. GET_CMAKE_PROPERTY (vars VARIABLES)
  20. FOREACH (opt ${vars})
  21. IF (opt MATCHES "OPT--.*")
  22. STRING (REGEX REPLACE "OPT--(.*)" "\\1" var ${opt})
  23. MESSAGE (STATUS "Setting ${var}=${${opt}}")
  24. SET (${var} ${${opt}})
  25. ENDIF ()
  26. ENDFOREACH (opt)
  27. SET (CMAKE_INSTALL_PREFIX ${prefix})
  28. SET (bld ${CMAKE_BINARY_DIR})
  29. SET (unix ${CMAKE_SOURCE_DIR})
  30. SET (config ${unix}/cmake)
  31. GET_FILENAME_COMPONENT (cross ${unix}/../Cross ABSOLUTE)
  32. IF (OPT--src)
  33. GET_FILENAME_COMPONENT (src ${OPT--src} ABSOLUTE)
  34. ELSE (SRC)
  35. SET (src ${unix}/src)
  36. ENDIF (OPT--src)
  37. IF (NOT EXISTS ${src})
  38. MESSAGE (FATAL_ERROR "
  39. Source directory ${src} does not exist."
  40. )
  41. ENDIF (NOT EXISTS ${src})
  42. INCLUDE (${config}/Utils.cmake)
  43. INCLUDE (${config}/Plugins.cmake)
  44. STRING (REGEX REPLACE "([^-]*)-([^-]*)-([^-]*).*" "\\1" VM_HOST_CPU ${VM_HOST})
  45. STRING (REGEX REPLACE "([^-]*)-([^-]*)-([^-]*).*" "\\2" VM_HOST_VENDOR ${VM_HOST})
  46. STRING (REGEX REPLACE "([^-]*)-([^-]*)-([^-]*).*" "\\3" VM_HOST_OS ${VM_HOST})
  47. SET (vm-host "${VM_HOST}")
  48. SET (vm-host-os "${VM_HOST_OS}")
  49. SET (vm-host-cpu "${VM_HOST_CPU}")
  50. IF (OPT--CFLAGS)
  51. SET (CMAKE_C_FLAGS "${OPT--CFLAGS}")
  52. ENDIF ()
  53. IF (CMAKE_ARCH_FLAGS STREQUAL "-m32")
  54. IF (VM_HOST_CPU STREQUAL "x86_64")
  55. SET (VM_HOST_CPU "i386")
  56. ENDIF ()
  57. ENDIF ()
  58. IF (NOT CMAKE_C_FLAGS)
  59. IF (CMAKE_COMPILER_IS_GNUCC)
  60. IF (VM_HOST_CPU MATCHES "i.86")
  61. SET (CMAKE_C_FLAGS "-g -O2 -fomit-frame-pointer")
  62. ELSEIF (VM_HOST_CPU STREQUAL "ppc" OR VM_HOST_CPU STREQUAL "powerpc")
  63. SET (CMAKE_C_FLAGS "-g -O3 -funroll-loops -mcpu=750 -mno-fused-madd")
  64. ENDIF ()
  65. ELSE ()
  66. SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS_RELEASE}")
  67. ENDIF (CMAKE_COMPILER_IS_GNUCC)
  68. ENDIF (NOT CMAKE_C_FLAGS)
  69. IF (NOT CMAKE_C_FLAGS)
  70. SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS_RELEASE}")
  71. ENDIF (NOT CMAKE_C_FLAGS)
  72. IF (CMAKE_ARCH_FLAGS)
  73. SET (CMAKE_C_FLAGS "${CMAKE_ARCH_FLAGS} ${CMAKE_C_FLAGS}")
  74. ENDIF (CMAKE_ARCH_FLAGS)
  75. MESSAGE (STATUS "Using CFLAGS ${CMAKE_C_FLAGS}")
  76. MACRO (USE_LIBRARY lib)
  77. LIST (APPEND squeak_libs "${lib}")
  78. ENDMACRO (USE_LIBRARY)
  79. MACRO (USE_FRAMEWORK fwk)
  80. USE_LIBRARY ("-framework ${fwk}")
  81. ENDMACRO (USE_FRAMEWORK)
  82. MACRO (CONFIG_DEFINE var)
  83. LIST (APPEND config_vars "${var}")
  84. ENDMACRO (CONFIG_DEFINE var)
  85. SET (UNIX 1)
  86. CONFIG_DEFINE (UNIX)
  87. SET (ioMicroSecondClock ioMicroSeconds)
  88. CONFIG_DEFINE (ioMicroSecondClock)
  89. SET (ioUtcWithOffset sqUnixUtcWithOffset)
  90. CONFIG_DEFINE (ioUtcWithOffset)
  91. SET (CMAKE_SKIP_BUILD_RPATH TRUE)
  92. SET (CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
  93. SET (CMAKE_INSTALL_RPATH "")
  94. SET (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
  95. INCLUDE (${unix}/vm/config.cmake)
  96. CONFIGURE_PLUGINS ()
  97. LIST (REMOVE_DUPLICATES config_vars)
  98. FILE (WRITE ${bld}/config.h.in "")
  99. FOREACH (var ${config_vars})
  100. FILE (APPEND ${bld}/config.h.in "#cmakedefine ${var} @${var}@\n")
  101. ENDFOREACH (var)
  102. CONFIGURE_FILE (${bld}/config.h.in ${bld}/config.h)
  103. INCLUDE (${unix}/vm/build.cmake)
  104. BUILD_PLUGINS ()
  105. ADD_SUBDIRECTORY (${unix}/npsqueak)
  106. SET (cmake ${unix}/../../cmake)
  107. IF (EXISTS ${cmake}/Packages.cmake)
  108. INCLUDE (${cmake}/Packages.cmake)
  109. ENDIF ()
  110. GET_CMAKE_PROPERTY (tmp VARIABLES)
  111. LIST (REMOVE_ITEM tmp tmp)
  112. LIST (SORT tmp)
  113. FILE (WRITE ${bld}/config.status "")
  114. FOREACH (var ${tmp})
  115. FILE (APPEND ${bld}/config.status "${var}=${${var}}\n")
  116. ENDFOREACH ()