Skip to content

Commit

Permalink
[compile] Re-structuring the compiler flags handling
Browse files Browse the repository at this point in the history
  • Loading branch information
sherholz-intel committed Jul 5, 2023
1 parent 73c901e commit 3bf63c6
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
16 changes: 15 additions & 1 deletion CMakeLists.txt
Expand Up @@ -27,8 +27,22 @@ project(openpgl VERSION 0.5.0 LANGUAGES C CXX)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake)
include(openpgl_macros)

## openpgl specific configuration ##

##############################################################
# Platform detection and defaults
##############################################################
SET(OPENPGL_ARM OFF)
IF (APPLE AND CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64" OR CMAKE_OSX_ARCHITECTURES MATCHES "arm64"))
MESSAGE(STATUS "Building for Apple silicon")
SET(OPENPGL_ARM ON)
ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
MESSAGE(STATUS "Building for AArch64")
SET(OPENPGL_ARM ON)
ENDIF()

##############################################################
# Open PGL specific configuration
##############################################################
#option(OPENPGL_USE_OMP_THREADING "Use omp instead of tbb for threading." OFF)
option(OPENPGL_BUILD_STATIC "Build OpenPGL as static library." OFF)

Expand Down
28 changes: 23 additions & 5 deletions openpgl/CMakeLists.txt
Expand Up @@ -67,10 +67,14 @@ if(WIN32)
set_source_files_properties(api/deviceCPU16.cpp PROPERTIES COMPILE_FLAGS "/D__SSE__ /D__SSE2__ /D__SSE3__ /D__SSE4_1__ /D__SSE4_2__ /arch:AVX /arch:AVX2 /arch:AVX512")
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM" OR CMAKE_CXX_COMPILER_ID STREQUAL "dpcpp")
set(OPENPGL_RELEASE_OPTIONS -O3 -Wall -ffp-model=precise)
set(OPENPGL_RELEASE_OPTIONS -O3)
list(APPEND OPENPGL_RELEASE_OPTIONS -Wall)
list(APPEND OPENPGL_RELEASE_OPTIONS -ffp-model=precise)

if(OPENPGL_ISA_SSE4 OR OPENPGL_ISA_AVX2 OR OPENPGL_ISA_AVX512)
set(OPENPGL_RELEASE_OPTIONS ${OPENPGL_RELEASE_OPTIONS} -msse2 -msse4.1)
list(APPEND OPENPGL_RELEASE_OPTIONS -msse2 -msse4.1)
endif()

if(OPENPGL_ISA_SSE4)
set_source_files_properties(api/deviceCPU4.cpp PROPERTIES COMPILE_FLAGS "-msse2 -msse4.1")
endif()
Expand All @@ -82,15 +86,29 @@ if(WIN32)
endif()
endif()
else()
set(OPENPGL_RELEASE_OPTIONS -O3 -Wall)
set(OPENPGL_RELEASE_OPTIONS -O3)
if (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM" OR CMAKE_CXX_COMPILER_ID STREQUAL "dpcpp")
set(OPENPGL_RELEASE_OPTIONS ${OPENPGL_RELEASE_OPTIONS} -ffp-model=precise)
list(APPEND OPENPGL_RELEASE_OPTIONS -ffp-model=precise)
endif()

list(APPEND OPENPGL_RELEASE_OPTIONS -Wall) # enables most warnings
list(APPEND OPENPGL_RELEASE_OPTIONS -Wformat -Wformat-security) # enables string format vulnerability warnings
#SET(OPENPGL_RELEASE_OPTIONS ${OPENPGL_RELEASE_OPTIONS} -std=c++11) # enables C++11 features
list(APPEND OPENPGL_RELEASE_OPTIONS -fvisibility=hidden) # makes all symbols hidden by default
list(APPEND OPENPGL_RELEASE_OPTIONS -fvisibility-inlines-hidden) # makes all inline symbols hidden by default
list(APPEND OPENPGL_RELEASE_OPTIONS -fno-strict-aliasing) # disables strict aliasing rules
list(APPEND OPENPGL_RELEASE_OPTIONS -fno-tree-vectorize) # disable auto vectorizer

if (OPENPGL_ARM)
list(APPEND OPENPGL_RELEASE_OPTIONS -fsigned-char) # treat 'char' as 'signed char'
list(APPEND OPENPGL_RELEASE_OPTIONS -flax-vector-conversions) # allow lax vector type conversions
endif()

#set(OPENPGL_RELEASE_OPTIONS ${OPENPGL_RELEASE_OPTIONS} -fno-strict-aliasing -Wno-padded -ftree-vectorize -mfpmath=sse -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fno-math-errno -fomit-frame-pointer )
#set(OPENPGL_RELEASE_OPTIONS ${OPENPGL_RELEASE_OPTIONS} -fno-strict-aliasing -Wno-padded -ftree-vectorize -mfpmath=sse)

if(OPENPGL_ISA_SSE4 OR OPENPGL_ISA_AVX2 OR OPENPGL_ISA_AVX512)
set(OPENPGL_RELEASE_OPTIONS ${OPENPGL_RELEASE_OPTIONS} -msse2 -msse4.1)
list(APPEND OPENPGL_RELEASE_OPTIONS -msse2 -msse4.1)
endif()
if(OPENPGL_ISA_SSE4)
set_source_files_properties(api/deviceCPU4.cpp PROPERTIES COMPILE_FLAGS "-msse2 -msse4.1")
Expand Down

0 comments on commit 3bf63c6

Please sign in to comment.