aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/FindLpeg.cmake11
-rw-r--r--cmake/Util.cmake22
2 files changed, 19 insertions, 14 deletions
diff --git a/cmake/FindLpeg.cmake b/cmake/FindLpeg.cmake
index 3d0ff5929d..7657bdac9e 100644
--- a/cmake/FindLpeg.cmake
+++ b/cmake/FindLpeg.cmake
@@ -1,4 +1,13 @@
-find_library2(LPEG_LIBRARY NAMES lpeg_a lpeg liblpeg_a lpeg${CMAKE_SHARED_LIBRARY_SUFFIX} PATH_SUFFIXES lua/5.1)
+find_library2(LPEG_LIBRARY NAMES lpeg_a lpeg liblpeg_a lpeg.so lpeg${CMAKE_SHARED_LIBRARY_SUFFIX} PATH_SUFFIXES lua/5.1)
+if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND LPEG_LIBRARY MATCHES ".so$")
+ execute_process(
+ COMMAND otool -hv "${LPEG_LIBRARY}"
+ OUTPUT_VARIABLE LPEG_HEADER
+ )
+ if(LPEG_HEADER MATCHES ".* BUNDLE .*")
+ message(FATAL_ERROR "lpeg library found at ${LPEG_LIBRARY} but built as a bundle rather than a dylib, please rebuild with `-dynamiclib` rather than `-bundle`")
+ endif()
+endif()
find_package_handle_standard_args(Lpeg DEFAULT_MSG LPEG_LIBRARY)
mark_as_advanced(LPEG_LIBRARY)
diff --git a/cmake/Util.cmake b/cmake/Util.cmake
index f09de78668..8ca39e5f94 100644
--- a/cmake/Util.cmake
+++ b/cmake/Util.cmake
@@ -61,6 +61,7 @@ function(add_glob_target)
if(NOT ARG_COMMAND)
add_custom_target(${ARG_TARGET})
add_custom_command(TARGET ${ARG_TARGET}
+ POST_BUILD
COMMAND ${CMAKE_COMMAND} -E echo "${ARG_TARGET} SKIP: ${ARG_COMMAND} not found")
return()
endif()
@@ -175,8 +176,7 @@ function(add_target)
add_custom_target(${target} DEPENDS ${touch_file})
endfunction()
-# Set default build type to BUILD_TYPE. Also limit the list of allowable build
-# types to the ones defined in variable allowableBuildTypes.
+# Set default build type to BUILD_TYPE.
#
# The correct way to specify build type (for example Release) for
# single-configuration generators (Make and Ninja) is to run
@@ -193,28 +193,24 @@ endfunction()
# Passing CMAKE_BUILD_TYPE for multi-config generators will not only not be
# used, but also generate a warning for the user.
function(set_default_buildtype BUILD_TYPE)
- set(allowableBuildTypes Debug Release MinSizeRel RelWithDebInfo)
- if(NOT BUILD_TYPE IN_LIST allowableBuildTypes)
- message(FATAL_ERROR "Invalid build type: ${BUILD_TYPE}")
- endif()
+ set(defaultBuildTypes Debug Release MinSizeRel RelWithDebInfo)
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(isMultiConfig)
- # Multi-config generators use the first element in CMAKE_CONFIGURATION_TYPES as the default build type
- list(INSERT allowableBuildTypes 0 ${BUILD_TYPE})
- list(REMOVE_DUPLICATES allowableBuildTypes)
- set(CMAKE_CONFIGURATION_TYPES ${allowableBuildTypes} PARENT_SCOPE)
+ # Multi-config generators use the first element in
+ # CMAKE_CONFIGURATION_TYPES as the default build type
+ list(INSERT defaultBuildTypes 0 ${BUILD_TYPE})
+ list(REMOVE_DUPLICATES defaultBuildTypes)
+ set(CMAKE_CONFIGURATION_TYPES ${defaultBuildTypes} PARENT_SCOPE)
if(CMAKE_BUILD_TYPE)
message(WARNING "CMAKE_BUILD_TYPE specified which is ignored on \
multi-configuration generators. Defaulting to ${BUILD_TYPE} build type.")
endif()
else()
- set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${allowableBuildTypes}")
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${defaultBuildTypes}")
if(NOT CMAKE_BUILD_TYPE)
message(STATUS "CMAKE_BUILD_TYPE not specified, default is '${BUILD_TYPE}'")
set(CMAKE_BUILD_TYPE ${BUILD_TYPE} CACHE STRING "Choose the type of build" FORCE)
- elseif(NOT CMAKE_BUILD_TYPE IN_LIST allowableBuildTypes)
- message(FATAL_ERROR "Invalid build type: ${CMAKE_BUILD_TYPE}")
else()
message(STATUS "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
endif()