CMakeLists.txt 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. cmake_minimum_required(VERSION 3.5)
  2. ################### Variables. ####################
  3. # Change if you want modify path or other values. #
  4. ###################################################
  5. set(PROJECT_NAME BeefySysLib)
  6. # Output Variables
  7. set(OUTPUT_DEBUG Debug/bin)
  8. set(CMAKE_DEBUG_POSTFIX "_d")
  9. set(OUTPUT_RELEASE Release/bin)
  10. ############## CMake Project ################
  11. # The main options of project #
  12. #############################################
  13. project(${PROJECT_NAME} CXX C)
  14. # Define Debug by default.
  15. if(NOT CMAKE_BUILD_TYPE)
  16. set(CMAKE_BUILD_TYPE "Debug")
  17. message(STATUS "Build type not specified: Use Debug by default.")
  18. endif(NOT CMAKE_BUILD_TYPE)
  19. # Definition of Macros
  20. add_definitions(
  21. -DIDEHELPER_EXPORTS
  22. -DBFSYSLIB_DYNAMIC
  23. -DUNICODE
  24. -D_UNICODE
  25. -DBF_NO_FBX
  26. -DFT2_BUILD_LIBRARY
  27. -DBFSYSLIB_DYNAMIC
  28. -DBP_DYNAMIC
  29. )
  30. INCLUDE(CheckIncludeFileCXX)
  31. CHECK_INCLUDE_FILE_CXX(backtrace.h HAVE_BACKTRACE_HEADERS)
  32. if (HAVE_BACKTRACE_HEADERS)
  33. add_definitions(-DBFP_HAS_BACKTRACE)
  34. endif ()
  35. set (CMAKE_CXX_STANDARD 11)
  36. if (${APPLE})
  37. include_directories(
  38. .
  39. platform/osx
  40. platform/darwin
  41. third_party
  42. third_party/freetype/include
  43. ../extern
  44. )
  45. else()
  46. include_directories(
  47. .
  48. platform/linux
  49. third_party
  50. third_party/freetype/include
  51. ../extern
  52. )
  53. endif()
  54. ############## Artefacts Output #################
  55. # Defines outputs , depending Debug or Release. #
  56. #################################################
  57. if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  58. add_definitions(
  59. -D_DEBUG
  60. )
  61. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
  62. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
  63. set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
  64. else()
  65. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
  66. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
  67. set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
  68. endif()
  69. ################### Dependencies ##################
  70. # Add Dependencies to project. #
  71. ###################################################
  72. option(BUILD_DEPENDS
  73. "Build other CMake project."
  74. ON
  75. )
  76. # Dependencies : disable BUILD_DEPENDS to link with lib already build.
  77. if(BUILD_DEPENDS)
  78. else()
  79. endif()
  80. ################# Flags ################
  81. # Defines Flags for Windows and Linux. #
  82. ########################################
  83. if(MSVC)
  84. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W3 /MD /MDd /Od /EHsc")
  85. set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /W3 /GL /Od /Oi /Gy /EHsc")
  86. endif(MSVC)
  87. if(NOT MSVC)
  88. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-multichar")
  89. endif(NOT MSVC)
  90. if (DEFINED BF_ENABLE_SDL)
  91. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBF_ENABLE_SDL")
  92. endif()
  93. ################ Files ################
  94. # -- Add files to project. -- #
  95. #######################################
  96. file(GLOB SRC_FILES
  97. BeefySysLib.cpp
  98. BFApp.cpp
  99. BFWindow.cpp
  100. CachedDataStream.cpp
  101. Common.cpp
  102. DataStream.cpp
  103. FileStream.cpp
  104. MemStream.cpp
  105. ResLib.cpp
  106. Startup.cpp
  107. fbx/FBXReader.cpp
  108. gfx/DrawLayer.cpp
  109. gfx/FTFont.cpp
  110. gfx/ModelDef.cpp
  111. gfx/ModelInstance.cpp
  112. gfx/RenderCmd.cpp
  113. gfx/RenderDevice.cpp
  114. gfx/RenderTarget.cpp
  115. gfx/Shader.cpp
  116. gfx/Texture.cpp
  117. img/BFIData.cpp
  118. img/ImageAdjustments.cpp
  119. img/ImageData.cpp
  120. img/ImageUtils.cpp
  121. img/ImgEffects.cpp
  122. img/JPEGData.cpp
  123. img/PNGData.cpp
  124. img/PSDReader.cpp
  125. img/PVRData.cpp
  126. img/TGAData.cpp
  127. third_party/freetype/src/autofit/autofit.c
  128. third_party/freetype/src/base/ftbase.c
  129. third_party/freetype/src/base/ftbbox.c
  130. third_party/freetype/src/base/ftbitmap.c
  131. third_party/freetype/src/base/ftdebug.c
  132. third_party/freetype/src/base/ftfntfmt.c
  133. third_party/freetype/src/base/ftfstype.c
  134. third_party/freetype/src/base/ftgasp.c
  135. third_party/freetype/src/base/ftglyph.c
  136. third_party/freetype/src/base/ftgxval.c
  137. third_party/freetype/src/base/ftinit.c
  138. third_party/freetype/src/base/ftlcdfil.c
  139. third_party/freetype/src/base/ftmm.c
  140. third_party/freetype/src/base/ftotval.c
  141. third_party/freetype/src/base/ftpatent.c
  142. third_party/freetype/src/base/ftstroke.c
  143. third_party/freetype/src/base/ftsynth.c
  144. third_party/freetype/src/base/ftsystem.c
  145. third_party/freetype/src/base/fttype1.c
  146. third_party/freetype/src/base/ftwinfnt.c
  147. third_party/freetype/src/bdf/bdf.c
  148. third_party/freetype/src/cache/ftcache.c
  149. third_party/freetype/src/cff/cff.c
  150. third_party/freetype/src/cid/type1cid.c
  151. third_party/freetype/src/gzip/ftgzip.c
  152. third_party/freetype/src/lzw/ftlzw.c
  153. third_party/freetype/src/pcf/pcf.c
  154. third_party/freetype/src/pfr/pfr.c
  155. third_party/freetype/src/psaux/psaux.c
  156. third_party/freetype/src/pshinter/pshinter.c
  157. third_party/freetype/src/psnames/psmodule.c
  158. third_party/freetype/src/raster/raster.c
  159. third_party/freetype/src/sfnt/sfnt.c
  160. third_party/freetype/src/smooth/smooth.c
  161. third_party/freetype/src/truetype/truetype.c
  162. third_party/freetype/src/type1/type1.c
  163. third_party/freetype/src/type42/type42.c
  164. third_party/freetype/src/winfonts/winfnt.c
  165. third_party/jpeg/cdjpeg.c
  166. third_party/jpeg/jcapimin.c
  167. third_party/jpeg/jcapistd.c
  168. third_party/jpeg/jccoefct.c
  169. third_party/jpeg/jccolor.c
  170. third_party/jpeg/jcdctmgr.c
  171. third_party/jpeg/jchuff.c
  172. third_party/jpeg/jcinit.c
  173. third_party/jpeg/jcmainct.c
  174. third_party/jpeg/jcmarker.c
  175. third_party/jpeg/jcmaster.c
  176. third_party/jpeg/jcomapi.c
  177. third_party/jpeg/jcparam.c
  178. third_party/jpeg/jcphuff.c
  179. third_party/jpeg/jcprepct.c
  180. third_party/jpeg/jcsample.c
  181. third_party/jpeg/jctrans.c
  182. third_party/jpeg/jdapimin.c
  183. third_party/jpeg/jdapistd.c
  184. third_party/jpeg/jdatadst.c
  185. third_party/jpeg/jdatasrc.c
  186. third_party/jpeg/jdcoefct.c
  187. third_party/jpeg/jdcolor.c
  188. third_party/jpeg/jddctmgr.c
  189. third_party/jpeg/jdhuff.c
  190. third_party/jpeg/jdinput.c
  191. third_party/jpeg/jdmainct.c
  192. third_party/jpeg/jdmarker.c
  193. third_party/jpeg/jdmaster.c
  194. third_party/jpeg/jdmerge.c
  195. third_party/jpeg/jdphuff.c
  196. third_party/jpeg/jdpostct.c
  197. third_party/jpeg/jdsample.c
  198. third_party/jpeg/jdtrans.c
  199. third_party/jpeg/jerror.c
  200. third_party/jpeg/jfdctflt.c
  201. third_party/jpeg/jfdctfst.c
  202. third_party/jpeg/jfdctint.c
  203. third_party/jpeg/jidctflt.c
  204. third_party/jpeg/jidctfst.c
  205. third_party/jpeg/jidctint.c
  206. third_party/jpeg/jidctred.c
  207. third_party/jpeg/jmemansi.c
  208. third_party/jpeg/jmemmgr.c
  209. third_party/jpeg/jquant1.c
  210. third_party/jpeg/jquant2.c
  211. third_party/jpeg/jutils.c
  212. third_party/jpeg/rdbmp.c
  213. third_party/jpeg/rdcolmap.c
  214. third_party/jpeg/rdgif.c
  215. third_party/jpeg/rdppm.c
  216. third_party/jpeg/rdrle.c
  217. third_party/jpeg/rdswitch.c
  218. third_party/jpeg/rdtarga.c
  219. third_party/jpeg/transupp.c
  220. third_party/jpeg/wrbmp.c
  221. third_party/jpeg/wrgif.c
  222. third_party/jpeg/wrppm.c
  223. third_party/jpeg/wrrle.c
  224. third_party/jpeg/wrtarga.c
  225. third_party/png/png.c
  226. third_party/png/pngerror.c
  227. third_party/png/pngget.c
  228. third_party/png/pngmem.c
  229. third_party/png/pngpread.c
  230. third_party/png/pngread.c
  231. third_party/png/pngrio.c
  232. third_party/png/pngrtran.c
  233. third_party/png/pngrutil.c
  234. third_party/png/pngset.c
  235. third_party/png/pngtrans.c
  236. third_party/png/pngvcrd.c
  237. third_party/png/pngwio.c
  238. third_party/png/pngwrite.c
  239. third_party/png/pngwtran.c
  240. third_party/png/pngwutil.c
  241. third_party/utf8proc/utf8proc.c
  242. third_party/zlib/adler32.c
  243. third_party/zlib/compress.c
  244. third_party/zlib/crc32.c
  245. third_party/zlib/deflate.c
  246. third_party/zlib/gzio.c
  247. third_party/zlib/infblock.c
  248. third_party/zlib/infcodes.c
  249. third_party/zlib/inffast.c
  250. third_party/zlib/inflate.c
  251. third_party/zlib/inftrees.c
  252. third_party/zlib/infutil.c
  253. third_party/zlib/trees.c
  254. third_party/zlib/uncompr.c
  255. third_party/zlib/zutil.c
  256. third_party/miniz/miniz.c
  257. third_party/putty/wildcard.c
  258. util/AllocDebug.cpp
  259. util/BeefPerf.cpp
  260. util/BSpline.cpp
  261. util/CatmullRom.cpp
  262. util/ChunkedDataBuffer.cpp
  263. util/Compress.cpp
  264. util/CubicFuncSpline.cpp
  265. util/CubicSpline.cpp
  266. util/FileEnumerator.cpp
  267. util/Hash.cpp
  268. util/Heap.cpp
  269. util/Json.cpp
  270. util/MappedFile.cpp
  271. util/MathUtils.cpp
  272. util/Matrix4.cpp
  273. util/PerfTimer.cpp
  274. util/Point.cpp
  275. util/PolySpline.cpp
  276. util/Quaternion.cpp
  277. util/Sphere.cpp
  278. util/String.cpp
  279. util/StackHelper.cpp
  280. util/ThreadPool.cpp
  281. util/UTF8.cpp
  282. util/WorkThread.cpp
  283. util/Vector.cpp
  284. util/ZipFile.cpp
  285. )
  286. if (${APPLE})
  287. file(GLOB SRC_FILES_OS
  288. platform/darwin/BFPlatform.cpp
  289. platform/darwin/DarwinCommon.cpp
  290. HeadlessApp.cpp
  291. )
  292. else()
  293. file(GLOB SRC_FILES_OS
  294. platform/linux/BFPlatform.cpp
  295. platform/linux/LinuxCommon.cpp
  296. HeadlessApp.cpp
  297. )
  298. endif()
  299. if (DEFINED BF_ENABLE_SDL)
  300. file(GLOB SRC_FILES_OS
  301. platform/sdl/SdlBFApp.cpp
  302. platform/sdl/GLRenderDevice.cpp
  303. )
  304. endif()
  305. # Add library to build.
  306. add_library(${PROJECT_NAME} STATIC
  307. ${SRC_FILES}
  308. ${SRC_FILES_OS}
  309. )
  310. # Link with other dependencies.
  311. if(MSVC)
  312. target_link_libraries(${PROJECT_NAME} imm32.lib version.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
  313. )
  314. endif(MSVC)