CMAKE: removed a lot of extra handling for cross-compilation

master
Martin Gerhardy 2020-06-17 20:27:51 +02:00
parent 5822a410f0
commit c598dd5547
8 changed files with 15 additions and 59 deletions

View File

@ -187,7 +187,7 @@ macro(engine_add_library)
endif()
else()
message(STATUS "Use the bundled lib ${_ADDLIB_LIB}")
if (_ADDLIB_UNITY AND NOT CMAKE_CROSSCOMPILING AND NOT DISABLE_UNITY)
if (_ADDLIB_UNITY AND NOT DISABLE_UNITY)
set(UNITY_SRC_CPP ${CMAKE_CURRENT_BINARY_DIR}/${_ADDLIB_LIB}_unity.cpp)
file(WRITE ${UNITY_SRC_CPP}.in "/** autogenerated */\n")
set(UNITY_SRC_C ${CMAKE_CURRENT_BINARY_DIR}/${_ADDLIB_LIB}_unity.c)

View File

@ -38,28 +38,14 @@ macro(generate_compute_shaders TARGET)
convert_to_camel_case(${_file} _f)
set(_shaderfile "${_f}Shader.h")
set(_shader "${GEN_DIR}${_shaderfile}")
# TODO We have to add the shader/ dirs of all dependencies to the include path
if (CMAKE_CROSS_COMPILING)
message(STATUS "Looking for native tool in ${NATIVE_BUILD_DIR}")
find_program(COMPUTESHADERTOOL_EXECUTABLE NAMES vengi-computeshadertool PATHS ${NATIVE_BUILD_DIR}/computeshadertool)
add_custom_command(
OUTPUT ${_shader}.in
IMPLICIT_DEPENDS C ${_shaders}
COMMENT "Validate ${_file} and generate ${_shaderfile}"
COMMAND ${COMPUTESHADERTOOL_EXECUTABLE} --shader ${_dir}/${_file} -I ${_dir} ${SHADERTOOL_INCLUDE_DIRS_PARAM} --postfix .in --shadertemplate ${_template} --sourcedir ${GEN_DIR}
DEPENDS ${_shaders} ${_template}
VERBATIM
)
else()
add_custom_command(
OUTPUT ${_shader}.in
IMPLICIT_DEPENDS C ${_shaders}
COMMENT "Validate ${_file} and generate ${_shaderfile}"
COMMAND computeshadertool --shader ${_dir}/${_file} -I ${_dir} ${SHADERTOOL_INCLUDE_DIRS_PARAM} --postfix .in --shadertemplate ${_template} --sourcedir ${GEN_DIR}
DEPENDS computeshadertool ${_shaders} ${_template}
VERBATIM
)
endif()
add_custom_command(
OUTPUT ${_shader}.in
IMPLICIT_DEPENDS C ${_shaders}
COMMENT "Validate ${_file} and generate ${_shaderfile}"
COMMAND computeshadertool --shader ${_dir}/${_file} -I ${_dir} ${SHADERTOOL_INCLUDE_DIRS_PARAM} --postfix .in --shadertemplate ${_template} --sourcedir ${GEN_DIR}
DEPENDS computeshadertool ${_shaders} ${_template}
VERBATIM
)
list(APPEND _headers ${_shader})
add_custom_command(
OUTPUT ${_shader}

View File

@ -20,7 +20,7 @@ macro(generate_unity_sources)
set(SRCS ${_UNITY_SRCS})
get_property(TARGET_NOUNITY GLOBAL PROPERTY ${TARGET}_NOUNITY)
if (TARGET_NOUNITY OR CMAKE_CROSSCOMPILING OR DISABLE_UNITY)
if (TARGET_NOUNITY OR DISABLE_UNITY)
if (_UNITY_SOURCES)
target_sources(${TARGET} PRIVATE ${SRCS})
elseif (_UNITY_EXECUTABLE)

View File

@ -22,7 +22,7 @@ endfunction()
# time.
#
function(engine_add_executable)
set(_OPTIONS_ARGS WINDOWED NOINSTALL NATIVE)
set(_OPTIONS_ARGS WINDOWED NOINSTALL)
set(_ONE_VALUE_ARGS TARGET)
set(_MULTI_VALUE_ARGS SRCS LUA_SRCS FILES)
@ -76,9 +76,6 @@ function(engine_add_executable)
set(INSTALL_DATA_DIR "${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}-${_EXE_TARGET}")
set(INSTALL_ICON_DIR "${CMAKE_INSTALL_DATADIR}/icons")
set(INSTALL_APPLICATION_DIR "${CMAKE_INSTALL_DATADIR}/applications")
if (${_EXE_NATIVE})
message(STATUS "Build native ${_EXE_TARGET}")
endif()
if (_EXE_NOINSTALL)
set(INSTALL_DATA False)
@ -202,9 +199,7 @@ endfunction()
#
# Use this function to add binaries that are needed to build the project. E.g.
# generating code. This is handled a little bit different than the usual engine_add_module
# in a way that it takes care of cross compiling. In a cross compiling environment
# you still get the native running code generator.
# generating code.
#
function(engine_add_build_executable)
set(_OPTIONS_ARGS WINDOWED NOINSTALL)
@ -213,25 +208,8 @@ function(engine_add_build_executable)
cmake_parse_arguments(_EXE "${_OPTIONS_ARGS}" "${_ONE_VALUE_ARGS}" "${_MULTI_VALUE_ARGS}" ${ARGN} )
if(CMAKE_CROSSCOMPILING)
set(NATIVE_BINARY "${NATIVE_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${_EXE_TARGET}")
add_custom_target("build-native-${_EXE_TARGET}"
COMMAND ${CMAKE_COMMAND}
--build "${NATIVE_BUILD_DIR}"
--target "${_EXE_TARGET}"
DEPENDS ${NATIVE_BUILD_TARGET}
BYPRODUCTS ${NATIVE_BINARY}
WORKING_DIRECTORY ${NATIVE_BUILD_DIR}
VERBATIM USES_TERMINAL
)
add_executable(${_EXE_TARGET} IMPORTED)
add_dependencies(${_EXE_TARGET} "build-native-${_EXE_TARGET}")
set_property(TARGET ${_EXE_TARGET} PROPERTY IMPORTED_LOCATION ${NATIVE_BINARY})
else()
engine_add_executable("${ARGN};NATIVE")
set_property(TARGET ${_EXE_TARGET} PROPERTY INTERPROCEDURAL_OPTIMIZATION False)
endif()
engine_add_executable("${ARGN}")
set_property(TARGET ${_EXE_TARGET} PROPERTY INTERPROCEDURAL_OPTIMIZATION False)
endfunction()
#

View File

@ -12,7 +12,6 @@ set(SRCS
ComputeShaderTool.h ComputeShaderTool.cpp
)
engine_add_build_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL)
if(NOT CMAKE_CROSSCOMPILING)
engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES compute simplecpp)
set(TEST_SRCS
@ -27,4 +26,3 @@ gtest_suite_end(tests-${PROJECT_NAME})
gtest_suite_sources(tests ${TEST_SRCS})
gtest_suite_deps(tests compute simplecpp)
endif(NOT CMAKE_CROSSCOMPILING)

View File

@ -9,6 +9,4 @@ set(SRCS
../../modules/persistence/FieldType.cpp
)
engine_add_build_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL)
if(NOT CMAKE_CROSSCOMPILING)
engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES core)
endif(NOT CMAKE_CROSSCOMPILING)

View File

@ -16,7 +16,6 @@ if (MSVC)
set_property(GLOBAL PROPERTY ${PROJECT_NAME}_NOUNITY TRUE)
endif()
engine_add_build_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL)
if(NOT CMAKE_CROSSCOMPILING)
add_dependencies(${PROJECT_NAME} glslangValidator)
engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES video simplecpp)
@ -32,4 +31,3 @@ gtest_suite_end(tests-${PROJECT_NAME})
gtest_suite_sources(tests ${TEST_SRCS})
gtest_suite_deps(tests video simplecpp)
endif(NOT CMAKE_CROSSCOMPILING)

View File

@ -3,6 +3,4 @@ set(SRCS
UITool.h UITool.cpp
)
engine_add_build_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL)
if(NOT CMAKE_CROSSCOMPILING)
engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES turbobadger)
endif(NOT CMAKE_CROSSCOMPILING)
engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES turbobadger)