Skip to content

Commit 2271bed

Browse files
committed
Find appropriate Debug/Release versions of LuaJIT
1 parent 9bdbbf2 commit 2271bed

2 files changed

Lines changed: 133 additions & 43 deletions

File tree

CMakeLists.txt

Lines changed: 45 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ find_package(unofficial-angle CONFIG REQUIRED)
102102
find_package(CURL CONFIG REQUIRED)
103103
find_package(fmt CONFIG REQUIRED)
104104
find_package(glfw3 CONFIG REQUIRED)
105-
find_package(LuaJit REQUIRED)
105+
find_package(LuaJIT REQUIRED)
106106
find_package(re2 CONFIG REQUIRED)
107107
find_package(unofficial-sodium CONFIG REQUIRED)
108108
find_package(Threads REQUIRED)
@@ -148,7 +148,6 @@ target_include_directories(SimpleGraphic
148148
${CMAKE_CURRENT_SOURCE_DIR}/dep/glad/include
149149
${CMAKE_CURRENT_SOURCE_DIR}/dep/stb
150150
${JPEG_INCLUDE_DIR}
151-
${LUAJIT_INCLUDE_DIR}
152151
)
153152

154153
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
@@ -182,7 +181,7 @@ target_link_libraries(SimpleGraphic
182181
fmt::fmt
183182
glfw
184183
imgui
185-
${LUAJIT_LIBRARIES}
184+
LuaJIT::LuaJIT
186185
re2::re2
187186
unofficial-sodium::sodium
188187
Threads::Threads
@@ -193,14 +192,47 @@ install(FILES $<TARGET_RUNTIME_DLLS:SimpleGraphic> DESTINATION ".")
193192
install(TARGETS SimpleGraphic RUNTIME DESTINATION ".")
194193

195194
if (WIN32)
196-
if (DEFINED ENV{DEPS_DIR})
197-
set(DEPS_BIN_DIR ${DEPS_DIR}/bin)
198-
else ()
199-
set(DEPS_BIN_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin")
200-
endif ()
201-
find_file(LUAJIT_DLL NAMES "lua51.dll" PATHS "${DEPS_BIN_DIR}" REQUIRED)
202-
find_file(ZLIB_DLL NAMES "zlib1.dll" PATHS "${DEPS_BIN_DIR}" REQUIRED)
203-
install(FILES ${LUAJIT_DLL} ${ZLIB_DLL} DESTINATION ".")
195+
set(DEPS_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}")
196+
function(Honk result_var item)
197+
message("Considering ${item}...")
198+
set(${result_var} FALSE PARENT_SCOPE)
199+
endfunction()
200+
201+
find_file(LuaJIT_DLL_DEBUG
202+
NAMES "lua51.dll"
203+
PATHS "${DEPS_DIR}"
204+
PATH_SUFFIXES "debug/bin"
205+
REQUIRED
206+
NO_DEFAULT_PATH
207+
)
208+
find_file(LuaJIT_DLL_RELEASE
209+
NAMES "lua51.dll"
210+
PATHS "${DEPS_DIR}"
211+
PATH_SUFFIXES "bin"
212+
REQUIRED
213+
NO_DEFAULT_PATH
214+
)
215+
find_file(ZLIB_DLL_DEBUG
216+
NAMES "zlibd1.dll"
217+
PATHS "${DEPS_DIR}"
218+
PATH_SUFFIXES "debug/bin"
219+
REQUIRED
220+
NO_DEFAULT_PATH
221+
)
222+
find_file(ZLIB_DLL_RELEASE
223+
NAMES "zlib1.dll"
224+
PATHS "${DEPS_DIR}"
225+
PATH_SUFFIXES "bin"
226+
REQUIRED
227+
NO_DEFAULT_PATH
228+
)
229+
230+
install(FILES ${LuaJIT_DLL_DEBUG} ${ZLIB_DLL_DEBUG} DESTINATION "."
231+
CONFIGURATIONS Debug
232+
)
233+
install(FILES ${LuaJIT_DLL_RELEASE} ${ZLIB_DLL_RELEASE} DESTINATION "."
234+
CONFIGURATIONS Release MinSizeRel RelWithDebInfo
235+
)
204236
endif ()
205237

206238

@@ -213,13 +245,12 @@ add_library(lcurl SHARED ${LCURL_SOURCES})
213245
target_include_directories(lcurl
214246
PRIVATE
215247
${LCURL_SOURCE_DIR}/src
216-
${LUAJIT_INCLUDE_DIR}
217248
)
218249

219250
target_link_libraries(lcurl
220251
PRIVATE
221252
CURL::libcurl
222-
${LUAJIT_LIBRARIES}
253+
LuaJIT::LuaJIT
223254
)
224255

225256
install(TARGETS lcurl RUNTIME DESTINATION ".")
@@ -232,12 +263,11 @@ add_library(lzip SHARED libs/LZip/lzip.cpp)
232263

233264
target_include_directories(lzip
234265
PRIVATE
235-
${LUAJIT_INCLUDE_DIR}
236266
)
237267

238268
target_link_libraries(lzip
239269
PRIVATE
240-
${LUAJIT_LIBRARIES}
270+
LuaJIT::LuaJIT
241271
ZLIB::ZLIB
242272
)
243273

cmake/FindLuaJit.cmake

Lines changed: 88 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,98 @@
11
# - Try to find luajit
22
# Once done this will define
3-
# LUAJIT_FOUND - System has luajit
4-
# LUAJIT_INCLUDE_DIRS - The luajit include directories
5-
# LUAJIT_LIBRARIES - The libraries needed to use luajit
3+
# LuaJIT_FOUND - System has luajit
4+
# LuaJIT_INCLUDE_DIRS - The luajit include directories
5+
# LuaJIT_LIBRARIES - The libraries needed to use luajit
66

7-
find_package(PkgConfig)
8-
if (PKG_CONFIG_FOUND)
9-
pkg_check_modules(PC_LUAJIT QUIET luajit)
10-
endif()
7+
if (DEFINED VCPKG_INSTALLED_DIR AND DEFINED VCPKG_TARGET_TRIPLET)
8+
set(LuaJIT_SEARCH_ROOT ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET})
119

12-
set(LUAJIT_DEFINITIONS ${PC_LUAJIT_CFLAGS_OTHER})
10+
find_path(LuaJIT_INCLUDE_DIR luajit.h
11+
PATHS ${LuaJIT_SEARCH_ROOT}/include
12+
PATH_SUFFIXES luajit
13+
NO_DEFAULT_PATH)
1314

14-
find_path(LUAJIT_INCLUDE_DIR luajit.h
15-
PATHS ${PC_LUAJIT_INCLUDEDIR} ${PC_LUAJIT_INCLUDE_DIRS}
16-
PATH_SUFFIXES luajit-2.0 luajit-2.1)
15+
find_library(LuaJIT_LIBRARY_RELEASE NAMES lua51
16+
PATHS ${LuaJIT_SEARCH_ROOT}
17+
PATH_SUFFIXES lib
18+
NO_DEFAULT_PATH)
1719

18-
if(MSVC)
19-
list(APPEND LUAJIT_NAMES lua51)
20-
elseif(MINGW)
21-
list(APPEND LUAJIT_NAMES libluajit libluajit-5.1)
22-
else()
23-
list(APPEND LUAJIT_NAMES luajit-5.1)
24-
endif()
20+
find_library(LuaJIT_LIBRARY_DEBUG NAMES lua51
21+
PATHS ${LuaJIT_SEARCH_ROOT}
22+
PATH_SUFFIXES debug/lib
23+
NO_DEFAULT_PATH)
24+
25+
include(SelectLibraryConfigurations)
26+
select_library_configurations(LuaJIT)
27+
28+
find_package_handle_standard_args(LuaJIT
29+
REQUIRED_VARS LuaJIT_LIBRARY LuaJIT_INCLUDE_DIR)
30+
mark_as_advanced(LuaJIT_INCLUDE_DIR LuaJIT_LIBRARY)
31+
32+
if(LuaJIT_FOUND)
33+
set(LuaJIT_INCLUDE_DIRS ${LuaJIT_INCLUDE_DIR})
34+
35+
if(NOT LuaJIT_LIBRARIES)
36+
set(LuaJIT_LIBRARIES ${LuaJIT_LIBRARY})
37+
endif()
38+
39+
if(NOT TARGET LuaJIT::LuaJIT)
40+
add_library(LuaJIT::LuaJIT UNKNOWN IMPORTED)
41+
set_target_properties(LuaJIT::LuaJIT PROPERTIES
42+
INTERFACE_INCLUDE_DIRECTORIES "${LuaJIT_INCLUDE_DIRS}")
2543

26-
find_library(LUAJIT_LIBRARY NAMES ${LUAJIT_NAMES}
27-
PATHS ${PC_LUAJIT_LIBDIR} ${PC_LUAJIT_LIBRARY_DIRS})
44+
if(LuaJIT_LIBRARY_RELEASE)
45+
set_property(TARGET LuaJIT::LuaJIT APPEND PROPERTY
46+
IMPORTED_CONFIGURATIONS RELEASE)
47+
set_target_properties(LuaJIT::LuaJIT PROPERTIES
48+
IMPORTED_LOCATION_RELEASE "${LuaJIT_LIBRARY_RELEASE}")
49+
endif()
2850

29-
set(LUAJIT_LIBRARIES ${LUAJIT_LIBRARY})
30-
set(LUAJIT_INCLUDE_DIRS ${LUAJIT_INCLUDE_DIR})
51+
if(LuaJIT_LIBRARY_DEBUG)
52+
set_property(TARGET LuaJIT::LuaJIT APPEND PROPERTY
53+
IMPORTED_CONFIGURATIONS DEBUG)
54+
set_target_properties(LuaJIT::LuaJIT PROPERTIES
55+
IMPORTED_LOCATION_DEBUG "${LuaJIT_LIBRARY_DEBUG}")
56+
endif()
3157

32-
include(FindPackageHandleStandardArgs)
33-
# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE
34-
# if all listed variables are TRUE
35-
find_package_handle_standard_args(LuaJit DEFAULT_MSG
36-
LUAJIT_LIBRARY LUAJIT_INCLUDE_DIR)
58+
if(NOT LuaJIT_LIBRARY_RELEASE AND NOT LuaJIT_LIBRARY_DEBUG)
59+
set_property(TARGET LuaJIT::LuaJIT APPEND PROPERTY
60+
IMPORTED_LOCATION "${LuaJIT_LIBRARY}")
61+
endif()
62+
endif()
63+
endif()
64+
unset(LuaJIT_SEARCH_ROOT)
65+
else ()
66+
find_package(PkgConfig)
67+
if (PKG_CONFIG_FOUND)
68+
pkg_check_modules(PC_LUAJIT QUIET luajit)
69+
endif()
3770

38-
mark_as_advanced(LUAJIT_INCLUDE_DIR LUAJIT_LIBRARY)
71+
set(LUAJIT_DEFINITIONS ${PC_LUAJIT_CFLAGS_OTHER})
72+
73+
find_path(LUAJIT_INCLUDE_DIR luajit.h
74+
PATHS ${PC_LUAJIT_INCLUDEDIR} ${PC_LUAJIT_INCLUDE_DIRS}
75+
PATH_SUFFIXES luajit-2.0 luajit-2.1)
76+
77+
if(MSVC)
78+
list(APPEND LUAJIT_NAMES lua51)
79+
elseif(MINGW)
80+
list(APPEND LUAJIT_NAMES libluajit libluajit-5.1)
81+
else()
82+
list(APPEND LUAJIT_NAMES luajit-5.1)
83+
endif()
84+
85+
find_library(LUAJIT_LIBRARY NAMES ${LUAJIT_NAMES}
86+
PATHS ${PC_LUAJIT_LIBDIR} ${PC_LUAJIT_LIBRARY_DIRS})
87+
88+
set(LUAJIT_LIBRARIES ${LUAJIT_LIBRARY})
89+
set(LUAJIT_INCLUDE_DIRS ${LUAJIT_INCLUDE_DIR})
90+
91+
include(FindPackageHandleStandardArgs)
92+
# handle the QUIETLY and REQUIRED arguments and set LUAJIT_FOUND to TRUE
93+
# if all listed variables are TRUE
94+
find_package_handle_standard_args(LuaJit DEFAULT_MSG
95+
LUAJIT_LIBRARY LUAJIT_INCLUDE_DIR)
96+
97+
mark_as_advanced(LUAJIT_INCLUDE_DIR LUAJIT_LIBRARY)
98+
endif()

0 commit comments

Comments
 (0)