CMakeLists.txt 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534
  1. cmake_minimum_required(VERSION 3.2)
  2. project (CHAKRACORE)
  3. # Keep CMake from caching static/shared library
  4. # option. Otherwise, CMake fails to update cached
  5. # references
  6. # todo: create a sub cmake file to take care of _SH uncaching...
  7. if(SHARED_LIBRARY_SH)
  8. unset(SHARED_LIBRARY_SH CACHE)
  9. unset(STATIC_LIBRARY_SH CACHE)
  10. unset(STATIC_LIBRARY CACHE)
  11. set(SHARED_LIBRARY 1)
  12. endif()
  13. if(STATIC_LIBRARY_SH)
  14. unset(SHARED_LIBRARY_SH CACHE)
  15. unset(STATIC_LIBRARY_SH CACHE)
  16. unset(SHARED_LIBRARY CACHE)
  17. set(STATIC_LIBRARY 1)
  18. endif()
  19. if(LIBS_ONLY_BUILD_SH)
  20. unset(LIBS_ONLY_BUILD_SH CACHE)
  21. set(CC_LIBS_ONLY_BUILD 1)
  22. endif()
  23. if(CC_USES_SYSTEM_ARCH_SH)
  24. if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
  25. set(CC_TARGETS_AMD64_SH 1)
  26. elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
  27. set(CC_TARGETS_ARM_SH 1)
  28. endif()
  29. unset(CC_USES_SYSTEM_ARCH_SH CACHE)
  30. endif()
  31. if(CC_TARGETS_AMD64_SH)
  32. set(CC_TARGETS_AMD64 1)
  33. elseif(CC_TARGETS_ARM_SH)
  34. set(CC_TARGETS_ARM 1)
  35. add_definitions(-D_ARM_=1)
  36. set(CMAKE_SYSTEM_PROCESSOR "armv7l")
  37. elseif(CC_TARGETS_X86_SH)
  38. set(CC_TARGETS_X86 1)
  39. set(CMAKE_SYSTEM_PROCESSOR "i386")
  40. else()
  41. message(FATAL_ERROR "Couldn't detect target processor, try `--arch` argument with build.sh")
  42. endif()
  43. unset(CC_TARGETS_ARM_SH CACHE)
  44. unset(CC_TARGETS_X86_SH CACHE)
  45. unset(CC_TARGETS_AMD64_SH CACHE)
  46. if(CCACHE_PROGRAM_NAME_SH)
  47. find_program(CCACHE_PROGRAM ${CCACHE_PROGRAM_NAME_SH})
  48. if (CCACHE_PROGRAM)
  49. set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
  50. set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
  51. endif()
  52. unset(CCACHE_PROGRAM_NAME_SH CACHE)
  53. endif()
  54. if(ENABLE_VALGRIND_SH)
  55. unset(ENABLE_VALGRIND_SH CACHE)
  56. if(NOT CC_TARGETS_X86)
  57. # Enable Valgrind is not needed for x86 builds. Already <= 32Gb address space
  58. set(ENABLE_VALGRIND 1)
  59. add_definitions(-DENABLE_VALGRIND=1)
  60. endif()
  61. endif()
  62. if(ICU_SETTINGS_RESET)
  63. unset(ICU_SETTINGS_RESET CACHE)
  64. unset(ICU_INCLUDE_PATH_SH CACHE)
  65. unset(NO_ICU_SH CACHE)
  66. unset(LOCAL_ICU_SH CACHE)
  67. unset(SYSTEM_ICU_SH CACHE)
  68. endif()
  69. if(CC_TARGET_OS_ANDROID_SH)
  70. set(CC_TARGET_OS_ANDROID 1)
  71. set(CMAKE_SYSTEM_NAME Android)
  72. set(ANDROID_NDK "android-toolchain-arm/")
  73. set(ANDROID_ABI armeabi-v7a)
  74. set(CMAKE_SYSTEM_VERSION 21)
  75. set(CMAKE_ANDROID_ARCH_ABI armeabi)
  76. set(ANDROID_TOOLCHAIN_NAME arm-linux-androideabi-clang3.8)
  77. set(ANDROID_STL "c++_static")
  78. unset(CC_TARGET_OS_ANDROID_SH CACHE)
  79. elseif(CMAKE_SYSTEM_NAME STREQUAL Linux)
  80. set(CC_TARGET_OS_LINUX 1)
  81. elseif(CMAKE_SYSTEM_NAME STREQUAL Darwin)
  82. set(CC_TARGET_OS_OSX 1)
  83. endif()
  84. if (ENABLE_CC_XPLAT_TRACE_SH)
  85. unset(ENABLE_CC_XPLAT_TRACE_SH CACHE)
  86. set(ENABLE_CC_XPLAT_TRACE 1)
  87. if (CC_TARGET_OS_ANDROID)
  88. add_definitions(-DTRACE_OUTPUT_TO_LOGCAT=1)
  89. else()
  90. add_definitions(-DTRACE_OUTPUT_TARGET_FILE=1)
  91. endif()
  92. add_definitions(-DENABLE_CC_XPLAT_TRACE=1)
  93. add_compile_options(-finstrument-functions)
  94. add_compile_options(-g)
  95. add_compile_options(-ggdb)
  96. if(NOT STATIC_LIBRARY)
  97. message(FATAL_ERROR "Trace option is available only for --static builds")
  98. endif()
  99. endif()
  100. if(ICU_INCLUDE_PATH_SH)
  101. set(ICU_INCLUDE_PATH ${ICU_INCLUDE_PATH_SH})
  102. unset(ICU_INCLUDE_PATH_SH CACHE)
  103. endif()
  104. if(NO_ICU_SH)
  105. set(NO_ICU 1)
  106. unset(NO_ICU_SH CACHE)
  107. endif()
  108. if(SYSTEM_ICU_SH)
  109. set(SYSTEM_ICU 1)
  110. unset(SYSTEM_ICU_SH CACHE)
  111. endif()
  112. if(INTL_ICU_SH)
  113. unset(INTL_ICU_SH CACHE)
  114. set(INTL_ICU 1)
  115. else()
  116. unset(INTL_ICU_SH CACHE)
  117. set(INTL_ICU 0)
  118. endif()
  119. if(ICU_INCLUDE_PATH)
  120. add_definitions(-DHAS_REAL_ICU=1)
  121. add_definitions(-DHAS_ICU)
  122. set(ICU_LIBRARY_PATH "${ICU_INCLUDE_PATH}/../lib/")
  123. find_library(ICUUC icuuc PATHS ${ICU_LIBRARY_PATH} NO_DEFAULT_PATH)
  124. if(INTL_ICU)
  125. add_definitions(-DINTL_ICU=1)
  126. find_library(ICUIN icui18n PATHS ${ICU_LIBRARY_PATH} NO_DEFAULT_PATH)
  127. # In a default install, ICU header files are all in ICU_ROOT/include
  128. # However, for Node, the include/ folder is never generated, so we have to look
  129. # in NODE/deps/icu/source/{common|i18n} for headers
  130. set(ICU_INCLUDE_PATH
  131. "${ICU_INCLUDE_PATH}"
  132. "${ICU_INCLUDE_PATH}/../i18n/"
  133. )
  134. endif()
  135. if(ICUUC)
  136. message("-- found ICU libs: ${ICU_LIBRARY_PATH}")
  137. find_library(ICUDATA icudata PATHS ${ICU_LIBRARY_PATH} NO_DEFAULT_PATH)
  138. if (NOT ICUDATA)
  139. set(ICUDATA "")
  140. endif()
  141. set(ICU_LIBRARIES
  142. ${ICUUC}
  143. ${ICUIN}
  144. ${ICUDATA}
  145. )
  146. endif()
  147. endif()
  148. if(CC_TARGET_OS_LINUX OR CC_TARGET_OS_ANDROID)
  149. if(SYSTEM_ICU OR (NOT ICU_INCLUDE_PATH AND NOT NO_ICU))
  150. set(ICU_LIBRARIES "icuuc")
  151. if(INTL_ICU)
  152. add_definitions(-DINTL_ICU=1)
  153. set(ICU_LIBRARIES
  154. ${ICU_LIBRARIES}
  155. icui18n
  156. )
  157. endif()
  158. add_definitions(-DHAS_REAL_ICU=1)
  159. add_definitions(-DHAS_ICU)
  160. endif()
  161. elseif(CC_TARGET_OS_OSX)
  162. # in case ICU path was given but it doesn't exist, build script will fail.
  163. # so, fallback only if ICU path wasn't given
  164. if(NOT ICU_INCLUDE_PATH)
  165. set(NO_ICU 1)
  166. message("-- Couldn't find ICU. Falling back to --no-icu build")
  167. endif()
  168. endif()
  169. set(CLR_CMAKE_PLATFORM_XPLAT 1)
  170. if(CC_TARGETS_AMD64)
  171. add_definitions(-DTARGET_64)
  172. add_compile_options(-msse4.2)
  173. if(NOT CMAKE_BUILD_TYPE STREQUAL Release)
  174. set(CAN_BUILD_WABT 1)
  175. endif()
  176. elseif(CC_TARGETS_X86)
  177. add_definitions(-D__i686__)
  178. add_definitions(-DTARGET_32)
  179. add_compile_options(-arch i386)
  180. add_compile_options(-msse3)
  181. set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} \
  182. -m32"
  183. )
  184. elseif(CC_TARGETS_ARM)
  185. add_definitions(-D__arm__)
  186. add_definitions(-DTARGET_32)
  187. add_definitions(-D_M_ARM32_OR_ARM64)
  188. if(CC_TARGET_OS_OSX)
  189. add_compile_options(-arch arm)
  190. elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
  191. # reduce link time memory usage
  192. set(LINKER_REDUCED_MEMORY "-Xlinker --no-keep-memory")
  193. endif()
  194. else()
  195. message(FATAL_ERROR "Only AMD64, ARM and I386 are supported")
  196. endif()
  197. if(CAN_BUILD_WABT)
  198. add_definitions(-DCAN_BUILD_WABT)
  199. endif()
  200. if(CC_TARGET_OS_LINUX OR CC_TARGET_OS_ANDROID)
  201. set(CLR_CMAKE_PLATFORM_LINUX 1)
  202. # OSX 10.12 Clang deprecates libstdc++ [See GH #1599]
  203. # So, -Werror is linux only for now
  204. # + Android ARM ABI shows ld warnings
  205. # xplat-todo: Do we need this ?
  206. if (NOT CC_TARGET_OS_ANDROID)
  207. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
  208. -Werror"
  209. )
  210. endif()
  211. elseif(CC_TARGET_OS_OSX)
  212. add_definitions(
  213. -DPLATFORM_UNIX
  214. )
  215. if(NOT CC_XCODE_PROJECT)
  216. set(OSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET} CC")
  217. if (${OSX_DEPLOYMENT_TARGET} STREQUAL " CC")
  218. set(OSX_DEPLOYMENT_TARGET "10.9")
  219. add_compile_options(-mmacosx-version-min=10.9)
  220. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \
  221. -mmacosx-version-min=10.9 -std=gnu99")
  222. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
  223. -mmacosx-version-min=10.9 -std=gnu++11")
  224. else()
  225. set(OSX_DEPLOYMENT_TARGET "$ENV{MACOSX_DEPLOYMENT_TARGET}")
  226. message(WARNING "-- !! macOS Deployment Target was set to $ENV{MACOSX_DEPLOYMENT_TARGET}. Using it as is.")
  227. endif()
  228. endif()
  229. else()
  230. message(FATAL_ERROR "This OS is not supported")
  231. endif()
  232. if (CMAKE_CXX_COMPILER_ID STREQUAL AppleClang
  233. OR CMAKE_CXX_COMPILER_ID STREQUAL Clang
  234. OR CMAKE_CXX_COMPILER_ID STREQUAL GNU)
  235. # Color diagnostics for g++ and clang++
  236. add_definitions("-fdiagnostics-color=always")
  237. endif()
  238. if(STATIC_LIBRARY)
  239. add_definitions(-DCHAKRA_STATIC_LIBRARY=1)
  240. endif()
  241. if(CLR_CMAKE_PLATFORM_XPLAT)
  242. add_definitions(-D_CHAKRACOREBUILD)
  243. add_definitions(-DFEATURE_PAL)
  244. add_definitions(-DPLATFORM_UNIX=1)
  245. if(CLR_CMAKE_PLATFORM_LINUX)
  246. add_definitions(-D__LINUX__=1)
  247. if(CC_TARGETS_AMD64)
  248. add_definitions(-DLINUX64)
  249. endif(CC_TARGETS_AMD64)
  250. endif(CLR_CMAKE_PLATFORM_LINUX)
  251. if(CC_TARGETS_AMD64)
  252. set(IS_64BIT_BUILD 1)
  253. add_definitions(-D_M_X64 -D_M_AMD64 -D_AMD64_)
  254. endif(CC_TARGETS_AMD64)
  255. add_definitions(
  256. -DUNICODE
  257. -D_SAFECRT_USE_CPP_OVERLOADS=1
  258. -D__STDC_WANT_LIB_EXT1__=1
  259. )
  260. set(CMAKE_CXX_STANDARD 11)
  261. # CC WARNING FLAGS
  262. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \
  263. -Wno-implicit-function-declaration"
  264. )
  265. # todo: fix general visibility of the interface
  266. # do not set to `fvisibility=hidden` as it is going to
  267. # prevent the required interface is being exported
  268. # clang by default sets fvisibility=default
  269. # CXX WARNING FLAGS
  270. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
  271. -Wno-ignored-attributes\
  272. -Wno-deprecated-declarations\
  273. -Wno-parentheses-equality\
  274. -Wno-missing-braces\
  275. -Wno-reorder\
  276. -Wno-microsoft\
  277. -Wno-unused-value\
  278. -Wno-int-to-void-pointer-cast\
  279. -Wno-invalid-offsetof\
  280. -Wno-undefined-inline\
  281. -Wno-inconsistent-missing-override\
  282. -Wno-c++14-extensions\
  283. -Wno-macro-redefined\
  284. -Wno-pragmas\
  285. -Wno-invalid-token-paste\
  286. -Wno-format\
  287. -Wno-invalid-noreturn\
  288. -Wno-null-arithmetic\
  289. -Wno-tautological-constant-out-of-range-compare\
  290. -Wno-tautological-undefined-compare\
  291. -Wno-address-of-temporary\
  292. -Wno-null-conversion\
  293. -Wno-return-type\
  294. -Wno-switch\
  295. -Wno-implicit-function-declaration\
  296. -Wno-int-to-pointer-cast\
  297. -Wno-tautological-constant-compare\
  298. -Wno-enum-compare-switch\
  299. -Wno-unknown-warning-option"
  300. )
  301. # notes..
  302. # -Wno-address-of-temporary # vtinfo.h, VirtualTableInfo<T>::RegisterVirtualTable
  303. # -Wno-null-conversion # Check shmemory.cpp and cs.cpp here...
  304. # -Wno-return-type # switch unreachable code
  305. # -Wno-switch # switch values not handled
  306. # -W-enum-compare-switch # throws warning on enum1 == enum2 where both
  307. # enums represent same value but do not share the type. ie. we use both AsmJsType
  308. # and AsmJsRetType interchangably and filter things out by `default:` case.
  309. # -W-tautological-constant-compare throws warning for checks known at compile time.
  310. # Some of those checks are optimized out during compile / lto time, and others
  311. # are platform / compiler dependent.
  312. # -Wno-unknown-warning-option ... well, some of the new switches are not
  313. # recognized by older compilers and they fail. So, put this one and not fail
  314. include(Build/CMakeFeatureDetect.cmake)
  315. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
  316. ${CXX_DO_NOT_OPTIMIZE_SIBLING_CALLS} \
  317. -fno-omit-frame-pointer \
  318. -fdelayed-template-parsing"
  319. )
  320. # CXX / CC COMPILER FLAGS
  321. add_compile_options(
  322. -fasm-blocks
  323. -fms-extensions
  324. -fwrapv # Treat signed integer overflow as two's complement
  325. )
  326. # Only disable RTTI in release builds so that TrackAlloc works for debug and test builds
  327. # Also disable RTTI when building a shared library
  328. # TODO: why does the shared library break with rtti disabled?
  329. if(CMAKE_BUILD_TYPE STREQUAL Release)
  330. if(STATIC_LIBRARY)
  331. add_compile_options(-fno-rtti)
  332. endif()
  333. endif()
  334. endif(CLR_CMAKE_PLATFORM_XPLAT)
  335. if (ENABLE_FULL_LTO_SH OR ENABLE_THIN_LTO_SH)
  336. if (CC_TARGET_OS_LINUX)
  337. set(CC_LTO_ENABLED -use-gold-plugin)
  338. set(CC_LTO_ENABLED_C -c)
  339. endif()
  340. if (ENABLE_FULL_LTO_SH)
  341. unset(DENABLE_FULL_LTO_SH CACHE)
  342. add_compile_options(-flto ${CC_LTO_ENABLED_C})
  343. if (CC_LTO_ENABLED)
  344. set(CC_LTO_ENABLED "${CC_LTO_ENABLED} -flto")
  345. endif()
  346. elseif (ENABLE_THIN_LTO_SH)
  347. unset(ENABLE_THIN_LTO_SH CACHE)
  348. add_compile_options(-flto=thin)
  349. if (CC_LTO_ENABLED)
  350. set(CC_LTO_ENABLED "${CC_LTO_ENABLED} -flto=thin")
  351. endif()
  352. endif()
  353. endif()
  354. if(CMAKE_BUILD_TYPE STREQUAL Debug)
  355. add_definitions(
  356. -DDBG=1
  357. -DDEBUG=1
  358. -D_DEBUG=1 # for PAL
  359. -DDBG_DUMP=1
  360. )
  361. elseif(CMAKE_BUILD_TYPE STREQUAL Test)
  362. add_definitions(
  363. -DENABLE_DEBUG_CONFIG_OPTIONS=1
  364. )
  365. add_compile_options(-g)
  366. endif(CMAKE_BUILD_TYPE STREQUAL Debug)
  367. if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
  368. add_compile_options(-O3)
  369. else()
  370. add_compile_options(-O0)
  371. endif(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
  372. if(IS_64BIT_BUILD)
  373. add_definitions(
  374. -DBIT64=1
  375. -DSTACK_ALIGN=16
  376. )
  377. endif(IS_64BIT_BUILD)
  378. if(NO_JIT_SH)
  379. unset(NO_JIT_SH CACHE) # don't cache
  380. unset(BuildJIT CACHE) # also clear it just in case
  381. add_definitions(-DDISABLE_JIT=1)
  382. else()
  383. set(BuildJIT 1)
  384. endif()
  385. if(WITHOUT_FEATURES_SH)
  386. add_definitions(${WITHOUT_FEATURES_SH})
  387. unset(WITHOUT_FEATURES_SH CACHE) # don't cache
  388. endif(WITHOUT_FEATURES_SH)
  389. if(EXTRA_DEFINES_SH)
  390. add_definitions(${EXTRA_DEFINES_SH})
  391. unset(EXTRA_DEFINES_SH CACHE) #don't cache
  392. endif(EXTRA_DEFINES_SH)
  393. enable_language(ASM)
  394. if(CMAKE_SYSTEM_NAME STREQUAL Darwin)
  395. set(DYN_LIB_EXT "dylib")
  396. else()
  397. set(DYN_LIB_EXT "so")
  398. endif()
  399. ################# Write-barrier check/analyze ##################
  400. if (WB_CHECK_SH OR WB_ANALYZE_SH)
  401. add_definitions(
  402. -Xclang -load
  403. -Xclang ${CMAKE_CURRENT_SOURCE_DIR}/tools/RecyclerChecker/Build/libclangRecyclerChecker.${DYN_LIB_EXT}
  404. )
  405. endif()
  406. if (WB_CHECK_SH)
  407. unset(WB_CHECK_SH CACHE) # don't cache
  408. add_definitions(
  409. -Xclang -add-plugin
  410. -Xclang check-recycler
  411. )
  412. endif()
  413. if (WB_ANALYZE_SH)
  414. unset(WB_ANALYZE_SH CACHE) # don't cache
  415. add_definitions(
  416. -Xclang -analyze
  417. -Xclang -analyzer-checker=chakra.RecyclerChecker
  418. )
  419. endif()
  420. if (WB_ARGS_SH)
  421. foreach(wb_arg IN LISTS WB_ARGS_SH)
  422. add_definitions(
  423. -Xclang -plugin-arg-check-recycler
  424. -Xclang ${wb_arg}
  425. )
  426. endforeach(wb_arg)
  427. unset(WB_ARGS_SH CACHE) # don't cache
  428. endif()
  429. include_directories(
  430. .
  431. lib/Common
  432. lib/Common/PlaceHolder
  433. pal
  434. pal/inc
  435. pal/inc/rt
  436. ${ICU_INCLUDE_PATH}
  437. )
  438. if(ICU_INCLUDE_PATH)
  439. if(NOT HAVE_LIBICU_UCHAR_H)
  440. set(HAVE_LIBICU_UCHAR_H 1)
  441. endif()
  442. endif()
  443. # detect features
  444. include_directories(SYSTEM /usr/local/include)
  445. include(pal/src/configure.cmake)
  446. # this should be after `detect feature` to not to affect feature detection
  447. # Clang -fsanitize.
  448. if (CLANG_SANITIZE_SH)
  449. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${CLANG_SANITIZE_SH}")
  450. set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -fsanitize=${CLANG_SANITIZE_SH}")
  451. unset(CLANG_SANITIZE_SH CACHE) # don't cache
  452. endif()
  453. add_subdirectory (pal)
  454. # build the rest with NO_PAL_MINMAX and PAL_STDCPP_COMPAT
  455. add_definitions(
  456. -DNO_PAL_MINMAX
  457. -DPAL_STDCPP_COMPAT
  458. )
  459. if (ENABLE_JS_LTTNG_SH)
  460. unset(ENABLE_JS_LTTNG_SH CACHE)
  461. include_directories (
  462. ${CMAKE_CURRENT_SOURCE_DIR}/out/lttng
  463. )
  464. add_subdirectory ($ENV{TARGET_PATH}/lttng ${CMAKE_CURRENT_BINARY_DIR}/lttng)
  465. add_definitions(
  466. -DENABLE_JS_ETW
  467. -DENABLE_JS_LTTNG
  468. )
  469. set(USE_LTTNG "1")
  470. endif()
  471. add_subdirectory (lib)
  472. add_subdirectory (bin)