blob: 654c2a2ff7d96096919fd833c2cbcf1d484a8d77 [file] [log] [blame]
Jon Ashburnd38bfb12014-10-14 19:15:22 -06001include_directories(
2 ${CMAKE_CURRENT_SOURCE_DIR}
Chia-I Wuf46b81a2015-01-04 11:12:47 +08003 ${CMAKE_CURRENT_BINARY_DIR}
Jon Ashburnd38bfb12014-10-14 19:15:22 -06004)
Chia-I Wu0c105342014-08-03 09:31:26 +08005
David Pinedo0c083652015-07-09 12:44:38 -06006if (WIN32)
David Pinedo4bb0d302015-09-08 11:07:46 -06007 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/vulkan-${MAJOR}.def
Mun, Gwan-gyeong4f364962016-02-22 20:27:31 +09008 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 Pinedo0c083652015-07-09 12:44:38 -06009 DEPENDS ${PROJECT_SOURCE_DIR}/loader/vk-loader-generate.py ${PROJECT_SOURCE_DIR}/vulkan.py)
David Pinedo0c083652015-07-09 12:44:38 -060010endif()
Tony Barbour1d825c72015-06-18 16:29:32 -060011
Courtney Goeltzenleuchter64ca9232015-02-10 18:40:14 -070012# DEBUG enables runtime loader ICD verification
13set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
14set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
Mark Lobodzinski391bb6d2015-01-09 15:12:03 -060015
Jon Ashburn761de4b2016-03-11 10:58:56 -070016set(NORMAL_LOADER_SRCS
Jon Ashburn2077e382015-06-29 11:25:34 -060017 loader.c
18 loader.h
Tobin Ehlisb835d1b2015-07-03 10:34:49 -060019 vk_loader_platform.h
Jon Ashburn2077e382015-06-29 11:25:34 -060020 trampoline.c
Ian Elliott954fa342015-10-30 15:28:23 -060021 wsi.c
22 wsi.h
Jon Ashburn2077e382015-06-29 11:25:34 -060023 debug_report.c
24 debug_report.h
25 table_ops.h
26 gpa_helper.h
27 cJSON.c
28 cJSON.h
Jon Ashburnfc1031e2015-11-17 15:31:02 -070029 murmurhash.c
30 murmurhash.h
Jon Ashburn2077e382015-06-29 11:25:34 -060031)
Ian Elliott19628802015-02-04 12:06:46 -070032
Jon Ashburn761de4b2016-03-11 10:58:56 -070033set (OPT_LOADER_SRCS
34 dev_ext_trampoline.c
35)
36
37set (LOADER_SRCS ${NORMAL_LOADER_SRCS} ${OPT_LOADER_SRCS})
Ian Elliottd3ef02f2015-07-06 14:36:13 -060038
Jon Ashburn2077e382015-06-29 11:25:34 -060039if (WIN32)
Jon Ashburnce816b62016-01-12 11:33:33 -070040 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_CRT_SECURE_NO_WARNINGS")
Jon Ashburn761de4b2016-03-11 10:58:56 -070041 # Build dev_ext_trampoline.c with -O2 to allow tail-call optimization.
42 # Build other C files with normal options
43 # setup two Cmake targets (loader-norm and loader-opt) for the different compilation flags
44 separate_arguments(LOCAL_C_FLAGS_DBG WINDOWS_COMMAND ${CMAKE_C_FLAGS_DEBUG})
45 set(CMAKE_C_FLAGS_DEBUG " ")
46 separate_arguments(LOCAL_C_FLAGS_REL WINDOWS_COMMAND ${CMAKE_C_FLAGS_RELEASE})
Jon Ashburn2077e382015-06-29 11:25:34 -060047
Jon Ashburn761de4b2016-03-11 10:58:56 -070048 add_library(loader-norm OBJECT ${NORMAL_LOADER_SRCS} dirent_on_windows.c)
49 target_compile_options(loader-norm PUBLIC "$<$<CONFIG:DEBUG>:${LOCAL_C_FLAGS_DBG}>")
50 add_library(loader-opt OBJECT ${OPT_LOADER_SRCS})
51 target_compile_options(loader-opt PUBLIC "$<$<CONFIG:DEBUG>:${LOCAL_C_FLAGS_REL}>")
52 add_library(vulkan-${MAJOR} SHARED $<TARGET_OBJECTS:loader-opt> $<TARGET_OBJECTS:loader-norm> ${CMAKE_CURRENT_BINARY_DIR}/vulkan-${MAJOR}.def)
David Pinedo4bb0d302015-09-08 11:07:46 -060053 set_target_properties(vulkan-${MAJOR} PROPERTIES LINK_FLAGS "/DEF:${CMAKE_CURRENT_BINARY_DIR}/vulkan-${MAJOR}.def")
Jon Ashburn761de4b2016-03-11 10:58:56 -070054 add_library(VKstatic.${MAJOR} STATIC $<TARGET_OBJECTS:loader-opt> $<TARGET_OBJECTS:loader-norm>)
David Pinedo0c083652015-07-09 12:44:38 -060055 set_target_properties(VKstatic.${MAJOR} PROPERTIES OUTPUT_NAME VKstatic.${MAJOR})
David Pinedo4bb0d302015-09-08 11:07:46 -060056 target_link_libraries(vulkan-${MAJOR} shlwapi)
Jon Ashburnbb7e35b2016-02-12 16:39:20 -070057else()
Jon Ashburnce816b62016-01-12 11:33:33 -070058 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith")
Ian Elliott19628802015-02-04 12:06:46 -070059
Jeremy Hayes22641442016-02-08 12:14:51 -070060 add_library(vulkan SHARED ${LOADER_SRCS})
Tony Barbourd83f06c2016-03-08 14:50:03 -070061 set_target_properties(vulkan PROPERTIES SOVERSION "1" VERSION "1.0.5")
Jeremy Hayes22641442016-02-08 12:14:51 -070062 target_link_libraries(vulkan -ldl -lpthread -lm)
Ian Elliott2d4ab1e2015-01-13 17:52:38 -070063endif()