Skip to content

Commit 704a82d

Browse files
Refactoring for MSVC and IntelLLVM
1 parent e74b641 commit 704a82d

1 file changed

Lines changed: 36 additions & 21 deletions

File tree

CMakeLists.txt

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# CMakeList.txt - Copyright (c) 2022 Ore Richard Muyiwa
22
# https://github.com/blade-lang/ffi
3-
# Portions - Copyright (c) 2023 Kritzel Kratzel
3+
# Portions - Copyright (c) 2023-2026 The OneLuaPro project authors.
44

55
# Permission is hereby granted, free of charge, to any person obtaining
66
# a copy of this software and associated documentation files (the
@@ -40,45 +40,58 @@
4040

4141
cmake_minimum_required(VERSION 3.23)
4242

43-
# ------------------------------------------------------------------------------
44-
# find liblua installation and version info
45-
# if(NOT LUA_HINTS)
46-
# if(WIN32)
47-
# set(LUA_HINTS "c:/Apps")
48-
# endif()
49-
# endif()
50-
# find_package(liblua REQUIRED CONFIG HINTS ${LUA_HINTS})
51-
# if(liblua_FOUND)
52-
# message(STATUS "liblua install prefix : ${LIBLUA_INSTALLDIR}")
53-
# else()
54-
# message(FATAL_ERROR "Unable to find liblua version ${liblua_VERSION}.")
55-
# endif()
5643
set(INSTALL_DIRECTORY ${CMAKE_INSTALL_PREFIX})
5744

45+
# ------------------------------------------------------------------------------
46+
# Extract version number from configure.ac
47+
set(CONFIGURE_AC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/configure.ac")
48+
if(EXISTS "${CONFIGURE_AC_PATH}")
49+
file(STRINGS "${CONFIGURE_AC_PATH}" FFI_VERSION_STR_LINE REGEX "^FFI_VERSION_STRING=")
50+
file(STRINGS "${CONFIGURE_AC_PATH}" FFI_VERSION_NUM_LINE REGEX "^FFI_VERSION_NUMBER=")
51+
if(FFI_VERSION_STR_LINE MATCHES "FFI_VERSION_STRING=\"([^\"]+)\"")
52+
set(FFI_VERSION_STRING "${CMAKE_MATCH_1}")
53+
message(STATUS "FFI_VERSION_STRING = ${FFI_VERSION_STRING}")
54+
else()
55+
message(FATAL_ERROR "Could not read FFI_VERSION_STRING from configure.ac")
56+
endif()
57+
if(FFI_VERSION_NUM_LINE MATCHES "FFI_VERSION_NUMBER=([0-9]+)")
58+
set(FFI_VERSION_NUMBER "${CMAKE_MATCH_1}")
59+
message(STATUS "FFI_VERSION_NUMBER = ${FFI_VERSION_NUMBER}")
60+
else()
61+
message(FATAL_ERROR "Could not read FFI_VERSION_NUMBER from configure.ac")
62+
endif()
63+
else()
64+
message(FATAL_ERROR "Could not read version info from configure.ac")
65+
endif()
66+
5867
# ------------------------------------------------------------------------------
5968
# Project defintion
6069
project(libffi
6170
LANGUAGES C ASM_MASM
62-
VERSION 3.4.4
71+
VERSION ${FFI_VERSION_STRING}
6372
)
6473

6574
# ------------------------------------------------------------------------------
6675
# set TARGET properly for Win32 and x64
67-
if(CMAKE_GENERATOR_PLATFORM STREQUAL "Win32")
76+
if(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)
6877
set(TARGET "X86_WIN32")
6978
set(LIB_TYPE STATIC)
7079
set(FFI_USE_SHARED_LIBS OFF)
7180
set(BUILD_SHARED_LIBS OFF)
72-
set(MSVC_OPTS /D_WINDLL /D_WIN32 /D_CRT_SECURE_NO_WARNINGS)
73-
elseif(CMAKE_GENERATOR_PLATFORM STREQUAL "x64")
81+
set(MSVC_DEFS _WINDLL _WIN32 _CRT_SECURE_NO_WARNINGS)
82+
elseif(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 8)
7483
set(TARGET "X86_WIN64")
7584
set(LIB_TYPE STATIC)
7685
set(FFI_USE_SHARED_LIBS OFF)
7786
set(BUILD_SHARED_LIBS OFF)
78-
set(MSVC_OPTS /D_WINDLL /D_WIN32 /D_CRT_SECURE_NO_WARNINGS)
87+
set(MSVC_DEFS _WINDLL _WIN32 _CRT_SECURE_NO_WARNINGS)
7988
else()
8089
message(FATAL_ERROR "Invalid generator platform.")
8190
endif()
91+
if(CMAKE_C_COMPILER_ID MATCHES "IntelLLVM")
92+
add_compile_options(-Wno-deprecated-declarations)
93+
endif()
94+
8295

8396
# ------------------------------------------------------------------------------
8497
# For design reasons of this file CMAKE_BUILD_TYPE needs to be set from the
@@ -134,6 +147,8 @@ endif()
134147

135148
# config variables for ffi.h.in
136149
set(VERSION ${PROJECT_VERSION})
150+
#set(FFI_VERSION_STRING "${PROJECT_VERSION}")
151+
#set(FFI_VERSION_NUMBER ${PROJECT_VERSION})
137152

138153
set(KNOWN_PROCESSORS x86 x86_64 amd64 arm arm64 i386 i686 armv7l armv7-a aarch64)
139154

@@ -240,7 +255,7 @@ endif()
240255

241256
macro(add_assembly ASMFILE)
242257
get_filename_component(ASMFILE_FULL "${ASMFILE}" ABSOLUTE)
243-
if(MSVC)
258+
if(MSVC OR CMAKE_C_COMPILER_ID MATCHES "IntelLLVM")
244259
if ("${TARGET}" STREQUAL "ARM_WIN64")
245260
set(ARCH_ASSEMBLER armasm64)
246261
elseif ("${TARGET}" STREQUAL "ARM_WIN32")
@@ -348,7 +363,7 @@ if(WIN32 OR MINGW)
348363
endif()
349364

350365
add_library(libffi ${LIB_TYPE} ${FFI_SOURCES})
351-
target_compile_options(libffi PRIVATE ${MSVC_OPTS})
366+
target_compile_definitions(libffi PRIVATE ${MSVC_DEFS})
352367

353368
install(TARGETS libffi
354369
EXPORT ${PROJECT_NAME}Targets

0 commit comments

Comments
 (0)