| @@ -2,20 +2,19 @@ project(tcc C) · 1 unmodified line |
| 2 | cmake_minimum_required(VERSION 2.6) | 2 | cmake_minimum_required(VERSION 2.6) |
| 3 | enable_testing() | 3 | enable_testing() |
| 4 | | 4 | |
| 5 | set(CMAKE_USE_RELATIVE_PATHS ON) | 5 | # Detect native platform |
| 6 | | | |
| 7 | if(WIN32) | 6 | if(WIN32) |
| 8 | set(BUILD_SHARED_LIBS ON) | 7 | set(BUILD_SHARED_LIBS ON) |
| 9 | if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM") | 8 | if(CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM") |
| 10 | set(TCC_TARGET_DEFAULT "WinCE") | 9 | set(TCC_NATIVE_TARGET "WinCE") |
| 11 | elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) | 10 | elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) |
| 12 | set(TCC_TARGET_DEFAULT "Win64") | 11 | set(TCC_NATIVE_TARGET "Win64") |
| 13 | else() | 12 | else() |
| 14 | set(TCC_TARGET_DEFAULT "Win32") | 13 | set(TCC_NATIVE_TARGET "Win32") |
| 15 | endif() | 14 | endif() |
| 16 | else() | 15 | else() |
| 17 | if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") | 16 | if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm") |
| 18 | set(TCC_TARGET_DEFAULT "ARM") | 17 | set(TCC_NATIVE_TARGET "ARM") |
| 19 | if(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv5") | 18 | if(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv5") |
| 20 | set(TCC_ARM_VERSION_DEFAULT 5) | 19 | set(TCC_ARM_VERSION_DEFAULT 5) |
| 21 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv6") | 20 | elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv6") |
| @@ -26,108 +25,242 @@ else() · 4 unmodified lines |
| 26 | set(TCC_ARM_VERSION_DEFAULT 4) | 25 | set(TCC_ARM_VERSION_DEFAULT 4) |
| 27 | endif() | 26 | endif() |
| 28 | elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) | 27 | elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) |
| 29 | set(TCC_TARGET_DEFAULT "x86_64") | 28 | set(TCC_NATIVE_TARGET "x86_64") |
| 30 | else() | 29 | else() |
| 31 | set(TCC_TARGET_DEFAULT "i386") | 30 | set(TCC_NATIVE_TARGET "i386") |
| 32 | endif() | 31 | endif() |
| 33 | endif() | 32 | endif() |
| 34 | | 33 | |
| 35 | set(TCC_TARGET_LIST "Win32" "Win64" "WinCE" "i386" "x86_64" "ARM" "C67") | 34 | if(WIN32) |
| 36 | set(TCC_TARGET ${TCC_TARGET_DEFAULT} CACHE STRING "Target OS") | 35 | set(EXE_PATH ".") |
| 37 | set_property(CACHE TCC_TARGET PROPERTY STRINGS ${TCC_TARGET_LIST}) | 36 | set(TCC_LIB_PATH lib) |
| | 37 | set(NATIVE_LIB_PATH) |
| | 38 | set(DOC_PATH doc) |
| | 39 | else() |
| | 40 | set(EXE_PATH bin) |
| | 41 | set(TCC_LIB_PATH lib/tcc) |
| | 42 | set(NATIVE_LIB_PATH lib) |
| | 43 | set(DOC_PATH share/doc/tcc) |
| | 44 | endif() |
| 38 | | 45 | |
| 39 | set(TCC_ARM_VERSION ${TCC_ARM_VERSION_DEFAULT} CACHE STRING "ARM target CPU version") | 46 | # Use two variables to keep CMake configuration variable names consistent |
| 40 | set_property(CACHE TCC_ARM_VERSION PROPERTY STRINGS 4 5 6 7) | 47 | set(TCC_BCHECK OFF CACHE BOOL "Enable bounds checking") |
| 41 | set(TCC_ARM_EABI OFF CACHE BOOL "Enable EABI on ARM") | 48 | set(CONFIG_TCC_BCHECK ${TCC_BCHECK}) |
| 42 | set(TCC_ARM_VFP OFF CACHE BOOL "Enable VFP on ARM") | | |
| 43 | set(TCC_ARM_HARDFLOAT OFF CACHE BOOL "Enable hardware floating point on ARM") | | |
| 44 | | 49 | |
| 45 | set(I386_SOURCES i386-gen.c i386-asm.c i386-asm.h i386-tok.h) | 50 | set(TCC_BUILD_NATIVE ON CACHE BOOL "Build native compiler") |
| 46 | set(X86_64_SOURCES x86_64-gen.c i386-asm.c x86_64-asm.h) | 51 | set(TCC_BUILD_I386 OFF CACHE BOOL "Build i386 cross compiler") |
| | 52 | set(TCC_BUILD_X64 OFF CACHE BOOL "Build x86-64 cross compiler") |
| | 53 | set(TCC_BUILD_WIN32 OFF CACHE BOOL "Build Windows i386 cross compiler") |
| | 54 | set(TCC_BUILD_WIN64 OFF CACHE BOOL "Build Windows x86-64 cross compiler") |
| | 55 | set(TCC_BUILD_WINCE OFF CACHE BOOL "Build Windows CE cross compiler") |
| | 56 | set(TCC_BUILD_ARM_FPA OFF CACHE BOOL "Build arm-fpa cross compiler") |
| | 57 | set(TCC_BUILD_ARM_FPA_LD OFF CACHE BOOL "Build arm-fpa-ld cross compiler") |
| | 58 | set(TCC_BUILD_ARM_VFP OFF CACHE BOOL "Build arm-vfp cross compiler") |
| | 59 | set(TCC_BUILD_ARM_EABI OFF CACHE BOOL "Build ARM EABI cross compiler") |
| | 60 | set(TCC_BUILD_ARM_EABIHF OFF CACHE BOOL "Build ARM EABI hardware float cross compiler") |
| | 61 | set(TCC_BUILD_ARM OFF CACHE BOOL "Build ARM cross compiler") |
| | 62 | set(TCC_BUILD_C67 OFF CACHE BOOL "Build C67 cross compiler") |
| 47 | | 63 | |
| 48 | if(TCC_TARGET STREQUAL "Win32") | 64 | set(TCC_ARM_VERSION ${TCC_ARM_VERSION_DEFAULT} CACHE STRING "ARM target CPU version") |
| 49 | set(TCC_TARGET_FLAGS -DTCC_TARGET_I386 -DTCC_TARGET_PE) | 65 | set_property(CACHE TCC_ARM_VERSION PROPERTY STRINGS 4 5 6 7) |
| 50 | set(LIBTCC_TARGET_SOURCES ${I386_SOURCES} tccpe.c) | | |
| 51 | elseif(TCC_TARGET STREQUAL "Win64") | | |
| 52 | set(TCC_TARGET_FLAGS -DTCC_TARGET_X86_64 -DTCC_TARGET_PE) | | |
| 53 | set(LIBTCC_TARGET_SOURCES ${X86_64_SOURCES} tccpe.c) | | |
| 54 | elseif(TCC_TARGET STREQUAL "WinCE") | | |
| 55 | set(TCC_TARGET_FLAGS -DTCC_TARGET_ARM | | |
| 56 | -DTCC_ARM_VERSION=${TCC_ARM_VERSION}) | | |
| 57 | set(LIBTCC_TARGET_SOURCES arm-gen.c tccpe.c) | | |
| 58 | elseif(TCC_TARGET STREQUAL "i386") | | |
| 59 | set(TCC_TARGET_FLAGS -DTCC_TARGET_I386) | | |
| 60 | set(LIBTCC_TARGET_SOURCES ${I386_SOURCES}) | | |
| 61 | elseif(TCC_TARGET STREQUAL "x86-64") | | |
| 62 | set(TCC_TARGET_FLAGS -DTCC_TARGET_X86_64) | | |
| 63 | set(LIBTCC_TARGET_SOURCES ${X86_64_SOURCES}) | | |
| 64 | elseif(TCC_TARGET STREQUAL "ARM") | | |
| 65 | set(TCC_TARGET_FLAGS -DTCC_TARGET_ARM | | |
| 66 | -DTCC_ARM_VERSION=${TCC_ARM_VERSION} | | |
| 67 | -DTCC_ARM_EABI=${TCC_ARM_EABI} | | |
| 68 | -DTCC_ARM_VFP=${TCC_ARM_VFP} | | |
| 69 | -DTCC_ARM_HARDFLOAT=${TCC_ARM_HARDFLOAT}) | | |
| 70 | set(LIBTCC_TARGET_SOURCES arm-gen.c) | | |
| 71 | elseif(TCC_TARGET STREQUAL "C67") | | |
| 72 | set(TCC_TARGET_FLAGS -DTCC_TARGET_C67) | | |
| 73 | set(LIBTCC_TARGET_SOURCES c67-gen.c tcccoff.c) | | |
| 74 | else() | | |
| 75 | message(FATAL_ERROR "Unrecognised target in TCC_TARGET, must be one of ${TCC_TARGET_LIST}") | | |
| 76 | endif() | | |
| 77 | | 66 | |
| 78 | add_definitions(${TCC_TARGET_FLAGS}) | | |
| 79 | file(STRINGS "VERSION" TCC_VERSION) | 67 | file(STRINGS "VERSION" TCC_VERSION) |
| 80 | list(GET TCC_VERSION 0 TCC_VERSION) | 68 | list(GET TCC_VERSION 0 TCC_VERSION) |
| 81 | include_directories(${CMAKE_BINARY_DIR}) | 69 | include_directories(${CMAKE_BINARY_DIR}) |
| 82 | configure_file(config.h.in config.h) | 70 | configure_file(config.h.in config.h) |
| | 71 | configure_file(config.texi.in config.texi) |
| 83 | | 72 | |
| 84 | add_library(libtcc | 73 | # Utility variables |
| 85 | libtcc.c tccpp.c tccgen.c tccelf.c tccasm.c tccrun.c | 74 | set(I386_SOURCES i386-gen.c i386-asm.c i386-asm.h i386-tok.h) |
| 86 | tcc.h config.h libtcc.h tcctok.h | 75 | set(X86_64_SOURCES x86_64-gen.c i386-asm.c x86_64-asm.h) |
| 87 | ${LIBTCC_TARGET_SOURCES} | 76 | set(ARM_SOURCES arm_gen.c) |
| 88 | ) | | |
| 89 | set_target_properties(libtcc PROPERTIES PREFIX "") | | |
| 90 | | 77 | |
| 91 | add_executable(tcc tcc.c) | 78 | set(LIBTCC1_I386_SOURCES lib/alloca86.S lib/alloca86-bt.S) |
| 92 | target_link_libraries(tcc libtcc) | 79 | set(LIBTCC1_WIN_SOURCES win32/lib/crt1.c win32/lib/wincrt1.c win32/lib/dllcrt1.c win32/lib/dllmain.c win32/lib/chkstk.S) |
| 93 | set(TCC_CFLAGS -I${CMAKE_SOURCE_DIR}/include ${CMAKE_C_FLAGS}) | 80 | if(NOT WIN32) |
| 94 | if(TCC_TARGET MATCHES "^Win") | 81 | set(LIBTCC1_I386_SOURCES ${LIBTCC1_I386_SOURCES} lib/bcheck.c) |
| 95 | set(TCC_CFLAGS ${TCC_CFLAGS} -I${CMAKE_SOURCE_DIR}/win32/include) | | |
| 96 | endif() | 82 | endif() |
| 97 | | 83 | |
| 98 | add_executable(tiny_impdef win32/tools/tiny_impdef.c) | 84 | if(WIN32) |
| 99 | add_executable(tiny_libmaker win32/tools/tiny_libmaker.c) | 85 | add_executable(tiny_impdef win32/tools/tiny_impdef.c) |
| | 86 | endif() |
| | 87 | add_executable(tiny_libmaker_32 win32/tools/tiny_libmaker.c) |
| | 88 | set_target_properties(tiny_libmaker_32 PROPERTIES COMPILE_DEFINITIONS TCC_TARGET_I386) |
| | 89 | add_executable(tiny_libmaker_64 win32/tools/tiny_libmaker.c) |
| | 90 | set_target_properties(tiny_libmaker_64 PROPERTIES COMPILE_DEFINITIONS TCC_TARGET_X86_64) |
| 100 | | 91 | |
| 101 | set(LIBTCC1_I386_SOURCES lib/alloca86.S lib/alloca86-bt.S lib/bcheck.c) | 92 | macro(make_libtcc1 prefix xcc xar defs includes sources) |
| 102 | set(LIBTCC1_WIN_SOURCES win32/lib/crt1.c win32/lib/wincrt1.c win32/lib/dllcrt1.c win32/lib/dllmain.c win32/lib/chkstk.S) | 93 | set(libtcc1_prefix) |
| | 94 | if("${prefix}" STRGREATER "") |
| | 95 | set(libtcc1_prefix ${prefix}-) |
| | 96 | endif() |
| | 97 | set(libtcc1_flags -I${CMAKE_SOURCE_DIR}/include) |
| | 98 | foreach(i ${defs}) |
| | 99 | set(libtcc1_flags ${libtcc1_flags} -D${i}) |
| | 100 | endforeach() |
| | 101 | foreach(i ${includes}) |
| | 102 | set(libtcc1_flags ${libtcc1_flags} -I${CMAKE_SOURCE_DIR}/${i}) |
| | 103 | endforeach() |
| | 104 | set(libtcc1_objects) |
| | 105 | foreach(libtcc1_c lib/libtcc1.c ${sources}) |
| | 106 | string(REGEX MATCH "[^/]+$" libtcc1_o ${libtcc1_c}) |
| | 107 | string(REGEX MATCH "^[^.]+" libtcc1_o ${libtcc1_o}) |
| | 108 | set(libtcc1_o ${libtcc1_prefix}${libtcc1_o}.o) |
| | 109 | add_custom_command(OUTPUT ${libtcc1_o} |
| | 110 | COMMAND ${xcc} ${libtcc1_flags} -c ${CMAKE_SOURCE_DIR}/${libtcc1_c} -o ${libtcc1_o} |
| | 111 | DEPENDS ${xcc} ${CMAKE_SOURCE_DIR}/${libtcc1_c} |
| | 112 | ) |
| | 113 | list(APPEND libtcc1_objects ${libtcc1_o}) |
| | 114 | endforeach() |
| | 115 | add_custom_command(OUTPUT ${libtcc1_prefix}libtcc1.a |
| | 116 | COMMAND ${xar} ${libtcc1_prefix}libtcc1.a ${libtcc1_objects} |
| | 117 | DEPENDS ${xar} ${libtcc1_objects} |
| | 118 | ) |
| | 119 | add_custom_target(${libtcc1_prefix}libtcc1 ALL DEPENDS ${libtcc1_prefix}libtcc1.a) |
| | 120 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${libtcc1_prefix}libtcc1.a |
| | 121 | DESTINATION ${TCC_LIB_PATH}/${prefix} RENAME libtcc1.a) |
| | 122 | endmacro() |
| 103 | | 123 | |
| 104 | if(TCC_TARGET STREQUAL "Win32") | 124 | macro(make_tcc native_name cross_name cross_enabled definitions tcc_sources libtcc_ar libtcc_sources libtcc_includes) |
| 105 | set(LIBTCC1_SOURCES ${LIBTCC1_I386_SOURCES} ${LIBTCC1_WIN_SOURCES}) | 125 | if (xx${native_name} STREQUAL xx${TCC_NATIVE_TARGET}) |
| 106 | elseif(TCC_TARGET STREQUAL "Win64") | 126 | set(TCC_NATIVE_FLAGS) |
| 107 | set(LIBTCC1_SOURCES lib/alloca86_64.S ${LIBTCC1_WIN_SOURCES}) | 127 | foreach(make_tcc_def ${definitions}) |
| 108 | elseif(TCC_TARGET STREQUAL "i386") | 128 | set(TCC_NATIVE_FLAGS ${TCC_NATIVE_FLAGS} -D${make_tcc_def}) |
| 109 | set(LIBTCC1_SOURCES ${LIBTCC1_I386_SOURCES}) | 129 | endforeach() |
| 110 | elseif(TCC_TARGET STREQUAL "x86-64") | 130 | |
| 111 | set(LIBTCC1_SOURCES lib/alloca86_64.S) | 131 | if (TCC_BUILD_NATIVE) |
| 112 | endif() | 132 | add_library(libtcc |
| | 133 | libtcc.c |
| | 134 | tccpp.c |
| | 135 | tccgen.c |
| | 136 | tccelf.c |
| | 137 | tccasm.c |
| | 138 | tccrun.c |
| | 139 | tcc.h |
| | 140 | libtcc.h |
| | 141 | tcctok.h |
| | 142 | ${tcc_sources} |
| | 143 | ) |
| | 144 | set_target_properties(libtcc PROPERTIES OUTPUT_NAME tcc PREFIX lib LINK_FLAGS "-Wl,--output-def,libtcc.def") |
| | 145 | add_executable(tcc tcc.c) |
| | 146 | target_link_libraries(tcc libtcc) |
| | 147 | install(TARGETS tcc libtcc RUNTIME DESTINATION ${EXE_PATH} LIBRARY DESTINATION ${NATIVE_LIB_PATH}) |
| | 148 | set_target_properties(tcc libtcc PROPERTIES COMPILE_DEFINITIONS "${definitions}") |
| | 149 | |
| | 150 | if("${libtcc_sources}" STRGREATER "") |
| | 151 | make_libtcc1("" tcc "${libtcc_ar}" "${definitions}" "${libtcc_includes}" "${libtcc_sources}") |
| | 152 | endif() |
| | 153 | endif() |
| | 154 | endif() |
| | 155 | |
| | 156 | if(${cross_enabled}) |
| | 157 | add_executable(${cross_name}-tcc tcc.c) |
| | 158 | set_target_properties(${cross_name}-tcc PROPERTIES COMPILE_DEFINITIONS "ONE_SOURCE;${definitions}") |
| | 159 | install(TARGETS ${cross_name}-tcc RUNTIME DESTINATION ${EXE_PATH}) |
| | 160 | |
| | 161 | if("${libtcc_sources}" STRGREATER "") |
| | 162 | make_libtcc1(${cross_name} "${cross_name}-tcc" "${libtcc_ar}" "${definitions}" "${libtcc_includes}" "${libtcc_sources}") |
| | 163 | endif() |
| | 164 | endif() |
| | 165 | endmacro() |
| | 166 | |
| | 167 | make_tcc("Win32" i386-win32 TCC_BUILD_WIN32 |
| | 168 | "TCC_TARGET_I386;TCC_TARGET_PE" |
| | 169 | "${I386_SOURCES};tccpe.c" |
| | 170 | tiny_libmaker_32 "${LIBTCC1_I386_SOURCES};${LIBTCC1_WIN_SOURCES}" "win32/include;win32/include/winapi" |
| | 171 | ) |
| | 172 | make_tcc("Win64" x86_64-win32 TCC_BUILD_WIN64 |
| | 173 | "TCC_TARGET_X86_64;TCC_TARGET_PE" |
| | 174 | "${X86_64_SOURCES};tccpe.c" |
| | 175 | tiny_libmaker_64 "lib/alloca86_64.S;${LIBTCC1_WIN_SOURCES}" "win32/include;win32/include/winapi" |
| | 176 | ) |
| | 177 | make_tcc("WinCE" arm-win32 TCC_BUILD_WINCE |
| | 178 | "TCC_TARGET_ARM;TCC_ARM_VERSION=${TCC_ARM_VERSION};TCC_TARGET_PE" |
| | 179 | "${ARM_SOURCES};tccpe.c" |
| | 180 | "" "" "" |
| | 181 | ) |
| | 182 | make_tcc("i386" i386 TCC_BUILD_I386 |
| | 183 | TCC_TARGET_I386 |
| | 184 | "${I386_SOURCES}" |
| | 185 | tiny_libmaker_32 "${LIBTCC1_I386_SOURCES}" "" |
| | 186 | ) |
| | 187 | make_tcc("x86_64" x86_64 TCC_BUILD_X64 |
| | 188 | TCC_TARGET_X86_64 |
| | 189 | "${X86_64_SOURCES}" |
| | 190 | tiny_libmaker_64 "lib/alloca86_64.S" "" |
| | 191 | ) |
| | 192 | set(ARM_DEFINITIONS TCC_TARGET_ARM TCC_ARM_VERSION=${TCC_ARM_VERSION}) |
| | 193 | make_tcc("ARM" arm TCC_BUILD_ARM |
| | 194 | "${ARM_DEFINITIONS};WITHOUT_LIBTCC" |
| | 195 | "${ARM_SOURCES}" |
| | 196 | "" "" "" |
| | 197 | ) |
| | 198 | make_tcc("" arm-eabihf TCC_BUILD_ARM_EABIHF |
| | 199 | "${ARM_DEFINITIONS};TCC_ARM_EABI;TCC_ARM_HARDFLOAT" |
| | 200 | "${ARM_SOURCES}" |
| | 201 | "" "" "" |
| | 202 | ) |
| | 203 | make_tcc("" arm-eabi TCC_BUILD_ARM_EABI |
| | 204 | "${ARM_DEFINITIONS};TCC_ARM_EABI" |
| | 205 | "${ARM_SOURCES}" |
| | 206 | "" "" "" |
| | 207 | ) |
| | 208 | make_tcc("" arm-fpa TCC_BUILD_ARM_FPA |
| | 209 | "${ARM_DEFINITIONS}" |
| | 210 | "${ARM_SOURCES}" |
| | 211 | "" "" "" |
| | 212 | ) |
| | 213 | make_tcc("" arm-fpa-ld TCC_BUILD_ARM_FPA_LD |
| | 214 | "${ARM_DEFINITIONS};LDOUBLE_SIZE=12" |
| | 215 | "${ARM_SOURCES}" |
| | 216 | "" "" "" |
| | 217 | ) |
| | 218 | make_tcc("" arm-vfp TCC_BUILD_ARM_VFP |
| | 219 | "${ARM_DEFINITIONS};TCC_ARM_VFP" |
| | 220 | "${ARM_SOURCES}" |
| | 221 | "" "" "" |
| | 222 | ) |
| | 223 | make_tcc("" c67 TCC_BUILD_C67 |
| | 224 | TCC_TARGET_C67 |
| | 225 | "c67-gen.c;tcccoff.c" |
| | 226 | "" "" "" |
| | 227 | ) |
| | 228 | |
| | 229 | add_subdirectory(tests) |
| 113 | | 230 | |
| 114 | if (TCC_TARGET MATCHES "^Win") | 231 | find_program(MAKEINFO NAMES makeinfo PATHS C:/MinGW/MSYS/1.0/bin) |
| 115 | set(XCC tcc ${TCC_CFLAGS} ${TCC_TARGET_FLAGS} -B${CMAKE_SOURCE_DIR}/win32) | 232 | if(MAKEINFO) |
| 116 | set(XAR tiny_libmaker${CMAKE_EXECUTABLE_SUFFIX}) | 233 | add_custom_command(OUTPUT tcc-doc.html |
| 117 | set(XDEPENDS tiny_libmaker) | 234 | COMMAND ${MAKEINFO} --no-split --html -o tcc-doc.html ${CMAKE_CURRENT_SOURCE_DIR}/tcc-doc.texi |
| | 235 | DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tcc-doc.texi |
| | 236 | ) |
| | 237 | set(TCC_DOC_FILES tcc-doc.html) |
| | 238 | if(NOT WIN32) |
| | 239 | add_custom_command(OUTPUT tcc-doc.info |
| | 240 | COMMAND ${MAKEINFO} -o tcc-doc.info ${CMAKE_CURRENT_SOURCE_DIR}/tcc-doc.texi |
| | 241 | DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tcc-doc.texi |
| | 242 | ) |
| | 243 | set(TCC_DOC_FILES ${TCC_DOC_FILES} tcc-doc.info) |
| | 244 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tcc-doc.info DESTINATION share/info) |
| | 245 | endif() |
| | 246 | add_custom_target(tcc-doc ALL DEPENDS ${TCC_DOC_FILES}) |
| | 247 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tcc-doc.html DESTINATION ${DOC_PATH}) |
| 118 | endif() | 248 | endif() |
| 119 | | 249 | |
| 120 | if(LIBTCC1_SOURCES) | 250 | if(WIN32) |
| 121 | list(APPEND LIBTCC1_SOURCES lib/libtcc1.c) | 251 | file(GLOB WIN32_DEFS win32/lib/*.def) |
| 122 | foreach(LIBTCC1_C ${LIBTCC1_SOURCES}) | 252 | install(FILES ${WIN32_DEFS} DESTINATION lib) |
| 123 | string(REGEX MATCH "[^/]+$" LIBTCC1_O ${LIBTCC1_C}) | 253 | install(DIRECTORY include/ DESTINATION include) |
| 124 | string(REGEX MATCH "^[^.]+" LIBTCC1_O ${LIBTCC1_O}) | 254 | install(DIRECTORY win32/include/ DESTINATION include) |
| 125 | set(LIBTCC1_O ${LIBTCC1_O}.o) | 255 | install(DIRECTORY win32/examples/ DESTINATION examples) |
| 126 | add_custom_command(OUTPUT ${LIBTCC1_O} COMMAND ${XCC} -c ${CMAKE_SOURCE_DIR}/${LIBTCC1_C} -o ${LIBTCC1_O} DEPENDS ${CMAKE_SOURCE_DIR}/${LIBTCC1_C}) | 256 | install(FILES win32/tcc-win32.txt DESTINATION doc) |
| 127 | list(APPEND LIBTCC1_OBJECTS ${LIBTCC1_O}) | 257 | install(FILES ${CMAKE_BINARY_DIR}/libtcc.def DESTINATION libtcc) |
| 128 | endforeach() | 258 | install(FILES ${CMAKE_BINARY_DIR}/libtcc.dll.a DESTINATION libtcc RENAME libtcc.a) |
| 129 | add_custom_command(OUTPUT libtcc1.a COMMAND ${XAR} libtcc1.a ${LIBTCC1_OBJECTS} DEPENDS ${LIBTCC1_OBJECTS} ${XDEPENDS}) | 259 | install(FILES libtcc.h DESTINATION libtcc) |
| 130 | add_custom_target(libtcc1 ALL DEPENDS libtcc1.a) | 260 | else() |
| | 261 | install(FILES libtcc.h DESTINATION include) |
| | 262 | install(DIRECTORY include/ DESTINATION lib/tcc/include) |
| | 263 | install(DIRECTORY win32/include/ DESTINATION lib/tcc/win32/include) |
| | 264 | install(DIRECTORY include/ DESTINATION lib/tcc/win32/include) |
| 131 | endif() | 265 | endif() |
| 132 | | 266 | |
| 133 | add_subdirectory(tests) | | |