mirror of
https://github.com/partic2/libffi
synced 2026-11-09 17:47:19 +00:00
support to be included by add_subdirectory
remove TRYRUN to allow cross compile fix windows 32bit build
This commit is contained in:
@@ -30,6 +30,10 @@ set_property(TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1)
|
|||||||
|
|
||||||
add_library(ffi_static STATIC $<TARGET_OBJECTS:objlib>)
|
add_library(ffi_static STATIC $<TARGET_OBJECTS:objlib>)
|
||||||
|
|
||||||
|
target_include_directories(
|
||||||
|
ffi_static PUBLIC
|
||||||
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>")
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
add_definitions(-DFFI_BUILDING_DLL)
|
add_definitions(-DFFI_BUILDING_DLL)
|
||||||
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||||
@@ -38,6 +42,10 @@ elseif(CMAKE_SYSTEM_NAME MATCHES Darwin)
|
|||||||
endif()
|
endif()
|
||||||
add_library(ffi_shared SHARED $<TARGET_OBJECTS:objlib> ${OBJECTS_LIST})
|
add_library(ffi_shared SHARED $<TARGET_OBJECTS:objlib> ${OBJECTS_LIST})
|
||||||
|
|
||||||
|
target_include_directories(
|
||||||
|
ffi_shared PUBLIC
|
||||||
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>")
|
||||||
|
|
||||||
set_target_properties(ffi_static PROPERTIES OUTPUT_NAME ffi)
|
set_target_properties(ffi_static PROPERTIES OUTPUT_NAME ffi)
|
||||||
set_target_properties(ffi_shared PROPERTIES OUTPUT_NAME ffi)
|
set_target_properties(ffi_shared PROPERTIES OUTPUT_NAME ffi)
|
||||||
|
|
||||||
|
|||||||
+1
-11
@@ -136,17 +136,7 @@ check_function_exists (mmap HAVE_MMAP)
|
|||||||
|
|
||||||
check_symbol_exists (MAP_ANON sys/mman.h HAVE_MMAP_ANON)
|
check_symbol_exists (MAP_ANON sys/mman.h HAVE_MMAP_ANON)
|
||||||
|
|
||||||
check_c_source_runs(
|
set(HAVE_MMAP_DEV_ZERO OFF)
|
||||||
"
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/mman.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
int devzero = open(\"/dev/zero\", O_RDWR);
|
|
||||||
return devzero == -1 || mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, devzero, 0) == (void *)-1 ? 1 : 0;
|
|
||||||
}" HAVE_MMAP_DEV_ZERO)
|
|
||||||
|
|
||||||
check_include_file(alloca.h HAVE_ALLOCA_H)
|
check_include_file(alloca.h HAVE_ALLOCA_H)
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ else()
|
|||||||
set(HOST_ARCH ${CMAKE_C_COMPILER_ARCHITECTURE_ID})
|
set(HOST_ARCH ${CMAKE_C_COMPILER_ARCHITECTURE_ID})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
if("${TARGET_PLATFORM}" STREQUAL "")
|
if("${TARGET_PLATFORM}" STREQUAL "")
|
||||||
if(HOST_ARCH MATCHES x64|x86_64|AMD64|amd64)
|
if(HOST_ARCH MATCHES x64|x86_64|AMD64|amd64)
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
|
if(CMAKE_SYSTEM_NAME STREQUAL Windows)
|
||||||
@@ -12,7 +13,7 @@ if("${TARGET_PLATFORM}" STREQUAL "")
|
|||||||
set(TARGET_PLATFORM X86_64)
|
set(TARGET_PLATFORM X86_64)
|
||||||
endif()
|
endif()
|
||||||
elseif(HOST_ARCH MATCHES i.*86.*|X86|x86)
|
elseif(HOST_ARCH MATCHES i.*86.*|X86|x86)
|
||||||
if(MSVC)
|
if(CMAKE_SYSTEM_NAME MATCHES Windows)
|
||||||
set(TARGET_PLATFORM X86_WIN32)
|
set(TARGET_PLATFORM X86_WIN32)
|
||||||
else()
|
else()
|
||||||
set(TARGET_PLATFORM X86)
|
set(TARGET_PLATFORM X86)
|
||||||
@@ -24,13 +25,13 @@ if("${TARGET_PLATFORM}" STREQUAL "")
|
|||||||
set(TARGET_PLATFORM X86_FREEBSD)
|
set(TARGET_PLATFORM X86_FREEBSD)
|
||||||
endif()
|
endif()
|
||||||
elseif(HOST_ARCH MATCHES aarch64|ARM64|arm64)
|
elseif(HOST_ARCH MATCHES aarch64|ARM64|arm64)
|
||||||
if(MSVC)
|
if(CMAKE_SYSTEM_NAME MATCHES Windows)
|
||||||
set(TARGET_PLATFORM ARM_WIN64)
|
set(TARGET_PLATFORM ARM_WIN64)
|
||||||
else()
|
else()
|
||||||
set(TARGET_PLATFORM AARCH64)
|
set(TARGET_PLATFORM AARCH64)
|
||||||
endif()
|
endif()
|
||||||
elseif(HOST_ARCH MATCHES arm.*|ARM.*)
|
elseif(HOST_ARCH MATCHES arm.*|ARM.*)
|
||||||
if(MSVC)
|
if(CMAKE_SYSTEM_NAME MATCHES Windows)
|
||||||
set(TARGET_PLATFORM ARM_WIN32)
|
set(TARGET_PLATFORM ARM_WIN32)
|
||||||
else()
|
else()
|
||||||
set(TARGET_PLATFORM ARM)
|
set(TARGET_PLATFORM ARM)
|
||||||
|
|||||||
Reference in New Issue
Block a user