CMakeLists.txt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. PROJECT(dcc_original)
  2. cmake_minimum_required(VERSION 3.1)
  3. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  4. set(CMAKE_AUTOMOC ON)
  5. find_package(Qt5Core)
  6. OPTION(dcc_build_tests "Enable unit tests." OFF)
  7. #SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR})
  8. ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D__UNIX__ -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS)
  9. IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
  10. ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS -D__UNIX__ -D_CRT_NONSTDC_NO_DEPRECATE -DNOMINMAX)
  11. ADD_DEFINITIONS(/W4)
  12. ELSE()
  13. #-D_GLIBCXX_DEBUG
  14. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11")
  15. SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} " ) #--coverage
  16. ENDIF()
  17. SET(CMAKE_CXX_STANDARD 11)
  18. SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeScripts;${CMAKE_MODULE_PATH})
  19. SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR})
  20. include(cotire)
  21. FIND_PACKAGE(Boost)
  22. IF(dcc_build_tests)
  23. enable_testing()
  24. FIND_PACKAGE(GMock)
  25. ENDIF()
  26. INCLUDE_DIRECTORIES(
  27. 3rd_party/libdisasm
  28. include
  29. include/idioms
  30. common
  31. ${Boost_INCLUDE_DIRS}
  32. )
  33. ADD_SUBDIRECTORY(3rd_party)
  34. ADD_SUBDIRECTORY(common)
  35. ADD_SUBDIRECTORY(tools)
  36. set(dcc_LIB_SOURCES
  37. src/CallConvention.cpp
  38. src/ast.cpp
  39. src/backend.cpp
  40. src/bundle.cpp
  41. src/chklib.cpp
  42. src/comwrite.cpp
  43. src/control.cpp
  44. src/dataflow.cpp
  45. src/disassem.cpp
  46. src/DccFrontend.cpp
  47. src/error.cpp
  48. src/fixwild.cpp
  49. src/graph.cpp
  50. src/hlicode.cpp
  51. src/hltype.cpp
  52. src/machine_x86.cpp
  53. src/icode.cpp
  54. src/RegisterNode
  55. src/idioms.cpp
  56. src/idioms/idiom1.cpp
  57. src/idioms/arith_idioms.cpp
  58. src/idioms/call_idioms.cpp
  59. src/idioms/epilogue_idioms.cpp
  60. src/idioms/mov_idioms.cpp
  61. src/idioms/neg_idioms.cpp
  62. src/idioms/shift_idioms.cpp
  63. src/idioms/xor_idioms.cpp
  64. src/locident.cpp
  65. src/liveness_set.cpp
  66. src/parser.cpp
  67. src/procs.cpp
  68. src/project.cpp
  69. src/Procedure.cpp
  70. src/proplong.cpp
  71. src/reducible.cpp
  72. src/scanner.cpp
  73. src/symtab.cpp
  74. src/udm.cpp
  75. src/BasicBlock.cpp
  76. src/dcc_interface.cpp
  77. )
  78. set(dcc_SOURCES
  79. src/dcc.cpp
  80. )
  81. set(dcc_HEADERS
  82. include/ast.h
  83. include/bundle.h
  84. include/BinaryImage.h
  85. include/DccFrontend.h
  86. include/Enums.h
  87. include/dcc.h
  88. include/disassem.h
  89. include/dosdcc.h
  90. include/error.h
  91. include/graph.h
  92. include/hlicode.h
  93. include/machine_x86.h
  94. include/icode.h
  95. include/idioms/idiom.h
  96. include/idioms/idiom1.h
  97. include/idioms/arith_idioms.h
  98. include/idioms/call_idioms.h
  99. include/idioms/epilogue_idioms.h
  100. include/idioms/mov_idioms.h
  101. include/idioms/neg_idioms.h
  102. include/idioms/shift_idioms.h
  103. include/idioms/xor_idioms.h
  104. include/locident.h
  105. include/CallConvention.h
  106. include/project.h
  107. include/scanner.h
  108. include/state.h
  109. include/symtab.h
  110. include/types.h
  111. include/Procedure.h
  112. include/StackFrame.h
  113. include/BasicBlock.h
  114. include/dcc_interface.h
  115. )
  116. SOURCE_GROUP(Source FILES ${dcc_SOURCES})
  117. SOURCE_GROUP(Headers FILES ${dcc_HEADERS})
  118. ADD_LIBRARY(dcc_lib STATIC ${dcc_LIB_SOURCES} ${dcc_HEADERS})
  119. qt5_use_modules(dcc_lib Core)
  120. #cotire(dcc_lib)
  121. ADD_EXECUTABLE(dcc_original ${dcc_SOURCES} ${dcc_HEADERS})
  122. ADD_DEPENDENCIES(dcc_original dcc_lib)
  123. TARGET_LINK_LIBRARIES(dcc_original dcc_lib dcc_hash disasm_s)
  124. qt5_use_modules(dcc_original Core)
  125. SET_PROPERTY(TARGET dcc_original PROPERTY CXX_STANDARD 11)
  126. SET_PROPERTY(TARGET dcc_original PROPERTY CXX_STANDARD_REQUIRED ON)
  127. #ADD_SUBDIRECTORY(gui)
  128. if(dcc_build_tests)
  129. ADD_SUBDIRECTORY(src)
  130. endif()