Jon Ashburn | d38bfb1 | 2014-10-14 19:15:22 -0600 | [diff] [blame] | 1 | include_directories( |
| 2 | ${CMAKE_CURRENT_SOURCE_DIR} |
Chia-I Wu | f46b81a | 2015-01-04 11:12:47 +0800 | [diff] [blame] | 3 | ${CMAKE_CURRENT_BINARY_DIR} |
Jon Ashburn | d38bfb1 | 2014-10-14 19:15:22 -0600 | [diff] [blame] | 4 | ) |
Chia-I Wu | 0c10534 | 2014-08-03 09:31:26 +0800 | [diff] [blame] | 5 | |
David Pinedo | 0c08365 | 2015-07-09 12:44:38 -0600 | [diff] [blame] | 6 | if (WIN32) |
David Pinedo | 4bb0d30 | 2015-09-08 11:07:46 -0600 | [diff] [blame] | 7 | add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vulkan-${MAJOR}.def |
Mun, Gwan-gyeong | 4f36496 | 2016-02-22 20:27:31 +0900 | [diff] [blame] | 8 | COMMAND ${PYTHON_CMD} ${PROJECT_SOURCE_DIR}/loader/vk-loader-generate.py ${DisplayServer} win-def-file vulkan-${MAJOR}.dll all > ${CMAKE_CURRENT_BINARY_DIR}/vulkan-${MAJOR}.def |
David Pinedo | 0c08365 | 2015-07-09 12:44:38 -0600 | [diff] [blame] | 9 | DEPENDS ${PROJECT_SOURCE_DIR}/loader/vk-loader-generate.py ${PROJECT_SOURCE_DIR}/vulkan.py) |
David Pinedo | 0c08365 | 2015-07-09 12:44:38 -0600 | [diff] [blame] | 10 | endif() |
Tony Barbour | 1d825c7 | 2015-06-18 16:29:32 -0600 | [diff] [blame] | 11 | |
Courtney Goeltzenleuchter | 64ca923 | 2015-02-10 18:40:14 -0700 | [diff] [blame] | 12 | # DEBUG enables runtime loader ICD verification |
| 13 | set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG") |
| 14 | set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG") |
Mark Lobodzinski | 391bb6d | 2015-01-09 15:12:03 -0600 | [diff] [blame] | 15 | |
Jon Ashburn | 761de4b | 2016-03-11 10:58:56 -0700 | [diff] [blame] | 16 | set(NORMAL_LOADER_SRCS |
Jon Ashburn | 2077e38 | 2015-06-29 11:25:34 -0600 | [diff] [blame] | 17 | loader.c |
| 18 | loader.h |
Tobin Ehlis | b835d1b | 2015-07-03 10:34:49 -0600 | [diff] [blame] | 19 | vk_loader_platform.h |
Mark Lobodzinski | b87f902 | 2016-05-24 16:04:56 -0600 | [diff] [blame] | 20 | vk_loader_layer.h |
Jon Ashburn | 2077e38 | 2015-06-29 11:25:34 -0600 | [diff] [blame] | 21 | trampoline.c |
Ian Elliott | 954fa34 | 2015-10-30 15:28:23 -0600 | [diff] [blame] | 22 | wsi.c |
| 23 | wsi.h |
Mark Lobodzinski | 317574e | 2016-08-29 14:21:14 -0600 | [diff] [blame] | 24 | extensions.c |
| 25 | extensions.h |
Jon Ashburn | 2077e38 | 2015-06-29 11:25:34 -0600 | [diff] [blame] | 26 | debug_report.c |
| 27 | debug_report.h |
| 28 | table_ops.h |
| 29 | gpa_helper.h |
| 30 | cJSON.c |
| 31 | cJSON.h |
Jon Ashburn | fc1031e | 2015-11-17 15:31:02 -0700 | [diff] [blame] | 32 | murmurhash.c |
| 33 | murmurhash.h |
Jon Ashburn | 2077e38 | 2015-06-29 11:25:34 -0600 | [diff] [blame] | 34 | ) |
Ian Elliott | 1962880 | 2015-02-04 12:06:46 -0700 | [diff] [blame] | 35 | |
Jon Ashburn | 761de4b | 2016-03-11 10:58:56 -0700 | [diff] [blame] | 36 | set (OPT_LOADER_SRCS |
| 37 | dev_ext_trampoline.c |
| 38 | ) |
| 39 | |
| 40 | set (LOADER_SRCS ${NORMAL_LOADER_SRCS} ${OPT_LOADER_SRCS}) |
Ian Elliott | d3ef02f | 2015-07-06 14:36:13 -0600 | [diff] [blame] | 41 | |
Jon Ashburn | 2077e38 | 2015-06-29 11:25:34 -0600 | [diff] [blame] | 42 | if (WIN32) |
Dustin Graves | abe8b47 | 2016-05-31 16:32:29 -0600 | [diff] [blame] | 43 | # Use static MSVCRT libraries |
| 44 | foreach(configuration in CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO |
| 45 | CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_RELWITHDEBINFO) |
| 46 | if(${configuration} MATCHES "/MD") |
| 47 | string(REGEX REPLACE "/MD" "/MT" ${configuration} "${${configuration}}") |
| 48 | endif() |
| 49 | endforeach() |
| 50 | |
Jon Ashburn | ce816b6 | 2016-01-12 11:33:33 -0700 | [diff] [blame] | 51 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS") |
Jon Ashburn | 761de4b | 2016-03-11 10:58:56 -0700 | [diff] [blame] | 52 | # Build dev_ext_trampoline.c with -O2 to allow tail-call optimization. |
| 53 | # Build other C files with normal options |
| 54 | # setup two Cmake targets (loader-norm and loader-opt) for the different compilation flags |
| 55 | separate_arguments(LOCAL_C_FLAGS_DBG WINDOWS_COMMAND ${CMAKE_C_FLAGS_DEBUG}) |
| 56 | set(CMAKE_C_FLAGS_DEBUG " ") |
| 57 | separate_arguments(LOCAL_C_FLAGS_REL WINDOWS_COMMAND ${CMAKE_C_FLAGS_RELEASE}) |
Jon Ashburn | 2077e38 | 2015-06-29 11:25:34 -0600 | [diff] [blame] | 58 | |
Jon Ashburn | 761de4b | 2016-03-11 10:58:56 -0700 | [diff] [blame] | 59 | add_library(loader-norm OBJECT ${NORMAL_LOADER_SRCS} dirent_on_windows.c) |
| 60 | target_compile_options(loader-norm PUBLIC "$<$<CONFIG:DEBUG>:${LOCAL_C_FLAGS_DBG}>") |
| 61 | add_library(loader-opt OBJECT ${OPT_LOADER_SRCS}) |
| 62 | target_compile_options(loader-opt PUBLIC "$<$<CONFIG:DEBUG>:${LOCAL_C_FLAGS_REL}>") |
David Pinedo | 657bd74 | 2016-05-05 13:52:37 -0600 | [diff] [blame] | 63 | add_library(vulkan-${MAJOR} SHARED $<TARGET_OBJECTS:loader-opt> $<TARGET_OBJECTS:loader-norm> ${CMAKE_CURRENT_BINARY_DIR}/vulkan-${MAJOR}.def ${CMAKE_CURRENT_SOURCE_DIR}/loader.rc) |
Jon Ashburn | 761de4b | 2016-03-11 10:58:56 -0700 | [diff] [blame] | 64 | add_library(VKstatic.${MAJOR} STATIC $<TARGET_OBJECTS:loader-opt> $<TARGET_OBJECTS:loader-norm>) |
David Pinedo | 0c08365 | 2015-07-09 12:44:38 -0600 | [diff] [blame] | 65 | set_target_properties(VKstatic.${MAJOR} PROPERTIES OUTPUT_NAME VKstatic.${MAJOR}) |
David Pinedo | 4bb0d30 | 2015-09-08 11:07:46 -0600 | [diff] [blame] | 66 | target_link_libraries(vulkan-${MAJOR} shlwapi) |
Nekotekina | 9244350 | 2016-07-08 15:49:13 +0300 | [diff] [blame] | 67 | target_link_libraries(VKstatic.${MAJOR} shlwapi) |
Mark Mueller | b33052d | 2016-04-18 11:04:36 -0600 | [diff] [blame] | 68 | if (CMAKE_GENERATOR MATCHES "^Visual Studio.*") |
| 69 | file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/vulkan-${MAJOR}.dll COPY_SRC_PATH) |
| 70 | file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/../demos/$<CONFIGURATION>/ COPY_DST_PATH) |
| 71 | file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/../tests/$<CONFIGURATION>/ COPY_DST_TEST_PATH) |
| 72 | else() |
| 73 | file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/vulkan-${MAJOR}.dll COPY_SRC_PATH) |
| 74 | file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/../demos/ COPY_DST_PATH) |
| 75 | file(TO_NATIVE_PATH ${CMAKE_CURRENT_BINARY_DIR}/../tests/ COPY_DST_TEST_PATH) |
| 76 | endif() |
Jon Ashburn | fd679d8 | 2016-03-25 15:57:50 -0600 | [diff] [blame] | 77 | add_custom_command(TARGET vulkan-${MAJOR} POST_BUILD |
Jon Ashburn | f8b3c89 | 2016-03-28 14:43:53 -0600 | [diff] [blame] | 78 | COMMAND xcopy /Y /I ${COPY_SRC_PATH} ${COPY_DST_PATH}) |
Jon Ashburn | fd679d8 | 2016-03-25 15:57:50 -0600 | [diff] [blame] | 79 | add_custom_command(TARGET vulkan-${MAJOR} POST_BUILD |
Jon Ashburn | f8b3c89 | 2016-03-28 14:43:53 -0600 | [diff] [blame] | 80 | COMMAND xcopy /Y /I ${COPY_SRC_PATH} ${COPY_DST_TEST_PATH}) |
Jon Ashburn | fd679d8 | 2016-03-25 15:57:50 -0600 | [diff] [blame] | 81 | |
Jon Ashburn | bb7e35b | 2016-02-12 16:39:20 -0700 | [diff] [blame] | 82 | else() |
Jon Ashburn | ce816b6 | 2016-01-12 11:33:33 -0700 | [diff] [blame] | 83 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith") |
Ian Elliott | 1962880 | 2015-02-04 12:06:46 -0700 | [diff] [blame] | 84 | |
Jeremy Hayes | 2264144 | 2016-02-08 12:14:51 -0700 | [diff] [blame] | 85 | add_library(vulkan SHARED ${LOADER_SRCS}) |
Mark Lobodzinski | 03d9caa | 2016-10-17 16:50:51 -0600 | [diff] [blame] | 86 | set_target_properties(vulkan PROPERTIES SOVERSION "1" VERSION "1.0.31") |
Jeremy Hayes | 2264144 | 2016-02-08 12:14:51 -0700 | [diff] [blame] | 87 | target_link_libraries(vulkan -ldl -lpthread -lm) |
Karl Schultz | e089d7d | 2016-09-30 13:32:16 -0600 | [diff] [blame] | 88 | install(TARGETS vulkan LIBRARY DESTINATION lib) |
Ian Elliott | 2d4ab1e | 2015-01-13 17:52:38 -0700 | [diff] [blame] | 89 | endif() |