Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Squinty Applebottom
Jan 1, 2013

uG posted:

how dare you leave out excel

lol excel

what are you, an accounting grad?

Adbot
ADBOT LOVES YOU

uG
Apr 23, 2003

by Ralp
if a client hasn't forced you to work with excel at some point then i question your skillz

Nomnom Cookie
Aug 30, 2009



spongeh posted:

while simcity was a good game, the simulation engine wasn't written or running in javascript, whereas the entire unreal engine is running under js

do you mean the engine used in the game unreal, or ue3

actually either way its fkin reatrded

Nomnom Cookie
Aug 30, 2009



B-smooth posted:

what about cmake?

idk what about it. its not maven or autotools so thats 2 strikes already

spongeh
Mar 22, 2009

BREADAGRAM OF PROTECTION

Nomnom Cookie posted:

do you mean the engine used in the game unreal, or ue3

actually either way its fkin reatrded

no, ue3. http://www.unrealengine.com/html5/

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
# Detect LLVM and set various variable to link against the different component of LLVM
#
# NOTE: This is a modified version of the module originally found in the OpenGTL project
# at https://www.opengtl.org
#
# LLVM_BIN_DIR : directory with LLVM binaries
# LLVM_LIB_DIR : directory with LLVM library
# LLVM_INCLUDE_DIR : directory with LLVM include
#
# LLVM_COMPILE_FLAGS : compile flags needed to build a program using LLVM headers
# LLVM_LDFLAGS : ldflags needed to link
# LLVM_LIBS_CORE : ldflags needed to link against a LLVM core library
# LLVM_LIBS_JIT : ldflags needed to link against a LLVM JIT
# LLVM_LIBS_JIT_OBJECTS : objects you need to add to your source when using LLVM JIT

if(WIN32)
find_path(LLVM_INCLUDE_DIR NAMES llvm/LLVMContext.h)
message(STATUS "Found LLVM include directory: ${LLVM_INCLUDE_DIR}")
find_library(LLVM_SOMELIB NAMES LLVMCore)
GET_FILENAME_COMPONENT(LLVM_LIB_DIR ${LLVM_SOMELIB} PATH CACHE)
message(STATUS "Found LLVM lib directory: ${LLVM_LIB_DIR}")

#Starting from 3.0, that file exists
find_path(LLVM_3_0 NAMES llvm/Support/TargetSelect.h)
if(LLVM_3_0)
set(LLVM_STRING_VERSION "3.0")
set(LLVM_LIBS_CORE LLVMLinker LLVMArchive LLVMBitWriter LLVMBitReader LLVMInstrumentation LLVMipo LLVMInstCombine)
set(LLVM_LIBS_JIT LLVMX86AsmParser LLVMX86AsmPrinter LLVMX86CodeGen LLVMX86Desc LLVMSelectionDAG LLVMAsmPrinter LLVMX86Utils LLVMX86Info LLVMJIT LLVMExecutionEngine LLVMCodeGen LLVMScalarOpts LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport)
else()
set(LLVM_STRING_VERSION "2.8")
set(LLVM_LIBS_CORE LLVMLinker LLVMArchive LLVMBitWriter LLVMBitReader LLVMInstrumentation LLVMScalarOpts LLVMipo LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport LLVMSystem LLVMInstCombine)
set(LLVM_LIBS_JIT LLVMX86AsmParser LLVMX86AsmPrinter LLVMX86CodeGen LLVMSelectionDAG LLVMAsmPrinter LLVMX86Info LLVMJIT LLVMExecutionEngine LLVMCodeGen LLVMScalarOpts LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport LLVMSystem)
endif()
message(STATUS "_Guessed_ LLVM version ${LLVM_STRING_VERSION}")
set(LLVM_COMPILE_FLAGS "")
set(LLVM_LDFLAGS "")
set(LLVM_LIBS_JIT_OBJECTS "")
endif (WIN32)

if (LLVM_INCLUDE_DIR)
set(LLVM_FOUND TRUE)
else (LLVM_INCLUDE_DIR)

find_program(LLVM_CONFIG_EXECUTABLE
NAMES llvm-config
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/usr/lib/llvm-2.7/bin
/usr/lib/llvm-2.8/bin
/usr/lib/llvm-2.9/bin
/usr/lib/llvm-3.0/bin
/usr/lib/llvm-3.1/bin
/usr/lib/llvm-3.2/bin
/usr/lib/llvm-3.3/bin
)

find_program(LLVM_GCC_EXECUTABLE
NAMES llvm-gcc llvmgcc
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/Developer/usr/bin
/usr/lib/llvm-2.7/bin
)

find_program(LLVM_GXX_EXECUTABLE
NAMES llvm-g++ llvmg++
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/Developer/usr/bin
/usr/lib/llvm/llvm/gcc-4.2/bin
/usr/lib/llvm-2.7/bin
)

if(LLVM_GCC_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-gcc found at: ${LLVM_GCC_EXECUTABLE}")
#CMAKE_FORCE_C_COMPILER(${LLVM_GCC_EXECUTABLE} GNU)
endif(LLVM_GCC_EXECUTABLE)

if(LLVM_GXX_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-g++ found at: ${LLVM_GXX_EXECUTABLE}")
#CMAKE_FORCE_CXX_COMPILER(${LLVM_GXX_EXECUTABLE} GNU)
endif(LLVM_GXX_EXECUTABLE)

if(LLVM_CONFIG_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-config found at: ${LLVM_CONFIG_EXECUTABLE}")
else(LLVM_CONFIG_EXECUTABLE)
MESSAGE(FATAL_ERROR "Could NOT find LLVM executable")
endif(LLVM_CONFIG_EXECUTABLE)

MACRO(FIND_LLVM_LIBS LLVM_CONFIG_EXECUTABLE _libname_ LIB_VAR OBJECT_VAR)
exec_program( ${LLVM_CONFIG_EXECUTABLE} ARGS --libs ${_libname_} OUTPUT_VARIABLE ${LIB_VAR} )
STRING(REGEX MATCHALL "[^ ]*[.]o[ $]" ${OBJECT_VAR} ${${LIB_VAR}})
SEPARATE_ARGUMENTS(${OBJECT_VAR})
STRING(REGEX REPLACE "[^ ]*[.]o[ $]" "" ${LIB_VAR} ${${LIB_VAR}})
SEPARATE_ARGUMENTS(${LIB_VAR})
ENDMACRO(FIND_LLVM_LIBS)


# this function borrowed from PlPlot, Copyright (C) 2006 Alan W. Irwin
function(TRANSFORM_VERSION numerical_result version)
# internal_version ignores everything in version after any character that
# is not 0-9 or ".". This should take care of the case when there is
# some non-numerical data in the patch version.
#message(STATUS "DEBUG: version = ${version}")
string(REGEX REPLACE "^([0-9.]+).*$" "\\1" internal_version ${version})

# internal_version is normally a period-delimited triplet string of the form
# "major.minor.patch", but patch and/or minor could be missing.
# Transform internal_version into a numerical result that can be compared.
string(REGEX REPLACE "^([0-9]*).+$" "\\1" major ${internal_version})
string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" minor ${internal_version})
#string(REGEX REPLACE "^[0-9]*\\.[0-9]*\\.([0-9]*)$" "\\1" patch ${internal_version})

#if(NOT patch MATCHES "[0-9]+")
# set(patch 0)
#endif(NOT patch MATCHES "[0-9]+")
set(patch 0)

if(NOT minor MATCHES "[0-9]+")
set(minor 0)
endif(NOT minor MATCHES "[0-9]+")

if(NOT major MATCHES "[0-9]+")
set(major 0)
endif(NOT major MATCHES "[0-9]+")
#message(STATUS "DEBUG: internal_version = ${internal_version}")
#message(STATUS "DEBUG: major = ${major}")
#message(STATUS "DEBUG: minor= ${minor}")
#message(STATUS "DEBUG: patch = ${patch}")
math(EXPR internal_numerical_result
#"${major}*1000000 + ${minor}*1000 + ${patch}"
"${major}*1000000 + ${minor}*1000"
)
#message(STATUS "DEBUG: ${numerical_result} = ${internal_numerical_result}")
set(${numerical_result} ${internal_numerical_result} PARENT_SCOPE)
endfunction(TRANSFORM_VERSION)


exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE LLVM_STRING_VERSION )
MESSAGE(STATUS "LLVM version: " ${LLVM_STRING_VERSION})
transform_version(LLVM_VERSION ${LLVM_STRING_VERSION})

exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --bindir OUTPUT_VARIABLE LLVM_BIN_DIR )
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --libdir OUTPUT_VARIABLE LLVM_LIB_DIR )
#MESSAGE(STATUS "LLVM lib dir: " ${LLVM_LIB_DIR})
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIR )

INCLUDE(CheckIncludeFileCXX)
set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
check_include_file_cxx("llvm/Support/TargetSelect.h" HAVE_SUPPORT_TARGETSELECT_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_SUPPORT_TARGETSELECT_H: " ${HAVE_SUPPORT_TARGETSELECT_H})
IF(HAVE_SUPPORT_TARGETSELECT_H)
ADD_DEFINITIONS(-DHAVE_SUPPORT_TARGETSELECT_H)
ENDIF(HAVE_SUPPORT_TARGETSELECT_H)

set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
set(CMAKE_REQUIRED_DEFINITIONS -D__STDC_LIMIT_MACROS=1 -D__STDC_CONSTANT_MACROS=1)
check_include_file_cxx("llvm/IRBuilder.h" HAVE_IRBUILDER_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_IRBUILDER_H: " ${HAVE_IRBUILDER_H})
IF(HAVE_IRBUILDER_H)
ADD_DEFINITIONS(-DHAVE_IRBUILDER_H)
ENDIF(HAVE_IRBUILDER_H)

set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
check_include_file_cxx("llvm/DataLayout.h" HAVE_DATALAYOUT_H)
check_include_file_cxx("llvm/IR/DataLayout.h" HAVE_IR_DATALAYOUT_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_DATALAYOUT_H: " ${HAVE_DATALAYOUT_H})
MESSAGE(STATUS "HAVE_IR_DATALAYOUT_H: " ${HAVE_IR_DATALAYOUT_H})
IF(HAVE_DATALAYOUT_H)
ADD_DEFINITIONS(-DHAVE_DATALAYOUT_H)
ENDIF(HAVE_DATALAYOUT_H)
IF(HAVE_IR_DATALAYOUT_H)
ADD_DEFINITIONS(-DHAVE_IR_DATALAYOUT_H)
ENDIF(HAVE_IR_DATALAYOUT_H)

exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --cxxflags OUTPUT_VARIABLE LLVM_COMPILE_FLAGS )
MESSAGE(STATUS "LLVM CXX flags: " ${LLVM_COMPILE_FLAGS})
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --ldflags OUTPUT_VARIABLE LLVM_LDFLAGS )
MESSAGE(STATUS "LLVM LD flags: " ${LLVM_LDFLAGS})
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "core ipa ipo instrumentation bitreader bitwriter linker" LLVM_LIBS_CORE LLVM_LIBS_CORE_OBJECTS )
MESSAGE(STATUS "LLVM core libs: " ${LLVM_LIBS_CORE})
IF(APPLE AND UNIVERSAL)
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "jit native x86 PowerPC ARM" LLVM_LIBS_JIT LLVM_LIBS_JIT_OBJECTS )
ELSE(APPLE AND UNIVERSAL)
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "jit native" LLVM_LIBS_JIT LLVM_LIBS_JIT_OBJECTS )
ENDIF(APPLE AND UNIVERSAL)
MESSAGE(STATUS "LLVM JIT libs: " ${LLVM_LIBS_JIT})
MESSAGE(STATUS "LLVM JIT objs: " ${LLVM_LIBS_JIT_OBJECTS})

if(LLVM_INCLUDE_DIR)
set(LLVM_FOUND TRUE)
endif(LLVM_INCLUDE_DIR)

if(LLVM_FOUND)
message(STATUS "Found LLVM: ${LLVM_INCLUDE_DIR}")
else(LLVM_FOUND)
if(LLVM_FIND_REQUIRED)
message(FATAL_ERROR "Could NOT find LLVM")
endif(LLVM_FIND_REQUIRED)
endif(LLVM_FOUND)

endif (LLVM_INCLUDE_DIR)

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
oh hi cmake

Bloody
Mar 3, 2013

Suspicious Dish posted:

# Detect LLVM and set various variable to link against the different component of LLVM
#
# NOTE: This is a modified version of the module originally found in the OpenGTL project
# at https://www.opengtl.org
#
# LLVM_BIN_DIR : directory with LLVM binaries
# LLVM_LIB_DIR : directory with LLVM library
# LLVM_INCLUDE_DIR : directory with LLVM include
#
# LLVM_COMPILE_FLAGS : compile flags needed to build a program using LLVM headers
# LLVM_LDFLAGS : ldflags needed to link
# LLVM_LIBS_CORE : ldflags needed to link against a LLVM core library
# LLVM_LIBS_JIT : ldflags needed to link against a LLVM JIT
# LLVM_LIBS_JIT_OBJECTS : objects you need to add to your source when using LLVM JIT

if(WIN32)
find_path(LLVM_INCLUDE_DIR NAMES llvm/LLVMContext.h)
message(STATUS "Found LLVM include directory: ${LLVM_INCLUDE_DIR}")
find_library(LLVM_SOMELIB NAMES LLVMCore)
GET_FILENAME_COMPONENT(LLVM_LIB_DIR ${LLVM_SOMELIB} PATH CACHE)
message(STATUS "Found LLVM lib directory: ${LLVM_LIB_DIR}")

#Starting from 3.0, that file exists
find_path(LLVM_3_0 NAMES llvm/Support/TargetSelect.h)
if(LLVM_3_0)
set(LLVM_STRING_VERSION "3.0")
set(LLVM_LIBS_CORE LLVMLinker LLVMArchive LLVMBitWriter LLVMBitReader LLVMInstrumentation LLVMipo LLVMInstCombine)
set(LLVM_LIBS_JIT LLVMX86AsmParser LLVMX86AsmPrinter LLVMX86CodeGen LLVMX86Desc LLVMSelectionDAG LLVMAsmPrinter LLVMX86Utils LLVMX86Info LLVMJIT LLVMExecutionEngine LLVMCodeGen LLVMScalarOpts LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport)
else()
set(LLVM_STRING_VERSION "2.8")
set(LLVM_LIBS_CORE LLVMLinker LLVMArchive LLVMBitWriter LLVMBitReader LLVMInstrumentation LLVMScalarOpts LLVMipo LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport LLVMSystem LLVMInstCombine)
set(LLVM_LIBS_JIT LLVMX86AsmParser LLVMX86AsmPrinter LLVMX86CodeGen LLVMSelectionDAG LLVMAsmPrinter LLVMX86Info LLVMJIT LLVMExecutionEngine LLVMCodeGen LLVMScalarOpts LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport LLVMSystem)
endif()
message(STATUS "_Guessed_ LLVM version ${LLVM_STRING_VERSION}")
set(LLVM_COMPILE_FLAGS "")
set(LLVM_LDFLAGS "")
set(LLVM_LIBS_JIT_OBJECTS "")
endif (WIN32)

if (LLVM_INCLUDE_DIR)
set(LLVM_FOUND TRUE)
else (LLVM_INCLUDE_DIR)

find_program(LLVM_CONFIG_EXECUTABLE
NAMES llvm-config
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/usr/lib/llvm-2.7/bin
/usr/lib/llvm-2.8/bin
/usr/lib/llvm-2.9/bin
/usr/lib/llvm-3.0/bin
/usr/lib/llvm-3.1/bin
/usr/lib/llvm-3.2/bin
/usr/lib/llvm-3.3/bin
)

find_program(LLVM_GCC_EXECUTABLE
NAMES llvm-gcc llvmgcc
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/Developer/usr/bin
/usr/lib/llvm-2.7/bin
)

find_program(LLVM_GXX_EXECUTABLE
NAMES llvm-g++ llvmg++
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/Developer/usr/bin
/usr/lib/llvm/llvm/gcc-4.2/bin
/usr/lib/llvm-2.7/bin
)

if(LLVM_GCC_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-gcc found at: ${LLVM_GCC_EXECUTABLE}")
#CMAKE_FORCE_C_COMPILER(${LLVM_GCC_EXECUTABLE} GNU)
endif(LLVM_GCC_EXECUTABLE)

if(LLVM_GXX_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-g++ found at: ${LLVM_GXX_EXECUTABLE}")
#CMAKE_FORCE_CXX_COMPILER(${LLVM_GXX_EXECUTABLE} GNU)
endif(LLVM_GXX_EXECUTABLE)

if(LLVM_CONFIG_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-config found at: ${LLVM_CONFIG_EXECUTABLE}")
else(LLVM_CONFIG_EXECUTABLE)
MESSAGE(FATAL_ERROR "Could NOT find LLVM executable")
endif(LLVM_CONFIG_EXECUTABLE)

MACRO(FIND_LLVM_LIBS LLVM_CONFIG_EXECUTABLE _libname_ LIB_VAR OBJECT_VAR)
exec_program( ${LLVM_CONFIG_EXECUTABLE} ARGS --libs ${_libname_} OUTPUT_VARIABLE ${LIB_VAR} )
STRING(REGEX MATCHALL "[^ ]*[.]o[ $]" ${OBJECT_VAR} ${${LIB_VAR}})
SEPARATE_ARGUMENTS(${OBJECT_VAR})
STRING(REGEX REPLACE "[^ ]*[.]o[ $]" "" ${LIB_VAR} ${${LIB_VAR}})
SEPARATE_ARGUMENTS(${LIB_VAR})
ENDMACRO(FIND_LLVM_LIBS)


# this function borrowed from PlPlot, Copyright (C) 2006 Alan W. Irwin
function(TRANSFORM_VERSION numerical_result version)
# internal_version ignores everything in version after any character that
# is not 0-9 or ".". This should take care of the case when there is
# some non-numerical data in the patch version.
#message(STATUS "DEBUG: version = ${version}")
string(REGEX REPLACE "^([0-9.]+).*$" "\\1" internal_version ${version})

# internal_version is normally a period-delimited triplet string of the form
# "major.minor.patch", but patch and/or minor could be missing.
# Transform internal_version into a numerical result that can be compared.
string(REGEX REPLACE "^([0-9]*).+$" "\\1" major ${internal_version})
string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" minor ${internal_version})
#string(REGEX REPLACE "^[0-9]*\\.[0-9]*\\.([0-9]*)$" "\\1" patch ${internal_version})

#if(NOT patch MATCHES "[0-9]+")
# set(patch 0)
#endif(NOT patch MATCHES "[0-9]+")
set(patch 0)

if(NOT minor MATCHES "[0-9]+")
set(minor 0)
endif(NOT minor MATCHES "[0-9]+")

if(NOT major MATCHES "[0-9]+")
set(major 0)
endif(NOT major MATCHES "[0-9]+")
#message(STATUS "DEBUG: internal_version = ${internal_version}")
#message(STATUS "DEBUG: major = ${major}")
#message(STATUS "DEBUG: minor= ${minor}")
#message(STATUS "DEBUG: patch = ${patch}")
math(EXPR internal_numerical_result
#"${major}*1000000 + ${minor}*1000 + ${patch}"
"${major}*1000000 + ${minor}*1000"
)
#message(STATUS "DEBUG: ${numerical_result} = ${internal_numerical_result}")
set(${numerical_result} ${internal_numerical_result} PARENT_SCOPE)
endfunction(TRANSFORM_VERSION)


exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE LLVM_STRING_VERSION )
MESSAGE(STATUS "LLVM version: " ${LLVM_STRING_VERSION})
transform_version(LLVM_VERSION ${LLVM_STRING_VERSION})

exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --bindir OUTPUT_VARIABLE LLVM_BIN_DIR )
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --libdir OUTPUT_VARIABLE LLVM_LIB_DIR )
#MESSAGE(STATUS "LLVM lib dir: " ${LLVM_LIB_DIR})
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIR )

INCLUDE(CheckIncludeFileCXX)
set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
check_include_file_cxx("llvm/Support/TargetSelect.h" HAVE_SUPPORT_TARGETSELECT_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_SUPPORT_TARGETSELECT_H: " ${HAVE_SUPPORT_TARGETSELECT_H})
IF(HAVE_SUPPORT_TARGETSELECT_H)
ADD_DEFINITIONS(-DHAVE_SUPPORT_TARGETSELECT_H)
ENDIF(HAVE_SUPPORT_TARGETSELECT_H)

set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
set(CMAKE_REQUIRED_DEFINITIONS -D__STDC_LIMIT_MACROS=1 -D__STDC_CONSTANT_MACROS=1)
check_include_file_cxx("llvm/IRBuilder.h" HAVE_IRBUILDER_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_IRBUILDER_H: " ${HAVE_IRBUILDER_H})
IF(HAVE_IRBUILDER_H)
ADD_DEFINITIONS(-DHAVE_IRBUILDER_H)
ENDIF(HAVE_IRBUILDER_H)

set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
check_include_file_cxx("llvm/DataLayout.h" HAVE_DATALAYOUT_H)
check_include_file_cxx("llvm/IR/DataLayout.h" HAVE_IR_DATALAYOUT_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_DATALAYOUT_H: " ${HAVE_DATALAYOUT_H})
MESSAGE(STATUS "HAVE_IR_DATALAYOUT_H: " ${HAVE_IR_DATALAYOUT_H})
IF(HAVE_DATALAYOUT_H)
ADD_DEFINITIONS(-DHAVE_DATALAYOUT_H)
ENDIF(HAVE_DATALAYOUT_H)
IF(HAVE_IR_DATALAYOUT_H)
ADD_DEFINITIONS(-DHAVE_IR_DATALAYOUT_H)
ENDIF(HAVE_IR_DATALAYOUT_H)

exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --cxxflags OUTPUT_VARIABLE LLVM_COMPILE_FLAGS )
MESSAGE(STATUS "LLVM CXX flags: " ${LLVM_COMPILE_FLAGS})
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --ldflags OUTPUT_VARIABLE LLVM_LDFLAGS )
MESSAGE(STATUS "LLVM LD flags: " ${LLVM_LDFLAGS})
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "core ipa ipo instrumentation bitreader bitwriter linker" LLVM_LIBS_CORE LLVM_LIBS_CORE_OBJECTS )
MESSAGE(STATUS "LLVM core libs: " ${LLVM_LIBS_CORE})
IF(APPLE AND UNIVERSAL)
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "jit native x86 PowerPC ARM" LLVM_LIBS_JIT LLVM_LIBS_JIT_OBJECTS )
ELSE(APPLE AND UNIVERSAL)
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "jit native" LLVM_LIBS_JIT LLVM_LIBS_JIT_OBJECTS )
ENDIF(APPLE AND UNIVERSAL)
MESSAGE(STATUS "LLVM JIT libs: " ${LLVM_LIBS_JIT})
MESSAGE(STATUS "LLVM JIT objs: " ${LLVM_LIBS_JIT_OBJECTS})

if(LLVM_INCLUDE_DIR)
set(LLVM_FOUND TRUE)
endif(LLVM_INCLUDE_DIR)

if(LLVM_FOUND)
message(STATUS "Found LLVM: ${LLVM_INCLUDE_DIR}")
else(LLVM_FOUND)
if(LLVM_FIND_REQUIRED)
message(FATAL_ERROR "Could NOT find LLVM")
endif(LLVM_FIND_REQUIRED)
endif(LLVM_FOUND)

endif (LLVM_INCLUDE_DIR)
same

compuserved
Mar 20, 2006

Nap Ghost

Suspicious Dish posted:

# Detect LLVM and set various variable to link against the different component of LLVM

[...]

endif (LLVM_INCLUDE_DIR)

lol okay question answered

salted hash browns
Mar 26, 2007
ykrop

Suspicious Dish posted:

# Detect LLVM and set various variable to link against the different component of LLVM
#
# NOTE: This is a modified version of the module originally found in the OpenGTL project
# at https://www.opengtl.org
#
# LLVM_BIN_DIR : directory with LLVM binaries
# LLVM_LIB_DIR : directory with LLVM library
# LLVM_INCLUDE_DIR : directory with LLVM include
#
# LLVM_COMPILE_FLAGS : compile flags needed to build a program using LLVM headers
# LLVM_LDFLAGS : ldflags needed to link
# LLVM_LIBS_CORE : ldflags needed to link against a LLVM core library
# LLVM_LIBS_JIT : ldflags needed to link against a LLVM JIT
# LLVM_LIBS_JIT_OBJECTS : objects you need to add to your source when using LLVM JIT

if(WIN32)
find_path(LLVM_INCLUDE_DIR NAMES llvm/LLVMContext.h)
message(STATUS "Found LLVM include directory: ${LLVM_INCLUDE_DIR}")
find_library(LLVM_SOMELIB NAMES LLVMCore)
GET_FILENAME_COMPONENT(LLVM_LIB_DIR ${LLVM_SOMELIB} PATH CACHE)
message(STATUS "Found LLVM lib directory: ${LLVM_LIB_DIR}")

#Starting from 3.0, that file exists
find_path(LLVM_3_0 NAMES llvm/Support/TargetSelect.h)
if(LLVM_3_0)
set(LLVM_STRING_VERSION "3.0")
set(LLVM_LIBS_CORE LLVMLinker LLVMArchive LLVMBitWriter LLVMBitReader LLVMInstrumentation LLVMipo LLVMInstCombine)
set(LLVM_LIBS_JIT LLVMX86AsmParser LLVMX86AsmPrinter LLVMX86CodeGen LLVMX86Desc LLVMSelectionDAG LLVMAsmPrinter LLVMX86Utils LLVMX86Info LLVMJIT LLVMExecutionEngine LLVMCodeGen LLVMScalarOpts LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport)
else()
set(LLVM_STRING_VERSION "2.8")
set(LLVM_LIBS_CORE LLVMLinker LLVMArchive LLVMBitWriter LLVMBitReader LLVMInstrumentation LLVMScalarOpts LLVMipo LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport LLVMSystem LLVMInstCombine)
set(LLVM_LIBS_JIT LLVMX86AsmParser LLVMX86AsmPrinter LLVMX86CodeGen LLVMSelectionDAG LLVMAsmPrinter LLVMX86Info LLVMJIT LLVMExecutionEngine LLVMCodeGen LLVMScalarOpts LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport LLVMSystem)
endif()
message(STATUS "_Guessed_ LLVM version ${LLVM_STRING_VERSION}")
set(LLVM_COMPILE_FLAGS "")
set(LLVM_LDFLAGS "")
set(LLVM_LIBS_JIT_OBJECTS "")
endif (WIN32)

if (LLVM_INCLUDE_DIR)
set(LLVM_FOUND TRUE)
else (LLVM_INCLUDE_DIR)

find_program(LLVM_CONFIG_EXECUTABLE
NAMES llvm-config
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/usr/lib/llvm-2.7/bin
/usr/lib/llvm-2.8/bin
/usr/lib/llvm-2.9/bin
/usr/lib/llvm-3.0/bin
/usr/lib/llvm-3.1/bin
/usr/lib/llvm-3.2/bin
/usr/lib/llvm-3.3/bin
)

find_program(LLVM_GCC_EXECUTABLE
NAMES llvm-gcc llvmgcc
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/Developer/usr/bin
/usr/lib/llvm-2.7/bin
)

find_program(LLVM_GXX_EXECUTABLE
NAMES llvm-g++ llvmg++
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/Developer/usr/bin
/usr/lib/llvm/llvm/gcc-4.2/bin
/usr/lib/llvm-2.7/bin
)

if(LLVM_GCC_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-gcc found at: ${LLVM_GCC_EXECUTABLE}")
#CMAKE_FORCE_C_COMPILER(${LLVM_GCC_EXECUTABLE} GNU)
endif(LLVM_GCC_EXECUTABLE)

if(LLVM_GXX_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-g++ found at: ${LLVM_GXX_EXECUTABLE}")
#CMAKE_FORCE_CXX_COMPILER(${LLVM_GXX_EXECUTABLE} GNU)
endif(LLVM_GXX_EXECUTABLE)

if(LLVM_CONFIG_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-config found at: ${LLVM_CONFIG_EXECUTABLE}")
else(LLVM_CONFIG_EXECUTABLE)
MESSAGE(FATAL_ERROR "Could NOT find LLVM executable")
endif(LLVM_CONFIG_EXECUTABLE)

MACRO(FIND_LLVM_LIBS LLVM_CONFIG_EXECUTABLE _libname_ LIB_VAR OBJECT_VAR)
exec_program( ${LLVM_CONFIG_EXECUTABLE} ARGS --libs ${_libname_} OUTPUT_VARIABLE ${LIB_VAR} )
STRING(REGEX MATCHALL "[^ ]*[.]o[ $]" ${OBJECT_VAR} ${${LIB_VAR}})
SEPARATE_ARGUMENTS(${OBJECT_VAR})
STRING(REGEX REPLACE "[^ ]*[.]o[ $]" "" ${LIB_VAR} ${${LIB_VAR}})
SEPARATE_ARGUMENTS(${LIB_VAR})
ENDMACRO(FIND_LLVM_LIBS)


# this function borrowed from PlPlot, Copyright (C) 2006 Alan W. Irwin
function(TRANSFORM_VERSION numerical_result version)
# internal_version ignores everything in version after any character that
# is not 0-9 or ".". This should take care of the case when there is
# some non-numerical data in the patch version.
#message(STATUS "DEBUG: version = ${version}")
string(REGEX REPLACE "^([0-9.]+).*$" "\\1" internal_version ${version})

# internal_version is normally a period-delimited triplet string of the form
# "major.minor.patch", but patch and/or minor could be missing.
# Transform internal_version into a numerical result that can be compared.
string(REGEX REPLACE "^([0-9]*).+$" "\\1" major ${internal_version})
string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" minor ${internal_version})
#string(REGEX REPLACE "^[0-9]*\\.[0-9]*\\.([0-9]*)$" "\\1" patch ${internal_version})

#if(NOT patch MATCHES "[0-9]+")
# set(patch 0)
#endif(NOT patch MATCHES "[0-9]+")
set(patch 0)

if(NOT minor MATCHES "[0-9]+")
set(minor 0)
endif(NOT minor MATCHES "[0-9]+")

if(NOT major MATCHES "[0-9]+")
set(major 0)
endif(NOT major MATCHES "[0-9]+")
#message(STATUS "DEBUG: internal_version = ${internal_version}")
#message(STATUS "DEBUG: major = ${major}")
#message(STATUS "DEBUG: minor= ${minor}")
#message(STATUS "DEBUG: patch = ${patch}")
math(EXPR internal_numerical_result
#"${major}*1000000 + ${minor}*1000 + ${patch}"
"${major}*1000000 + ${minor}*1000"
)
#message(STATUS "DEBUG: ${numerical_result} = ${internal_numerical_result}")
set(${numerical_result} ${internal_numerical_result} PARENT_SCOPE)
endfunction(TRANSFORM_VERSION)


exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE LLVM_STRING_VERSION )
MESSAGE(STATUS "LLVM version: " ${LLVM_STRING_VERSION})
transform_version(LLVM_VERSION ${LLVM_STRING_VERSION})

exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --bindir OUTPUT_VARIABLE LLVM_BIN_DIR )
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --libdir OUTPUT_VARIABLE LLVM_LIB_DIR )
#MESSAGE(STATUS "LLVM lib dir: " ${LLVM_LIB_DIR})
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIR )

INCLUDE(CheckIncludeFileCXX)
set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
check_include_file_cxx("llvm/Support/TargetSelect.h" HAVE_SUPPORT_TARGETSELECT_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_SUPPORT_TARGETSELECT_H: " ${HAVE_SUPPORT_TARGETSELECT_H})
IF(HAVE_SUPPORT_TARGETSELECT_H)
ADD_DEFINITIONS(-DHAVE_SUPPORT_TARGETSELECT_H)
ENDIF(HAVE_SUPPORT_TARGETSELECT_H)

set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
set(CMAKE_REQUIRED_DEFINITIONS -D__STDC_LIMIT_MACROS=1 -D__STDC_CONSTANT_MACROS=1)
check_include_file_cxx("llvm/IRBuilder.h" HAVE_IRBUILDER_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_IRBUILDER_H: " ${HAVE_IRBUILDER_H})
IF(HAVE_IRBUILDER_H)
ADD_DEFINITIONS(-DHAVE_IRBUILDER_H)
ENDIF(HAVE_IRBUILDER_H)

set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
check_include_file_cxx("llvm/DataLayout.h" HAVE_DATALAYOUT_H)
check_include_file_cxx("llvm/IR/DataLayout.h" HAVE_IR_DATALAYOUT_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_DATALAYOUT_H: " ${HAVE_DATALAYOUT_H})
MESSAGE(STATUS "HAVE_IR_DATALAYOUT_H: " ${HAVE_IR_DATALAYOUT_H})
IF(HAVE_DATALAYOUT_H)
ADD_DEFINITIONS(-DHAVE_DATALAYOUT_H)
ENDIF(HAVE_DATALAYOUT_H)
IF(HAVE_IR_DATALAYOUT_H)
ADD_DEFINITIONS(-DHAVE_IR_DATALAYOUT_H)
ENDIF(HAVE_IR_DATALAYOUT_H)

exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --cxxflags OUTPUT_VARIABLE LLVM_COMPILE_FLAGS )
MESSAGE(STATUS "LLVM CXX flags: " ${LLVM_COMPILE_FLAGS})
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --ldflags OUTPUT_VARIABLE LLVM_LDFLAGS )
MESSAGE(STATUS "LLVM LD flags: " ${LLVM_LDFLAGS})
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "core ipa ipo instrumentation bitreader bitwriter linker" LLVM_LIBS_CORE LLVM_LIBS_CORE_OBJECTS )
MESSAGE(STATUS "LLVM core libs: " ${LLVM_LIBS_CORE})
IF(APPLE AND UNIVERSAL)
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "jit native x86 PowerPC ARM" LLVM_LIBS_JIT LLVM_LIBS_JIT_OBJECTS )
ELSE(APPLE AND UNIVERSAL)
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "jit native" LLVM_LIBS_JIT LLVM_LIBS_JIT_OBJECTS )
ENDIF(APPLE AND UNIVERSAL)
MESSAGE(STATUS "LLVM JIT libs: " ${LLVM_LIBS_JIT})
MESSAGE(STATUS "LLVM JIT objs: " ${LLVM_LIBS_JIT_OBJECTS})

if(LLVM_INCLUDE_DIR)
set(LLVM_FOUND TRUE)
endif(LLVM_INCLUDE_DIR)

if(LLVM_FOUND)
message(STATUS "Found LLVM: ${LLVM_INCLUDE_DIR}")
else(LLVM_FOUND)
if(LLVM_FIND_REQUIRED)
message(FATAL_ERROR "Could NOT find LLVM")
endif(LLVM_FIND_REQUIRED)
endif(LLVM_FOUND)

endif (LLVM_INCLUDE_DIR)

this looks terrible

Moist von Lipwig
Oct 28, 2006

by FactsAreUseless
Tortured By Flan
that's some of the ugliest code i ever seen

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
i just want to point out

PKG_CHECK_MODULES(LLVM, llvm >= 3.6)

there's the autotools version

autotools may be m4, but at least that has a specification and reference guide compared to some sed expressions the cmake authors thought would excuse for a macro system.

Catalyst-proof
May 11, 2011

better waste some time with you
oh god cmake

flashback to undergrad

pseudorandom name
May 6, 2007

the cmake version is pkg_check_modules(LLVM llvm>=3.6)

except llvm doesn't actually ship a .pc file

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
http://www.cmake.org/cmake/help/v2.8.11/cmake.html#module:FindPkgConfig

oh yeah they finally fixed that

Phobeste
Apr 9, 2006

never, like, count out Touchdown Tom, man

B-smooth posted:

what about cmake?

agh

Shaggar
Apr 26, 2006

Suspicious Dish posted:

# Detect LLVM and set various variable to link against the different component of LLVM
#
# NOTE: This is a modified version of the module originally found in the OpenGTL project
# at https://www.opengtl.org
#
# LLVM_BIN_DIR : directory with LLVM binaries
# LLVM_LIB_DIR : directory with LLVM library
# LLVM_INCLUDE_DIR : directory with LLVM include
#
# LLVM_COMPILE_FLAGS : compile flags needed to build a program using LLVM headers
# LLVM_LDFLAGS : ldflags needed to link
# LLVM_LIBS_CORE : ldflags needed to link against a LLVM core library
# LLVM_LIBS_JIT : ldflags needed to link against a LLVM JIT
# LLVM_LIBS_JIT_OBJECTS : objects you need to add to your source when using LLVM JIT

if(WIN32)
find_path(LLVM_INCLUDE_DIR NAMES llvm/LLVMContext.h)
message(STATUS "Found LLVM include directory: ${LLVM_INCLUDE_DIR}")
find_library(LLVM_SOMELIB NAMES LLVMCore)
GET_FILENAME_COMPONENT(LLVM_LIB_DIR ${LLVM_SOMELIB} PATH CACHE)
message(STATUS "Found LLVM lib directory: ${LLVM_LIB_DIR}")

#Starting from 3.0, that file exists
find_path(LLVM_3_0 NAMES llvm/Support/TargetSelect.h)
if(LLVM_3_0)
set(LLVM_STRING_VERSION "3.0")
set(LLVM_LIBS_CORE LLVMLinker LLVMArchive LLVMBitWriter LLVMBitReader LLVMInstrumentation LLVMipo LLVMInstCombine)
set(LLVM_LIBS_JIT LLVMX86AsmParser LLVMX86AsmPrinter LLVMX86CodeGen LLVMX86Desc LLVMSelectionDAG LLVMAsmPrinter LLVMX86Utils LLVMX86Info LLVMJIT LLVMExecutionEngine LLVMCodeGen LLVMScalarOpts LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport)
else()
set(LLVM_STRING_VERSION "2.8")
set(LLVM_LIBS_CORE LLVMLinker LLVMArchive LLVMBitWriter LLVMBitReader LLVMInstrumentation LLVMScalarOpts LLVMipo LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport LLVMSystem LLVMInstCombine)
set(LLVM_LIBS_JIT LLVMX86AsmParser LLVMX86AsmPrinter LLVMX86CodeGen LLVMSelectionDAG LLVMAsmPrinter LLVMX86Info LLVMJIT LLVMExecutionEngine LLVMCodeGen LLVMScalarOpts LLVMTransformUtils LLVMipa LLVMAnalysis LLVMTarget LLVMMC LLVMCore LLVMSupport LLVMSystem)
endif()
message(STATUS "_Guessed_ LLVM version ${LLVM_STRING_VERSION}")
set(LLVM_COMPILE_FLAGS "")
set(LLVM_LDFLAGS "")
set(LLVM_LIBS_JIT_OBJECTS "")
endif (WIN32)

if (LLVM_INCLUDE_DIR)
set(LLVM_FOUND TRUE)
else (LLVM_INCLUDE_DIR)

find_program(LLVM_CONFIG_EXECUTABLE
NAMES llvm-config
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/usr/lib/llvm-2.7/bin
/usr/lib/llvm-2.8/bin
/usr/lib/llvm-2.9/bin
/usr/lib/llvm-3.0/bin
/usr/lib/llvm-3.1/bin
/usr/lib/llvm-3.2/bin
/usr/lib/llvm-3.3/bin
)

find_program(LLVM_GCC_EXECUTABLE
NAMES llvm-gcc llvmgcc
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/Developer/usr/bin
/usr/lib/llvm-2.7/bin
)

find_program(LLVM_GXX_EXECUTABLE
NAMES llvm-g++ llvmg++
PATHS
/opt/local/bin
/opt/llvm/2.7/bin
/opt/llvm/bin
/Developer/usr/bin
/usr/lib/llvm/llvm/gcc-4.2/bin
/usr/lib/llvm-2.7/bin
)

if(LLVM_GCC_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-gcc found at: ${LLVM_GCC_EXECUTABLE}")
#CMAKE_FORCE_C_COMPILER(${LLVM_GCC_EXECUTABLE} GNU)
endif(LLVM_GCC_EXECUTABLE)

if(LLVM_GXX_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-g++ found at: ${LLVM_GXX_EXECUTABLE}")
#CMAKE_FORCE_CXX_COMPILER(${LLVM_GXX_EXECUTABLE} GNU)
endif(LLVM_GXX_EXECUTABLE)

if(LLVM_CONFIG_EXECUTABLE)
MESSAGE(STATUS "LLVM llvm-config found at: ${LLVM_CONFIG_EXECUTABLE}")
else(LLVM_CONFIG_EXECUTABLE)
MESSAGE(FATAL_ERROR "Could NOT find LLVM executable")
endif(LLVM_CONFIG_EXECUTABLE)

MACRO(FIND_LLVM_LIBS LLVM_CONFIG_EXECUTABLE _libname_ LIB_VAR OBJECT_VAR)
exec_program( ${LLVM_CONFIG_EXECUTABLE} ARGS --libs ${_libname_} OUTPUT_VARIABLE ${LIB_VAR} )
STRING(REGEX MATCHALL "[^ ]*[.]o[ $]" ${OBJECT_VAR} ${${LIB_VAR}})
SEPARATE_ARGUMENTS(${OBJECT_VAR})
STRING(REGEX REPLACE "[^ ]*[.]o[ $]" "" ${LIB_VAR} ${${LIB_VAR}})
SEPARATE_ARGUMENTS(${LIB_VAR})
ENDMACRO(FIND_LLVM_LIBS)


# this function borrowed from PlPlot, Copyright (C) 2006 Alan W. Irwin
function(TRANSFORM_VERSION numerical_result version)
# internal_version ignores everything in version after any character that
# is not 0-9 or ".". This should take care of the case when there is
# some non-numerical data in the patch version.
#message(STATUS "DEBUG: version = ${version}")
string(REGEX REPLACE "^([0-9.]+).*$" "\\1" internal_version ${version})

# internal_version is normally a period-delimited triplet string of the form
# "major.minor.patch", but patch and/or minor could be missing.
# Transform internal_version into a numerical result that can be compared.
string(REGEX REPLACE "^([0-9]*).+$" "\\1" major ${internal_version})
string(REGEX REPLACE "^[0-9]*\\.([0-9]*).*$" "\\1" minor ${internal_version})
#string(REGEX REPLACE "^[0-9]*\\.[0-9]*\\.([0-9]*)$" "\\1" patch ${internal_version})

#if(NOT patch MATCHES "[0-9]+")
# set(patch 0)
#endif(NOT patch MATCHES "[0-9]+")
set(patch 0)

if(NOT minor MATCHES "[0-9]+")
set(minor 0)
endif(NOT minor MATCHES "[0-9]+")

if(NOT major MATCHES "[0-9]+")
set(major 0)
endif(NOT major MATCHES "[0-9]+")
#message(STATUS "DEBUG: internal_version = ${internal_version}")
#message(STATUS "DEBUG: major = ${major}")
#message(STATUS "DEBUG: minor= ${minor}")
#message(STATUS "DEBUG: patch = ${patch}")
math(EXPR internal_numerical_result
#"${major}*1000000 + ${minor}*1000 + ${patch}"
"${major}*1000000 + ${minor}*1000"
)
#message(STATUS "DEBUG: ${numerical_result} = ${internal_numerical_result}")
set(${numerical_result} ${internal_numerical_result} PARENT_SCOPE)
endfunction(TRANSFORM_VERSION)


exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE LLVM_STRING_VERSION )
MESSAGE(STATUS "LLVM version: " ${LLVM_STRING_VERSION})
transform_version(LLVM_VERSION ${LLVM_STRING_VERSION})

exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --bindir OUTPUT_VARIABLE LLVM_BIN_DIR )
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --libdir OUTPUT_VARIABLE LLVM_LIB_DIR )
#MESSAGE(STATUS "LLVM lib dir: " ${LLVM_LIB_DIR})
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --includedir OUTPUT_VARIABLE LLVM_INCLUDE_DIR )

INCLUDE(CheckIncludeFileCXX)
set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
check_include_file_cxx("llvm/Support/TargetSelect.h" HAVE_SUPPORT_TARGETSELECT_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_SUPPORT_TARGETSELECT_H: " ${HAVE_SUPPORT_TARGETSELECT_H})
IF(HAVE_SUPPORT_TARGETSELECT_H)
ADD_DEFINITIONS(-DHAVE_SUPPORT_TARGETSELECT_H)
ENDIF(HAVE_SUPPORT_TARGETSELECT_H)

set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
set(CMAKE_REQUIRED_DEFINITIONS -D__STDC_LIMIT_MACROS=1 -D__STDC_CONSTANT_MACROS=1)
check_include_file_cxx("llvm/IRBuilder.h" HAVE_IRBUILDER_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_IRBUILDER_H: " ${HAVE_IRBUILDER_H})
IF(HAVE_IRBUILDER_H)
ADD_DEFINITIONS(-DHAVE_IRBUILDER_H)
ENDIF(HAVE_IRBUILDER_H)

set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIR})
check_include_file_cxx("llvm/DataLayout.h" HAVE_DATALAYOUT_H)
check_include_file_cxx("llvm/IR/DataLayout.h" HAVE_IR_DATALAYOUT_H)
unset(CMAKE_REQUIRED_INCLUDES)
MESSAGE(STATUS "HAVE_DATALAYOUT_H: " ${HAVE_DATALAYOUT_H})
MESSAGE(STATUS "HAVE_IR_DATALAYOUT_H: " ${HAVE_IR_DATALAYOUT_H})
IF(HAVE_DATALAYOUT_H)
ADD_DEFINITIONS(-DHAVE_DATALAYOUT_H)
ENDIF(HAVE_DATALAYOUT_H)
IF(HAVE_IR_DATALAYOUT_H)
ADD_DEFINITIONS(-DHAVE_IR_DATALAYOUT_H)
ENDIF(HAVE_IR_DATALAYOUT_H)

exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --cxxflags OUTPUT_VARIABLE LLVM_COMPILE_FLAGS )
MESSAGE(STATUS "LLVM CXX flags: " ${LLVM_COMPILE_FLAGS})
exec_program(${LLVM_CONFIG_EXECUTABLE} ARGS --ldflags OUTPUT_VARIABLE LLVM_LDFLAGS )
MESSAGE(STATUS "LLVM LD flags: " ${LLVM_LDFLAGS})
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "core ipa ipo instrumentation bitreader bitwriter linker" LLVM_LIBS_CORE LLVM_LIBS_CORE_OBJECTS )
MESSAGE(STATUS "LLVM core libs: " ${LLVM_LIBS_CORE})
IF(APPLE AND UNIVERSAL)
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "jit native x86 PowerPC ARM" LLVM_LIBS_JIT LLVM_LIBS_JIT_OBJECTS )
ELSE(APPLE AND UNIVERSAL)
FIND_LLVM_LIBS( ${LLVM_CONFIG_EXECUTABLE} "jit native" LLVM_LIBS_JIT LLVM_LIBS_JIT_OBJECTS )
ENDIF(APPLE AND UNIVERSAL)
MESSAGE(STATUS "LLVM JIT libs: " ${LLVM_LIBS_JIT})
MESSAGE(STATUS "LLVM JIT objs: " ${LLVM_LIBS_JIT_OBJECTS})

if(LLVM_INCLUDE_DIR)
set(LLVM_FOUND TRUE)
endif(LLVM_INCLUDE_DIR)

if(LLVM_FOUND)
message(STATUS "Found LLVM: ${LLVM_INCLUDE_DIR}")
else(LLVM_FOUND)
if(LLVM_FIND_REQUIRED)
message(FATAL_ERROR "Could NOT find LLVM")
endif(LLVM_FIND_REQUIRED)
endif(LLVM_FOUND)

endif (LLVM_INCLUDE_DIR)

lol. I cant believe people actually used to use this kind of stuff way back in the day. man that would have sucked.

Sapozhnik
Jan 2, 2005

Nap Ghost

uG posted:

how dare you leave out excel

please don't give me flashbacks to 2008-2011 thx

Sapozhnik
Jan 2, 2005

Nap Ghost

Mr Dog posted:

I worked in industry once and I had to work on a big Win32 server project that was a three-way trainwreck of Boost fanatic C++, Microsoft style C++, and let's-pretend-it's-Java C++. It had lots of plugins and there was also lots and lots of XML.

It was somewhat strait-jacketed by a very rigid framework written by another team that had long since disowned it, and it was pretty bad in general, but nothing particularly soul crushing. Maybe the bit where they later added composable lambdas to Excel's expression language and allowed those composed lambdas to be compiled and executed externally within this server framework was somewhat outstandingly awful but that's about it

w,tmss

Mr Dog posted:

Give spergs a boring problem and they'll add complexity to it until it becomes an interesting one.

and if by "art for art's sake" you mean "masturbatory exercise in which it is incredibly painful to do anything more complicated than apply Pythagoras' Theorem", then yes.

I believe they attached semantics to certain cell background colours when they discovered that diff-merging a two-dimensional grid of expressions is actually kind of hard

JawnV6
Jul 4, 2004

So hot ...
so wait someone's srsly stumping autotools over cmake?

Nomnom Cookie
Aug 30, 2009



ofc

zokie
Feb 13, 2006

Out of many, Sweden


Running some CICSO remote desktop thingy, were are your precious exceptions now, Shaggar?

Max Facetime
Apr 18, 2009

zokie posted:



Running some CICSO remote desktop thingy, were are your precious exceptions now, Shaggar?

it's in a log file somewhere, don't you worry

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



hey yospos i have some code on github and a dude asked me what license its under cause he would like to use it in a commercial app

so whats a good one thats not too spergy

uG
Apr 23, 2003

by Ralp
Dual license artistic/gpl2 spergpremacy

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



i just wanna let him use it w attribution and he has to give me changes back but i dont care how he links or anything, whatever

Jonny 290
May 5, 2005



[ASK] me about OS/2 Warp
death and repudiation license ftw

https://github.com/indeyets/syck/blob/master/COPYING

uG
Apr 23, 2003

by Ralp
artistic then but use 2.0 for reasons I couldn't care less about

uG
Apr 23, 2003

by Ralp
or death license

Jonnty
Aug 2, 2007

The enemy has become a flaming star!


is that a reference to something or does that person think they're more funny than they actually are

Squinty Applebottom
Jan 1, 2013

Jonnty posted:

is that a reference to something or does that person think they're more funny than they actually are

probably both, definitely the second

Jonnty
Aug 2, 2007

The enemy has become a flaming star!

"ha ha zombies r cool" -- all irritating nerds everywhere

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



Jonnty posted:

all nerds irritating everywhere

GameCube
Nov 21, 2006

Jonnty posted:

is that a reference to something or does that person think they're more funny than they actually are

it's _why, so the latter

Nomnom Cookie
Aug 30, 2009



Carthag posted:

i just wanna let him use it w attribution and he has to give me changes back but i dont care how he links or anything, whatever

Gpl or lgpl. Apache 2.0 (my fave license) requires attribution but not upstream contribution. IMO if someone doesn't want to be helpful they'll just give you worthless poo poo patches. No point in forcing it

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe

Carthag posted:

i just wanna let him use it w attribution and he has to give me changes back but i dont care how he links or anything, whatever

thats the mpl. fav license

Shaggar
Apr 26, 2006

Carthag posted:

hey yospos i have some code on github and a dude asked me what license its under cause he would like to use it in a commercial app

so whats a good one thats not too spergy

apache, mit, or bsd.

Shaggar
Apr 26, 2006
gpl2 or gpl3 depending if you hate freedom a little bit or a lot, respectively

prefect
Sep 11, 2001

No one, Woodhouse.
No one.




Dead Man’s Band
artistic license

who doesn't want to be an artist?


also it's a joke on the phrase "artistic license", which i have always appreciated

quote:

Artistic license (also known as dramatic license, historical license, poetic license, narrative license, licentia poetica, or simply license) is a colloquial term, sometimes euphemism, used to denote the distortion of fact, alteration of the conventions of grammar or language, or rewording of pre-existing text made by an artist to improve a piece of art.

Adbot
ADBOT LOVES YOU

Posting Principle
Dec 10, 2011

by Ralp

Shaggar posted:

apache, mit, or bsd.


Shaggar posted:

gpl2 or gpl3 depending if you hate freedom a little bit or a lot, respectively

swr

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply