cmake: support CMake 4.0 and cross building (#307)

This commit is contained in:
Anonymous Maarten 2026-07-21 07:36:19 +02:00 committed by GitHub
parent baa3b160ce
commit 7a7762c337
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 50 additions and 15 deletions

View file

@ -1,5 +1,5 @@
CMAKE_MINIMUM_REQUIRED(VERSION 2.4...4.0)
PROJECT(yasm)
CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
if (COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif (COMMAND cmake_policy)

View file

@ -35,7 +35,8 @@ CONFIGURE_FILE(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
ADD_DEFINITIONS(-DHAVE_CONFIG_H)
INCLUDE(FindPythonInterp)
FIND_PACKAGE(Python3 REQUIRED COMPONENTS Interpreter)
set(PYTHON_EXECUTABLE "${Python3_EXECUTABLE}")
IF (NOT PYTHON_EXECUTABLE)
MESSAGE(FATAL_ERROR "Could not find Python executable")
ENDIF (NOT PYTHON_EXECUTABLE)

View file

@ -58,31 +58,24 @@ macro (YASM_ADD_MODULE _module_NAME)
endmacro (YASM_ADD_MODULE)
macro (YASM_GENPERF _in_NAME _out_NAME)
get_target_property(_tmp_GENPERF_EXE genperf LOCATION)
add_custom_command(
OUTPUT ${_out_NAME}
COMMAND ${_tmp_GENPERF_EXE} ${_in_NAME} ${_out_NAME}
DEPENDS ${_tmp_GENPERF_EXE}
COMMAND yasm::genperf ${_in_NAME} ${_out_NAME}
MAIN_DEPENDENCY ${_in_NAME}
)
endmacro (YASM_GENPERF)
macro (YASM_RE2C _in_NAME _out_NAME)
get_target_property(_tmp_RE2C_EXE re2c LOCATION)
add_custom_command(
OUTPUT ${_out_NAME}
COMMAND ${_tmp_RE2C_EXE} ${ARGN} -o ${_out_NAME} ${_in_NAME}
DEPENDS ${_tmp_RE2C_EXE}
MAIN_DEPENDENCY ${_in_NAME}
COMMAND yasm::re2c ${ARGN} -o ${_out_NAME} ${_in_NAME}
)
endmacro (YASM_RE2C)
macro (YASM_GENMACRO _in_NAME _out_NAME _var_NAME)
get_target_property(_tmp_GENMACRO_EXE genmacro LOCATION)
add_custom_command(
OUTPUT ${_out_NAME}
COMMAND ${_tmp_GENMACRO_EXE} ${_out_NAME} ${_var_NAME} ${_in_NAME}
DEPENDS ${_tmp_GENMACRO_EXE}
COMMAND yasm::genmacro ${_out_NAME} ${_var_NAME} ${_in_NAME}
MAIN_DEPENDENCY ${_in_NAME}
)
endmacro (YASM_GENMACRO)

View file

@ -36,6 +36,9 @@ IF(BUILD_SHARED_LIBS)
OUTPUT_NAME "yasm"
COMPILE_FLAGS -DYASM_LIB_SOURCE
)
if(WIN32)
SET_PROPERTY(TARGET libyasm PROPERTY PREFIX "")
endif()
ELSE(BUILD_SHARED_LIBS)
SET_TARGET_PROPERTIES(libyasm PROPERTIES
COMPILE_FLAGS -DYASM_LIB_SOURCE

View file

@ -90,6 +90,7 @@ IF(BUILD_SHARED_LIBS)
TARGET_LINK_LIBRARIES(yasmstd libyasm)
IF(WIN32)
SET_PROPERTY(TARGET yasmstd PROPERTY PREFIX "")
INSTALL(TARGETS yasmstd LIBRARY DESTINATION bin)
ELSE(WIN32)
INSTALL(TARGETS yasmstd LIBRARY DESTINATION lib)

View file

@ -1,9 +1,15 @@
add_executable(genversion preprocs/nasm/genversion.c)
get_target_property(_tmp_GENVERSION_EXE genversion LOCATION)
if(CMAKE_CROSSCOMPILING)
find_program(GENVERSION_BIN NAMES genversion REQUIRED)
add_executable(yasm::genversion IMPORTED GLOBAL)
set_property(TARGET yasm::genversion PROPERTY IMPORTED_LOCATION "${GENVERSION_BIN}")
else()
add_executable(yasm::genversion ALIAS genversion)
endif()
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version.mac
COMMAND ${_tmp_GENVERSION_EXE} ${CMAKE_CURRENT_BINARY_DIR}/version.mac
DEPENDS ${_tmp_GENVERSION_EXE}
COMMAND yasm::genversion ${CMAKE_CURRENT_BINARY_DIR}/version.mac
)
YASM_GENMACRO(

View file

@ -54,3 +54,6 @@ ADD_LIBRARY(dbgmod MODULE
dbg-objfmt.c
)
TARGET_LINK_LIBRARIES(dbgmod ${YASM_LIBRARY})
if(WIN32)
SET_PROPERTY(TARGET dbgmod PROPERTY PREFIX "")
endif()

View file

@ -143,3 +143,7 @@ ADD_LIBRARY(x86mod MODULE
x86regtmod.c
)
TARGET_LINK_LIBRARIES(x86mod ${YASM_LIBRARY})
if(WIN32)
SET_PROPERTY(TARGET x86mod PROPERTY PREFIX "")
endif()

View file

@ -1,3 +1,11 @@
add_executable(genmacro
genmacro.c
)
if(CMAKE_CROSSCOMPILING)
find_program(GENMACRO_BIN NAMES genmacro REQUIRED)
add_executable(yasm::genmacro IMPORTED GLOBAL)
set_property(TARGET yasm::genmacro PROPERTY IMPORTED_LOCATION "${GENMACRO_BIN}")
else()
add_executable(yasm::genmacro ALIAS genmacro)
endif()

View file

@ -6,3 +6,11 @@ add_executable(genperf
../../libyasm/xstrdup.c
)
set_target_properties(genperf PROPERTIES COMPILE_FLAGS -DYASM_LIB_DECL=)
if(CMAKE_CROSSCOMPILING)
find_program(GENPERF_BIN NAMES genperf REQUIRED)
add_executable(yasm::genperf IMPORTED GLOBAL)
set_property(TARGET yasm::genperf PROPERTY IMPORTED_LOCATION "${GENPERF_BIN}")
else()
add_executable(yasm::genperf ALIAS genperf)
endif()

View file

@ -9,3 +9,11 @@ add_executable(re2c
substr.c
translate.c
)
if(CMAKE_CROSSCOMPILING)
find_program(RE2C_BIN NAMES re2c REQUIRED)
add_executable(yasm::re2c IMPORTED GLOBAL)
set_property(TARGET yasm::re2c PROPERTY IMPORTED_LOCATION "${RE2C_BIN}")
else()
add_executable(yasm::re2c ALIAS re2c)
endif()