mirror of
https://github.com/yasm/yasm
synced 2026-08-26 22:26:05 -04:00
cmake: support CMake 4.0 and cross building (#307)
This commit is contained in:
parent
baa3b160ce
commit
7a7762c337
11 changed files with 50 additions and 15 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue