64-bit tests now pass (well, nearly).
tcctest1-3 fail, but this appears to be due to bugs in GCC rather than TCC (from manual inspection of the output).
This commit is contained in:
@ -46,32 +46,36 @@ set(I386_SOURCES i386-gen.c i386-asm.c i386-asm.h i386-tok.h)
|
||||
set(X86_64_SOURCES x86_64-gen.c i386-asm.c x86_64-asm.h)
|
||||
|
||||
if(TCC_TARGET STREQUAL "Win32")
|
||||
set(TCC_TARGET_I386 ON)
|
||||
set(TCC_TARGET_PE ON)
|
||||
set(TCC_TARGET_FLAGS -DTCC_TARGET_I386 -DTCC_TARGET_PE)
|
||||
set(LIBTCC_TARGET_SOURCES ${I386_SOURCES} tccpe.c)
|
||||
elseif(TCC_TARGET STREQUAL "Win64")
|
||||
set(TCC_TARGET_PE ON)
|
||||
set(TCC_TARGET_X86_64 ON)
|
||||
set(TCC_TARGET_FLAGS -DTCC_TARGET_X86_64 -DTCC_TARGET_PE)
|
||||
set(LIBTCC_TARGET_SOURCES ${X86_64_SOURCES} tccpe.c)
|
||||
elseif(TCC_TARGET STREQUAL "WinCE")
|
||||
set(TCC_TARGET_ARM ON)
|
||||
set(TCC_TARGET_FLAGS -DTCC_TARGET_ARM
|
||||
-DTCC_ARM_VERSION=${TCC_ARM_VERSION})
|
||||
set(LIBTCC_TARGET_SOURCES arm-gen.c tccpe.c)
|
||||
elseif(TCC_TARGET STREQUAL "i386")
|
||||
set(TCC_TARGET_I386 ON)
|
||||
set(TCC_TARGET_FLAGS -DTCC_TARGET_I386)
|
||||
set(LIBTCC_TARGET_SOURCES ${I386_SOURCES})
|
||||
elseif(TCC_TARGET STREQUAL "x86-64")
|
||||
set(TCC_TARGET_X86_64 ON)
|
||||
set(TCC_TARGET_FLAGS -DTCC_TARGET_X86_64)
|
||||
set(LIBTCC_TARGET_SOURCES ${X86_64_SOURCES})
|
||||
elseif(TCC_TARGET STREQUAL "ARM")
|
||||
set(TCC_TARGET_ARM ON)
|
||||
set(TCC_TARGET_FLAGS -DTCC_TARGET_ARM
|
||||
-DTCC_ARM_VERSION=${TCC_ARM_VERSION}
|
||||
-DTCC_ARM_EABI=${TCC_ARM_EABI}
|
||||
-DTCC_ARM_VFP=${TCC_ARM_VFP}
|
||||
-DTCC_ARM_HARDFLOAT=${TCC_ARM_HARDFLOAT})
|
||||
set(LIBTCC_TARGET_SOURCES arm-gen.c)
|
||||
elseif(TCC_TARGET STREQUAL "C67")
|
||||
set(TCC_TARGET_C67 ON)
|
||||
set(TCC_TARGET_FLAGS -DTCC_TARGET_C67)
|
||||
set(LIBTCC_TARGET_SOURCES c67-gen.c tcccoff.c)
|
||||
else()
|
||||
message(FATAL_ERROR "Unrecognised target in TCC_TARGET, must be one of ${TCC_TARGET_LIST}")
|
||||
endif()
|
||||
|
||||
add_definitions(${TCC_TARGET_FLAGS})
|
||||
file(STRINGS "VERSION" TCC_VERSION)
|
||||
list(GET TCC_VERSION 0 TCC_VERSION)
|
||||
include_directories(${CMAKE_BINARY_DIR})
|
||||
@ -86,7 +90,7 @@ set_target_properties(libtcc PROPERTIES PREFIX "")
|
||||
|
||||
add_executable(tcc tcc.c)
|
||||
target_link_libraries(tcc libtcc)
|
||||
set(TCC_CFLAGS -I${CMAKE_SOURCE_DIR}/include)
|
||||
set(TCC_CFLAGS -I${CMAKE_SOURCE_DIR}/include ${CMAKE_C_FLAGS})
|
||||
if(TCC_TARGET MATCHES "^Win")
|
||||
set(TCC_CFLAGS ${TCC_CFLAGS} -I${CMAKE_SOURCE_DIR}/win32/include)
|
||||
endif()
|
||||
@ -108,7 +112,7 @@ elseif(TCC_TARGET STREQUAL "x86-64")
|
||||
endif()
|
||||
|
||||
if (TCC_TARGET MATCHES "^Win")
|
||||
set(XCC tcc ${TCC_CFLAGS} -B${CMAKE_SOURCE_DIR}/win32)
|
||||
set(XCC tcc ${TCC_CFLAGS} ${TCC_TARGET_FLAGS} -B${CMAKE_SOURCE_DIR}/win32)
|
||||
set(XAR tiny_libmaker${CMAKE_EXECUTABLE_SUFFIX})
|
||||
set(XDEPENDS tiny_libmaker)
|
||||
endif()
|
||||
@ -119,7 +123,7 @@ if(LIBTCC1_SOURCES)
|
||||
string(REGEX MATCH "[^/]+$" LIBTCC1_O ${LIBTCC1_C})
|
||||
string(REGEX MATCH "^[^.]+" LIBTCC1_O ${LIBTCC1_O})
|
||||
set(LIBTCC1_O ${LIBTCC1_O}.o)
|
||||
add_custom_command(OUTPUT ${LIBTCC1_O} COMMAND ${XCC} -c ${CMAKE_SOURCE_DIR}/${LIBTCC1_C} -o ${LIBTCC1_O})
|
||||
add_custom_command(OUTPUT ${LIBTCC1_O} COMMAND ${XCC} -c ${CMAKE_SOURCE_DIR}/${LIBTCC1_C} -o ${LIBTCC1_O} DEPENDS ${CMAKE_SOURCE_DIR}/${LIBTCC1_C})
|
||||
list(APPEND LIBTCC1_OBJECTS ${LIBTCC1_O})
|
||||
endforeach()
|
||||
add_custom_command(OUTPUT libtcc1.a COMMAND ${XAR} libtcc1.a ${LIBTCC1_OBJECTS} DEPENDS ${LIBTCC1_OBJECTS} ${XDEPENDS})
|
||||
|
||||
Reference in New Issue
Block a user