adjust for clang-gcc
This commit is contained in:
@@ -20,9 +20,14 @@ sn_resolve_target_identifiers(
|
||||
file(GLOB STGSHARP_NATIVE_SOURCES CONFIGURE_DEPENDS
|
||||
${CMAKE_CURRENT_LIST_DIR}/sn-src/*.c)
|
||||
|
||||
list(REMOVE_ITEM STGSHARP_NATIVE_SOURCES
|
||||
${CMAKE_CURRENT_LIST_DIR}/sn-src/formatted.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/sn-src/StgSharpC.c)
|
||||
file(GLOB STGSHARP_NATIVE_HEADERS CONFIGURE_DEPENDS
|
||||
${CMAKE_CURRENT_LIST_DIR}/sn-head/*.h)
|
||||
|
||||
file(GLOB STGSHARP_NATIVE_TEMPLATES CONFIGURE_DEPENDS
|
||||
${CMAKE_CURRENT_LIST_DIR}/sn-template/*.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/sn-template/*.inl
|
||||
${CMAKE_CURRENT_LIST_DIR}/sn-template/*.inc
|
||||
${CMAKE_CURRENT_LIST_DIR}/sn-template/*.ipp)
|
||||
|
||||
if(NOT STGSHARP_NATIVE_SOURCES)
|
||||
message(FATAL_ERROR "No source files found under sn-src/.")
|
||||
@@ -52,8 +57,14 @@ endif()
|
||||
|
||||
set(STGSHARP_BUILD_OUTPUT_DIR ${STGSHARP_SOLUTION_ROOT}/build/${STGSHARP_OS_TAG}-${STGSHARP_ARCH_TAG})
|
||||
set(STGSHARP_OBJECT_ROOT_DIR ${STGSHARP_SOLUTION_ROOT}/obj/${PROJECT_NAME})
|
||||
set(STGSHARP_NATIVE_PROJECT_FILES
|
||||
${STGSHARP_NATIVE_SOURCES}
|
||||
${STGSHARP_NATIVE_HEADERS}
|
||||
${STGSHARP_NATIVE_TEMPLATES})
|
||||
|
||||
add_library(${PROJECT_NAME} SHARED ${STGSHARP_NATIVE_SOURCES})
|
||||
add_library(${PROJECT_NAME} SHARED ${STGSHARP_NATIVE_PROJECT_FILES})
|
||||
|
||||
source_group(TREE ${CMAKE_CURRENT_LIST_DIR} FILES ${STGSHARP_NATIVE_PROJECT_FILES})
|
||||
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
C_STANDARD 11
|
||||
@@ -75,23 +86,43 @@ endforeach()
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
COMPILE_PDB_OUTPUT_DIRECTORY ${STGSHARP_OBJECT_ROOT_DIR}/$<CONFIG>/${STGSHARP_ARCH_TAG})
|
||||
|
||||
if(MSVC OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||
if(MSVC OR (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
/Fd${STGSHARP_OBJECT_ROOT_DIR}/$<CONFIG>/${STGSHARP_ARCH_TAG}/)
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND SN_RESOLVED_ARCH_NAME STREQUAL "x86_64")
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
/clang:-mavx
|
||||
/clang:-mavx2
|
||||
/clang:-mfma
|
||||
/clang:-mavx512f
|
||||
/clang:-mavx512vl)
|
||||
# Keep the intrinsic type system and builtin declarations visible to all TUs.
|
||||
# The runtime dispatch contract still follows T_arch/T_feature at the function level.
|
||||
if(CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC")
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
/clang:-mavx
|
||||
/clang:-mavx2
|
||||
/clang:-mfma
|
||||
/clang:-mf16c
|
||||
/clang:-mavx512f
|
||||
/clang:-mavx512cd
|
||||
/clang:-mavx512dq
|
||||
/clang:-mavx512bw
|
||||
/clang:-mavx512vl)
|
||||
else()
|
||||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||||
-mavx
|
||||
-mavx2
|
||||
-mfma
|
||||
-mf16c
|
||||
-mavx512f
|
||||
-mavx512cd
|
||||
-mavx512dq
|
||||
-mavx512bw
|
||||
-mavx512vl)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_include_directories(${PROJECT_NAME}
|
||||
PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}/sn-head
|
||||
${CMAKE_CURRENT_LIST_DIR}/sn-template
|
||||
${CMAKE_CURRENT_LIST_DIR}/lib)
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME}
|
||||
|
||||
Reference in New Issue
Block a user