Refactored CMakeLists.txt.

This commit is contained in:
kobalicekp
2014-02-02 20:44:47 +01:00
parent 483c21db2d
commit 10480cada5

View File

@@ -62,35 +62,45 @@ Include_Directories(${ASMJIT_SRC_DIR})
Set(ASMJIT_DEPS) Set(ASMJIT_DEPS)
Set(ASMJIT_LFLAGS) Set(ASMJIT_LFLAGS)
Set(ASMJIT_CDEFS)
Set(ASMJIT_CDEFS_DBG ASMJIT_DEBUG)
Set(ASMJIT_CDEFS_REL ASMJIT_RELEASE)
Set(ASMJIT_CFLAGS) Set(ASMJIT_CFLAGS)
Set(ASMJIT_CFLAGS_DBG) Set(ASMJIT_CFLAGS_DBG)
Set(ASMJIT_CFLAGS_REL) Set(ASMJIT_CFLAGS_REL)
# MSVC.
If(MSVC) If(MSVC)
Message("-- Using MSVC")
Set(ASMJIT_LFLAGS "/OPT:REF /OPT:ICF") Set(ASMJIT_LFLAGS "/OPT:REF /OPT:ICF")
Set(ASMJIT_CFLAGS /GF) Set(ASMJIT_CFLAGS /GF)
Set(ASMJIT_CFLAGS_DBG /GS /GR-) Set(ASMJIT_CFLAGS_DBG /DASMJIT_DEBUG /GS /GR-)
Set(ASMJIT_CFLAGS_REL /Oi /Oy /GS- /GR-) Set(ASMJIT_CFLAGS_REL /DASMJIT_RELEASE /Oi /Oy /GS- /GR-)
# Use Unicode by default on Windows target.
If(WIN32)
List(APPEND ASMJIT_CFLAGS /D_UNICODE)
EndIf()
EndIf() EndIf()
If(CMAKE_COMPILER_IS_GNUCXX) # GCC.
Set(ASMJIT_CFLAGS -fno-exceptions) If(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
Set(ASMJIT_CFLAGS_DBG -O0 Message("-- Using GCC")
Set(ASMJIT_CFLAGS
-fno-exceptions)
Set(ASMJIT_CFLAGS_DBG -DASMJIT_DEBUG -O0
-fno-inline-functions) -fno-inline-functions)
Set(ASMJIT_CFLAGS_REL -O2 Set(ASMJIT_CFLAGS_REL -DASMJIT_RELEASE -O2
-finline-functions -finline-functions
-fomit-frame-pointer -fomit-frame-pointer
-fmerge-all-constants -fmerge-all-constants
-fno-keep-static-consts) -fno-keep-static-consts)
# Use Unicode by default on Windows target.
If(WIN32)
List(APPEND ASMJIT_CFLAGS -D_UNICODE)
EndIf()
EndIf() EndIf()
If(WIN32) # Dependencies - Base.
List(APPEND ASMJIT_CDEFS _UNICODE) If(NOT WIN32)
Else()
List(APPEND ASMJIT_DEPS pthread) List(APPEND ASMJIT_DEPS pthread)
EndIf() EndIf()
@@ -101,61 +111,58 @@ Set(ASMJIT_CFLAGS_REL ${ASMJIT_CFLAGS} ${ASMJIT_CFLAGS_REL})
# [AsmJit - Macros] # [AsmJit - Macros]
# ============================================================================= # =============================================================================
Macro(AsmJit_AddSource DST BASE_PATH) Macro(AsmJit_AddSource in_dst in_path)
Set(__list "") Set(__list "")
Set(__path "${ASMJIT_SRC_DIR}/${BASE_PATH}") Set(__path "${ASMJIT_SRC_DIR}/${in_path}")
ForEach(__name ${ARGN}) ForEach(__name ${ARGN})
Set(__file "${__path}/${__name}") Set(__file "${__path}/${__name}")
Set(__cflags ${ASMJIT_CFLAGS}) Set(__cflags ${ASMJIT_CFLAGS})
If(__name MATCHES "\\.cpp|\\.h") If(__name MATCHES "\\.cpp|\\.h")
If(${__cflags}) If("${__cflags}")
Set_Source_Files_Properties(${__name} PROPERTIES COMPILE_FLAGS ${__cflags}) Set_Source_Files_Properties(${__name} PROPERTIES COMPILE_FLAGS ${__cflags})
EndIf() EndIf()
List(APPEND __list ${__file}) List(APPEND __list ${__file})
EndIf() EndIf()
EndForEach() EndForEach()
List(APPEND "${DST}" ${__list}) List(APPEND "${in_dst}" ${__list})
Source_Group(${BASE_PATH} FILES ${__list}) Source_Group(${in_path} FILES ${__list})
EndMacro() EndMacro()
Macro(AsmJit_AddLibrary NAME SRC DEPS CDEFS_DBG CDEFS_REL CFLAGS_DBG CFLAGS_REL) Macro(AsmJit_AddLibrary in_name in_src in_deps in_cflags in_cflags_dbg in_cflags_rel)
If(NOT ASMJIT_STATIC) If(NOT ASMJIT_STATIC)
Set(__type "SHARED") Set(__type "SHARED")
Else() Else()
Set(__type "STATIC") Set(__type "STATIC")
EndIf() EndIf()
Add_Library(${NAME} ${__type} ${SRC}) Add_Library(${in_name} ${__type} ${in_src})
# Dependencies. # Dependencies.
Target_Link_Libraries(${NAME} ${DEPS}) Target_Link_Libraries(${in_name} ${in_deps})
# Compiler Flags. # Compiler Flags.
If(${CMAKE_BUILD_TYPE}) If(${CMAKE_BUILD_TYPE})
If(${CMAKE_BUILD_TYPE} MATCHES "Debug") If(${CMAKE_BUILD_TYPE} MATCHES "Debug")
Set_Target_Properties(${NAME} PROPERTIES COMPILE_DEFINITIONS ${ASMJIT_CDEFS_DBG}) Set_Target_Properties(${in_name} PROPERTIES COMPILE_FLAGS ${in_cflags} ${in_cflags_dbg})
Set_Target_Properties(${NAME} PROPERTIES COMPILE_FLAGS ${ASMJIT_CFLAGS_DBG})
Else() Else()
Set_Target_Properties(${NAME} PROPERTIES COMPILE_DEFINITIONS ${ASMJIT_CDEFS_REL}) Set_Target_Properties(${in_name} PROPERTIES COMPILE_FLAGS ${in_cflags} ${in_cflags_rel})
Set_Target_Properties(${NAME} PROPERTIES COMPILE_FLAGS ${ASMJIT_CFLAGS_REL})
EndIf() EndIf()
Else() Else()
Target_Compile_Definitions(${NAME} PUBLIC Target_Compile_Options(${in_name} PUBLIC
$<$<CONFIG:Debug>:${CDEFS_DBG}>$<$<NOT:$<CONFIG:Debug>>:${CDEFS_REL}>) ${in_cflags}
$<$<CONFIG:Debug>:${in_cflags_dbg}>
Target_Compile_Options(${NAME} PUBLIC $<$<NOT:$<CONFIG:Debug>>:${in_cflags_rel}>)
$<$<CONFIG:Debug>:${CFLAGS_DBG}>$<$<NOT:$<CONFIG:Debug>>:${CFLAGS_REL}>)
EndIf() EndIf()
# Linker Flags. # Linker Flags.
Set_Target_Properties(${NAME} PROPERTIES LINK_FLAGS "${ASMJIT_LFLAGS}") Set_Target_Properties(${in_name} PROPERTIES LINK_FLAGS "${ASMJIT_LFLAGS}")
# Install Instructions. # Install Instructions.
If(NOT ASMJIT_STATIC) If(NOT ASMJIT_STATIC)
Install(TARGETS ${NAME} DESTINATION lib) Install(TARGETS ${in_name} DESTINATION lib)
EndIf() EndIf()
Unset(__type) Unset(__type)
@@ -249,8 +256,8 @@ If(NOT ASMJIT_STATIC)
Get_Filename_Component(path ${i} PATH) Get_Filename_Component(path ${i} PATH)
Get_Filename_Component(name ${i} NAME) Get_Filename_Component(name ${i} NAME)
String(REGEX REPLACE "^${ASMJIT_SRC_DIR}/" "" targetpath "${path}") String(REGEX REPLACE "^${ASMJIT_SRC_DIR}/" "" targetpath "${path}")
If(${name} MATCHES ".h$") If(name MATCHES ".h$")
If(NOT "${name}" MATCHES "_p.h$") If(NOT name MATCHES "_p.h$")
Install(FILES ${i} DESTINATION "include/${targetpath}") Install(FILES ${i} DESTINATION "include/${targetpath}")
EndIf() EndIf()
EndIf() EndIf()
@@ -264,8 +271,7 @@ EndIf()
AsmJit_AddLibrary(asmjit AsmJit_AddLibrary(asmjit
"${ASMJIT_SRC}" "${ASMJIT_SRC}"
"${ASMJIT_DEPS}" "${ASMJIT_DEPS}"
"${ASMJIT_CDEFS_DBG}" "${ASMJIT_CFLAGS}"
"${ASMJIT_CDEFS_REL}"
"${ASMJIT_CFLAGS_DBG}" "${ASMJIT_CFLAGS_DBG}"
"${ASMJIT_CFLAGS_REL}" "${ASMJIT_CFLAGS_REL}"
) )