BUILD: started to support cross compiling
parent
1749f27bb8
commit
1a59746843
2
Makefile
2
Makefile
|
@ -174,5 +174,5 @@ updatelibs: update-nuklear update-restclient-cpp update-libuv update-stb update-
|
|||
$(MAKE) -C $(BUILDDIR) update-libs
|
||||
|
||||
windows:
|
||||
$(Q)if [ ! -f $(BUILDDIR)-windows/CMakeCache.txt ]; then i686-w64-mingw32.static-cmake -H. -B$(BUILDDIR)-windows -DCURL_CA_PATH=none -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR)-windows; fi
|
||||
$(Q)if [ ! -f $(BUILDDIR)-windows/CMakeCache.txt ]; then i686-w64-mingw32.static-cmake -H. -B$(BUILDDIR)-windows -DCURL_CA_PATH=none -DVOXEDIT_ONLY=True -DCMAKE_INSTALL_PREFIX=$(INSTALL_DIR); fi
|
||||
$(Q)$(MAKE) --no-print-directory -C $(BUILDDIR)-windows install
|
||||
|
|
|
@ -48,7 +48,7 @@ endif()
|
|||
|
||||
# thread sanitizer doesn't work in combination with address and leak
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORTIFY_SOURCE=2 -O1")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORTIFY_SOURCE=2 -O1 -D__STDC_FORMAT_MACROS")
|
||||
|
||||
# Set -Werror to catch "argument unused during compilation" warnings
|
||||
set(CMAKE_REQUIRED_FLAGS "-Werror -fthread-sanitizer") # Also needs to be a link flag for test to pass
|
||||
|
@ -88,3 +88,24 @@ if (HAVE_FLAG_SANITIZE_ADDRESS)
|
|||
set(SANITIZE_ADDRESS_FLAG "-fsanitize=address" CACHE STRING "" FORCE)
|
||||
message("Support address sanitizer")
|
||||
endif()
|
||||
|
||||
# If we are cross compiling, create a directory for native build.
|
||||
set(NATIVE_BUILD_DIR "${CMAKE_BINARY_DIR}/native" CACHE PATH "Path to the native build directory")
|
||||
set(NATIVE_BINARY_DIR "${NATIVE_BUILD_DIR}/bin" CACHE PATH "Path to the native binary directory")
|
||||
set(NATIVE_BUILD_TARGET "${NATIVE_BUILD_DIR}/CMakeCache.txt")
|
||||
|
||||
if(CMAKE_CROSSCOMPILING AND NOT TARGET native-cmake-build)
|
||||
file(MAKE_DIRECTORY ${NATIVE_BUILD_DIR})
|
||||
add_custom_command(
|
||||
OUTPUT ${NATIVE_BUILD_TARGET}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-G "${CMAKE_GENERATOR}"
|
||||
"${CMAKE_SOURCE_DIR}"
|
||||
"-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}"
|
||||
"-DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${NATIVE_BINARY_DIR}"
|
||||
WORKING_DIRECTORY ${NATIVE_BUILD_DIR}
|
||||
VERBATIM USES_TERMINAL
|
||||
)
|
||||
|
||||
add_custom_target(native-cmake-build DEPENDS ${NATIVE_BUILD_TARGET})
|
||||
endif()
|
||||
|
|
|
@ -43,7 +43,7 @@ macro(generate_compute_shaders TARGET)
|
|||
OUTPUT ${_shader}.in
|
||||
IMPLICIT_DEPENDS C ${_shaders}
|
||||
COMMENT "Validate ${_file} and generate ${_shaderfile}"
|
||||
COMMAND $<TARGET_FILE:computeshadertool> --shader ${_dir}/${_file} -I ${_dir} ${SHADERTOOL_INCLUDE_DIRS_PARAM} --postfix .in --shadertemplate ${_template} --sourcedir ${GEN_DIR}
|
||||
COMMAND computeshadertool --shader ${_dir}/${_file} -I ${_dir} ${SHADERTOOL_INCLUDE_DIRS_PARAM} --postfix .in --shadertemplate ${_template} --sourcedir ${GEN_DIR}
|
||||
DEPENDS computeshadertool ${_shaders} ${_template}
|
||||
VERBATIM
|
||||
)
|
||||
|
|
|
@ -5,7 +5,7 @@ macro(generate_db_models TARGET INPUT OUTPUT)
|
|||
add_custom_command(
|
||||
OUTPUT ${GEN_DIR}${OUTPUT}
|
||||
COMMENT "Generate ${OUTPUT}"
|
||||
COMMAND $<TARGET_FILE:databasetool> --tablefile ${INPUT} --outfile ${GEN_DIR}${OUTPUT}
|
||||
COMMAND databasetool --tablefile ${INPUT} --outfile ${GEN_DIR}${OUTPUT}
|
||||
DEPENDS databasetool ${INPUT}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
)
|
||||
|
|
|
@ -12,7 +12,7 @@ macro(generate_protocol TARGET)
|
|||
list(APPEND _headers ${GEN_DIR}${HEADER})
|
||||
add_custom_command(
|
||||
OUTPUT ${GEN_DIR}${HEADER}
|
||||
COMMAND $<TARGET_FILE:flatc> -c -I ${CMAKE_CURRENT_SOURCE_DIR}/../attrib/definitions --scoped-enums -o ${GEN_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/definitions/${DEFINITION}
|
||||
COMMAND flatc -c -I ${CMAKE_CURRENT_SOURCE_DIR}/../attrib/definitions --scoped-enums -o ${GEN_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/definitions/${DEFINITION}
|
||||
DEPENDS flatc ${CMAKE_CURRENT_SOURCE_DIR}/definitions/${DEFINITION}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMENT "Generating source code for ${DEFINITION}"
|
||||
|
|
|
@ -52,7 +52,7 @@ macro(generate_shaders TARGET)
|
|||
OUTPUT ${_shaderheaderpath}.in ${_shadersourcepath}.in
|
||||
IMPLICIT_DEPENDS C ${_shaders}
|
||||
COMMENT "Validate ${_file}"
|
||||
COMMAND $<TARGET_FILE:shadertool> --glslang ${CMAKE_BINARY_DIR}/glslangValidator -I ${_dir} ${SHADERTOOL_INCLUDE_DIRS_PARAM} --postfix .in --shader ${_dir}/${_file} --headertemplate ${_template_header} --sourcetemplate ${_template_cpp} --buffertemplate ${_template_ub} --sourcedir ${GEN_DIR}
|
||||
COMMAND shadertool --glslang ${CMAKE_BINARY_DIR}/glslangValidator -I ${_dir} ${SHADERTOOL_INCLUDE_DIRS_PARAM} --postfix .in --shader ${_dir}/${_file} --headertemplate ${_template_header} --sourcetemplate ${_template_cpp} --buffertemplate ${_template_ub} --sourcedir ${GEN_DIR}
|
||||
DEPENDS shadertool ${_shaders} ${_template_header} ${_template_cpp} ${_template_ub}
|
||||
)
|
||||
list(APPEND _headers ${_shaderheaderpath})
|
||||
|
|
|
@ -20,7 +20,7 @@ macro(generate_unity_sources)
|
|||
set(SRCS ${_UNITY_SRCS})
|
||||
|
||||
get_property(NOUNITY GLOBAL PROPERTY ${TARGET}_NOUNITY)
|
||||
if (NOUNITY)
|
||||
if (NOUNITY OR CMAKE_CROSSCOMPILING)
|
||||
if (_UNITY_SOURCES)
|
||||
target_sources(${TARGET} PRIVATE ${SRCS})
|
||||
elseif (_UNITY_EXECUTABLE)
|
||||
|
|
|
@ -127,6 +127,33 @@ macro(engine_add_executable)
|
|||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(engine_add_build_executable)
|
||||
set(_OPTIONS_ARGS WINDOWED NOINSTALL)
|
||||
set(_ONE_VALUE_ARGS TARGET)
|
||||
set(_MULTI_VALUE_ARGS SRCS LUA_SRCS FILES)
|
||||
|
||||
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})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(engine_add_module)
|
||||
set(_OPTIONS_ARGS)
|
||||
set(_ONE_VALUE_ARGS TARGET)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
|
||||
set(CMAKE_CROSSCOMPILING TRUE)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcast-qual -Wcast-align -Wpointer-arith -Wshadow -Wall -Wextra -Wreturn-type -Wwrite-strings -Wno-unused-parameter -DWINVER=0x501")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcast-qual -Wcast-align -Wpointer-arith -Wshadow -Wall -Wextra -Wreturn-type -Wwrite-strings -Wno-unused-parameter -DWINVER=0x501 -D__STDC_FORMAT_MACROS")
|
||||
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -ftree-vectorize -msse3 -DNDEBUG -D_FORTIFY_SOURCE=2")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -DDEBUG=1 -ggdb")
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ macro(check_ui_turbobadger TARGET)
|
|||
get_filename_component(_filename ${_file} NAME)
|
||||
add_custom_target(
|
||||
${_filename}
|
||||
COMMAND $<TARGET_FILE:uitool> ui/window/${_filename}
|
||||
COMMAND uitool ui/window/${_filename}
|
||||
COMMENT "Validate ui file: ${_filename}"
|
||||
DEPENDS uitool
|
||||
WORKING_DIRECTORY ${_workingdir}
|
||||
|
@ -14,6 +14,6 @@ macro(check_ui_turbobadger TARGET)
|
|||
add_dependencies(${TARGET} ${_filename})
|
||||
endforeach()
|
||||
if (UI_FILES)
|
||||
add_dependencies(${TARGET} uitool)
|
||||
#add_dependencies(${TARGET} uitool)
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -43,6 +43,8 @@ set(COMPILER_SRCS
|
|||
compiler/util.cpp
|
||||
)
|
||||
set_property(GLOBAL PROPERTY flatc_NOUNITY True)
|
||||
engine_add_executable(TARGET flatc SRCS ${COMPILER_SRCS} NOINSTALL)
|
||||
target_link_libraries(flatc flatbuffers)
|
||||
target_include_directories(flatc PRIVATE compiler/)
|
||||
engine_add_build_executable(TARGET flatc SRCS ${COMPILER_SRCS} NOINSTALL)
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
target_link_libraries(flatc flatbuffers)
|
||||
target_include_directories(flatc PRIVATE compiler/)
|
||||
endif()
|
||||
|
|
|
@ -11,7 +11,8 @@ set(SRCS
|
|||
${SHARED_SRCS}
|
||||
ComputeShaderTool.h ComputeShaderTool.cpp
|
||||
)
|
||||
engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL)
|
||||
engine_add_build_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL)
|
||||
if(NOT CMAKE_CROSSCOMPILING)
|
||||
engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES util compute simplecpp)
|
||||
|
||||
set(TEST_SRCS
|
||||
|
@ -26,3 +27,4 @@ gtest_suite_end(tests-${PROJECT_NAME})
|
|||
|
||||
gtest_suite_sources(tests ${TEST_SRCS})
|
||||
gtest_suite_deps(tests compute simplecpp)
|
||||
endif(NOT CMAKE_CROSSCOMPILING)
|
||||
|
|
|
@ -8,5 +8,7 @@ set(SRCS
|
|||
Table.h
|
||||
../../modules/persistence/FieldType.cpp
|
||||
)
|
||||
engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL)
|
||||
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)
|
||||
|
|
|
@ -12,7 +12,8 @@ set(SRCS
|
|||
ShaderTool.h ShaderTool.cpp
|
||||
${SHARED_SRCS}
|
||||
)
|
||||
engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL)
|
||||
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 util simplecpp)
|
||||
|
||||
|
@ -28,3 +29,4 @@ gtest_suite_end(tests-${PROJECT_NAME})
|
|||
|
||||
gtest_suite_sources(tests ${TEST_SRCS})
|
||||
gtest_suite_deps(tests video simplecpp)
|
||||
endif(NOT CMAKE_CROSSCOMPILING)
|
||||
|
|
|
@ -2,5 +2,7 @@ project(uitool)
|
|||
set(SRCS
|
||||
UITool.h UITool.cpp
|
||||
)
|
||||
engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL)
|
||||
engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES turbobadger)
|
||||
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)
|
||||
|
|
Loading…
Reference in New Issue