CMakeLists.txt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
  2. ################### Variables. ####################
  3. # Change if you want modify path or other values. #
  4. ###################################################
  5. set(PROJECT_NAME BeefBoot)
  6. # Output Variables
  7. set(OUTPUT_DEBUG Debug/bin)
  8. set(OUTPUT_RELEASE Release/bin)
  9. ############## CMake Project ################
  10. # The main options of project #
  11. #############################################
  12. project(${PROJECT_NAME} CXX C)
  13. set (CMAKE_CXX_STANDARD 14)
  14. add_definitions(-D_GLIBCXX_USE_CXX11_ABI=1)
  15. #set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  16. # Define Release by default.
  17. if(NOT CMAKE_BUILD_TYPE)
  18. set(CMAKE_BUILD_TYPE "Debug")
  19. message(STATUS "Build type not specified: Use Debug by default.")
  20. endif(NOT CMAKE_BUILD_TYPE)
  21. # Definition of Macros
  22. add_definitions(
  23. -DIDEHELPER_EXPORTS
  24. -DBFSYSLIB_DYNAMIC
  25. -DUNICODE
  26. -D_UNICODE
  27. -DBF_NO_FBX
  28. -DFT2_BUILD_LIBRARY
  29. -DBFSYSLIB_DYNAMIC
  30. )
  31. if (${APPLE})
  32. include_directories(
  33. .
  34. ../
  35. ../BeefySysLib/
  36. ../BeefySysLib/third_party
  37. ../BeefySysLib/third_party/freetype/include
  38. ../extern/llvm-project_13_0_1/llvm/include
  39. ../extern/llvm-project_13_0_1/llvm/lib/Target
  40. ../IDEHelper
  41. ../BeefySysLib/platform/osx
  42. )
  43. else()
  44. include_directories(
  45. .
  46. ../
  47. ../BeefySysLib/
  48. ../BeefySysLib/third_party
  49. ../BeefySysLib/third_party/freetype/include
  50. ../extern/llvm-project_13_0_1/llvm/include
  51. ../extern/llvm-project_13_0_1/llvm/lib/Target
  52. ../IDEHelper
  53. ../BeefySysLib/platform/linux
  54. )
  55. endif()
  56. ############## Artefacts Output #################
  57. # Defines outputs , depending Debug or Release. #
  58. #################################################
  59. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  60. add_definitions(
  61. -D_DEBUG
  62. )
  63. include_directories(
  64. ../extern/llvm_linux_13_0_1/include
  65. ../extern/llvm_linux_13_0_1/lib/Target/X86
  66. )
  67. set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
  68. set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_13_0_1/lib")
  69. else()
  70. include_directories(
  71. ../extern/llvm_linux_rel_13_0_1/include
  72. ../extern/llvm_linux_rel_13_0_1/lib/Target/X86
  73. )
  74. set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
  75. set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_rel_13_0_1/lib")
  76. endif()
  77. ################### Dependencies ##################
  78. # Add Dependencies to project. #
  79. ###################################################
  80. option(BUILD_DEPENDS
  81. "Build other CMake project."
  82. ON
  83. )
  84. # Dependencies : disable BUILD_DEPENDS to link with lib already build.
  85. if(BUILD_DEPENDS)
  86. else()
  87. endif()
  88. ################# Flags ################
  89. # Defines Flags for Windows and Linux. #
  90. ########################################
  91. if(MSVC)
  92. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W3 /MD /MDd /Od /EHsc")
  93. set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /W3 /GL /Od /Oi /Gy /EHsc")
  94. endif(MSVC)
  95. if(NOT MSVC)
  96. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-multichar -Wno-invalid-offsetof")
  97. if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
  98. #set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
  99. endif()
  100. endif(NOT MSVC)
  101. ################ Files ################
  102. # -- Add files to project. -- #
  103. #######################################
  104. file(GLOB SRC_FILES
  105. BeefBoot.cpp
  106. BootApp.cpp
  107. )
  108. # Add executable to build.
  109. add_executable(${PROJECT_NAME}
  110. ${SRC_FILES}
  111. )
  112. execute_process(
  113. COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_13_0_1/bin/llvm-config --system-libs --link-static
  114. OUTPUT_VARIABLE LLVM_SYSTEM_LIBS
  115. OUTPUT_STRIP_TRAILING_WHITESPACE
  116. )
  117. if (${APPLE})
  118. set(TARGET_LIBS_OS "")
  119. else()
  120. #set(TARGET_LIBS_OS "curses")
  121. #set(TARGET_LIBS_OS "-Xlinker --no-demangle -v")
  122. set(TARGET_LIBS_OS "${LLVM_SYSTEM_LIBS}")
  123. endif()
  124. # Link with other dependencies.
  125. if(MSVC)
  126. target_link_libraries(${PROJECT_NAME} BeefySysLib IDEHelper kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib)
  127. else()
  128. target_link_libraries(${PROJECT_NAME} BeefySysLib
  129. IDEHelper
  130. ${TARGET_LIBS_OS}
  131. #${LLVM_LIB}/libLLVMSupport.a
  132. )
  133. endif()