File: project-defaults.cmake

package info (click to toggle)
node-yarnpkg 4.1.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 24,752 kB
  • sloc: javascript: 38,953; ansic: 26,035; cpp: 7,247; sh: 2,829; makefile: 724; perl: 493
file content (50 lines) | stat: -rw-r--r-- 1,402 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

add_compile_definitions($<$<CONFIG:DEBUG>:DEBUG>)

if(MSVC)

add_compile_options(
    # Don't omit frame pointers (e.g. for crash dumps)
    /Oy-
    # "Standard C++ exception handling" (C++ stack unwinding including extern c)
    /EHsc
    # Enable warnings and warnings as errors
    /W3
    /WX
    # Disable RTTI
    $<$<COMPILE_LANGUAGE:CXX>:/GR->
    # Use /O2 (Maximize Speed)
    $<$<CONFIG:RELEASE>:/O2>)

else()

add_compile_options(
    # Don't omit frame pointers (e.g. for crash dumps)
    -fno-omit-frame-pointer
    # Enable exception handling
    -fexceptions
    # Enable warnings and warnings as errors
    -Wall
    -Werror
    # Disable RTTI
    $<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>
    # Use -O2 (prioritize speed)
    $<$<CONFIG:RELEASE>:-O2>
    # Enable separate sections per function/data item
    $<$<CONFIG:RELEASE>:-ffunction-sections>
    $<$<CONFIG:RELEASE>:-fdata-sections>)

add_link_options(
    # Discard unused sections
    $<$<CONFIG:RELEASE>:$<$<CXX_COMPILER_ID:Clang,GNU>:-Wl,--gc-sections>>
    $<$<CONFIG:RELEASE>:$<$<CXX_COMPILER_ID:AppleClang>:-Wl,-dead_strip>>)

endif()