annotate CMakeLists.txt @ 457:90b1d927912a

- suite_aggrs: make sure random memory used doesn't ever result in NaN fp values (for every possible address), as this messes with result comparison
author Tassilo Philipp
date Fri, 28 Jan 2022 14:11:21 +0100
parents 451299d50c1a
children 3c3e321875f7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 # Package: dyncall
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 # File: CMakeLists.txt
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 # Description: DynCall Project cmake files
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 # License:
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 #
371
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
6 # Copyright (c) 2010-2020 Daniel Adler <dadler@uni-goettingen.de>
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
7 # 2020 armasm64 support: Bernhard Urban-Forster <beurba@microsoft.com>
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 # Permission to use, copy, modify, and distribute this software for any
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 # purpose with or without fee is hereby granted, provided that the above
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 # copyright notice and this permission notice appear in all copies.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 #
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 cmake_minimum_required (VERSION 2.6)
149
c12120a1fbc0 - make cmake based builds work on systems without a C++ compiler (thanks Franklin Mathieu)
cslag
parents: 31
diff changeset
23 project(DynCall C)
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "dyncall enables dynamic invocation of machine-level function calls")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 set(CPACK_PACKAGE_VENDOR "dyncall project")
316
dc8bbffc39e6 - fix for some cmake/cpack doc paths (fixup for files that were removed by r303)
Tassilo Philipp
parents: 150
diff changeset
27 set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
dc8bbffc39e6 - fix for some cmake/cpack doc paths (fixup for files that were removed by r303)
Tassilo Philipp
parents: 150
diff changeset
28 set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 if(APPLE)
316
dc8bbffc39e6 - fix for some cmake/cpack doc paths (fixup for files that were removed by r303)
Tassilo Philipp
parents: 150
diff changeset
30 set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README")
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 endif(APPLE)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 set(CPACK_PACKAGE_NAME "dyncall")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33 include(CPack)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 # add cmake modules shipped with the package to cmake's module path.
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36 # currently we have no use for this, but maybe later..
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 #set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/buildsys/cmake/Modules" "${CMAKE_MODULE_PATH}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38
149
c12120a1fbc0 - make cmake based builds work on systems without a C++ compiler (thanks Franklin Mathieu)
cslag
parents: 31
diff changeset
39 option(LANG_CXX "Enable and build C++ tests" ON)
c12120a1fbc0 - make cmake based builds work on systems without a C++ compiler (thanks Franklin Mathieu)
cslag
parents: 31
diff changeset
40
c12120a1fbc0 - make cmake based builds work on systems without a C++ compiler (thanks Franklin Mathieu)
cslag
parents: 31
diff changeset
41 if(LANG_CXX)
c12120a1fbc0 - make cmake based builds work on systems without a C++ compiler (thanks Franklin Mathieu)
cslag
parents: 31
diff changeset
42 enable_language(CXX)
c12120a1fbc0 - make cmake based builds work on systems without a C++ compiler (thanks Franklin Mathieu)
cslag
parents: 31
diff changeset
43 endif()
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44
150
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
45 include(CheckCCompilerFlag)
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
46 check_c_compiler_flag("-fPIC -Werror" COMPILER_HAS_FPIC)
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
47
371
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
48
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
49 # compile_asm(TARGET target ASM_FILES file1 [file2 ...] OUTPUT_OBJECTS [variableName])
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
50 # CMake does not support the ARM or ARM64 assemblers on Windows when using the
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
51 # MSBuild generator.
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
52 # credit to dotnet/runtime:
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
53 # https://github.com/dotnet/runtime/blob/e98fb61d8b4bb6687ccddead861d8b140751647b/eng/native/functions.cmake#L173-L207
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
54 function(compile_asm)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
55 set(options "")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
56 set(oneValueArgs TARGET OUTPUT_OBJECTS)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
57 set(multiValueArgs ASM_FILES)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
58 cmake_parse_arguments(COMPILE_ASM "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGV})
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
59
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
60 set (ASSEMBLED_OBJECTS "")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
61
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
62 foreach(ASM_FILE ${COMPILE_ASM_ASM_FILES})
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
63 get_filename_component(name ${ASM_FILE} NAME_WE)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
64 # Produce object file where CMake would store .obj files for an OBJECT library.
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
65 # ex: artifacts\obj\coreclr\windows.arm64.Debug\src\vm\wks\cee_wks.dir\Debug\AsmHelpers.obj
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
66 set (OBJ_FILE "${CMAKE_CURRENT_BINARY_DIR}/${COMPILE_ASM_TARGET}.dir/${CMAKE_CFG_INTDIR}/${name}.obj")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
67
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
68 # Need to compile asm file using custom command as include directories are not provided to asm compiler
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
69 add_custom_command(OUTPUT ${OBJ_FILE}
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
70 COMMAND "${CMAKE_ASM_COMPILER}" ${ASM_INCLUDE_DIRECTORIES} -o ${OBJ_FILE} ${ASM_FILE}
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
71 DEPENDS ${ASM_FILE}
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
72 COMMENT "Assembling ${ASM_FILE} ---> \"${CMAKE_ASM_COMPILER}\" ${ASM_INCLUDE_DIRECTORIES} -o ${OBJ_FILE} ${ASM_FILE}"+ COMMENT "Assembling ${ASM_FILE} ---> \"${CMAKE_ASM_COMPILER}\" ${ASM_INCLUDE_DIRECTORIES} -o ${OBJ_FILE} ${ASM_FILE}")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
73
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
74 # mark obj as source that does not require compile
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
75 set_source_files_properties(${OBJ_FILE} PROPERTIES EXTERNAL_OBJECT TRUE)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
76
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
77 # Add the generated OBJ in the dependency list so that it gets consumed during linkage
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
78 list(APPEND ASSEMBLED_OBJECTS ${OBJ_FILE})
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
79 endforeach()
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
80
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
81 set(${COMPILE_ASM_OUTPUT_OBJECTS} ${ASSEMBLED_OBJECTS} PARENT_SCOPE)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
82 endfunction()
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
83
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
84
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
85 if(MSVC)
371
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
86 if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "ARM64")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
87 # Explicitly specify the assembler to be used for Arm64 compile
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
88 file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}\\bin\\HostX64\\arm64\\armasm64.exe" CMAKE_ASM_COMPILER)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
89 # file(TO_CMAKE_PATH "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Tools\\MSVC\\14.28.29333\\bin\\HostX64\\arm64\\armasm64.exe" CMAKE_ASM_COMPILER)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
90
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
91 set(CMAKE_ASM_MASM_COMPILER ${CMAKE_ASM_COMPILER})
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
92 message("CMAKE_ASM_MASM_COMPILER explicitly set to: ${CMAKE_ASM_MASM_COMPILER}")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
93 # Enable generic assembly compilation to avoid CMake generate VS proj files that explicitly
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
94 # use ml[64].exe as the assembler.
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
95 enable_language(ASM)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
96 set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded "")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
97 set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL "")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
98 set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug "")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
99 set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL "")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
100 set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
101 else()
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
102 enable_language(ASM_MASM)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
103
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
104 #if(CMAKE_SIZEOF_VOID_P MATCHES 8)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
105 # set(CMAKE_ASM_COMPILER "ml64")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
106 #else()
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
107 # set(CMAKE_ASM_COMPILER "ml")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
108 #endif()
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
109 #set(CMAKE_ASM_COMPILER_ARG1 "/c")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
110 #set(CMAKE_ASM_MASM_SOURCE_FILE_EXTENSIONS asm)
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
111 #set(CMAKE_ASM_MASM_COMPILE_OBJECT "<CMAKE_ASM_MASM_COMPILER> <FLAGS> /c /Fo <OBJECT> <SOURCE>")
451299d50c1a - windows arm64 support (dyncall, dyncallback, cmake support for armasm64), thanks Bernhard Urban-Forster!
Tassilo Philipp
parents: 316
diff changeset
112 endif()
31
6e7b1b7ad9d3 Fixed failing builds when the compiler is ICC/ICPC
Snaipe <franklinmathieu@gmail.com>
parents: 3
diff changeset
113 elseif(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Intel")
150
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
114 if(COMPILER_HAS_FPIC)
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
115 # when used in shared libraries, -fPIC is required by several architectures
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
116 # and platforms (observed on AMD64, Solaris/Sparc).
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
117 # we enable it per default here.
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
118 add_definitions("-fPIC")
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
119 endif()
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
120 # enable gcc as front-end to assembler for .S files
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
121 set(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
122 set(CMAKE_ASM_COMPILER_ARG1 "${CPPFLAGS} -c")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
123 enable_language(ASM)
3
af6c88d34af0 freebsd: bugfix for cmake build
Daniel Adler
parents: 0
diff changeset
124 elseif(CMAKE_COMPILER_IS_CLANG)
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
125 elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "SunPro")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
126 set(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
127 set(CMAKE_ASM_COMPILER_ARG1 "${CPPFLAGS} -c")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
128 enable_language(ASM)
3
af6c88d34af0 freebsd: bugfix for cmake build
Daniel Adler
parents: 0
diff changeset
129 else()
149
c12120a1fbc0 - make cmake based builds work on systems without a C++ compiler (thanks Franklin Mathieu)
cslag
parents: 31
diff changeset
130 if (CMAKE_C_COMPILER_ID STREQUAL "Clang")
150
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
131 if(COMPILER_HAS_FPIC)
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
132 add_definitions("-fPIC")
3cb226f48495 - make cmake based builds check if compiler has -fPIC flag, in order to silence warnings if not (thanks Franklin Mathieu)
cslag
parents: 149
diff changeset
133 endif()
3
af6c88d34af0 freebsd: bugfix for cmake build
Daniel Adler
parents: 0
diff changeset
134 # enable gcc as front-end to assembler for .S files
af6c88d34af0 freebsd: bugfix for cmake build
Daniel Adler
parents: 0
diff changeset
135 set(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}")
af6c88d34af0 freebsd: bugfix for cmake build
Daniel Adler
parents: 0
diff changeset
136 set(CMAKE_ASM_COMPILER_ARG1 "${CPPFLAGS} -c")
af6c88d34af0 freebsd: bugfix for cmake build
Daniel Adler
parents: 0
diff changeset
137 enable_language(ASM)
af6c88d34af0 freebsd: bugfix for cmake build
Daniel Adler
parents: 0
diff changeset
138 endif()
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
139 endif()
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
140
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
141 add_subdirectory(dynload)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
142 add_subdirectory(dyncall)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
143 add_subdirectory(dyncallback)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
144 add_subdirectory(doc/manual EXCLUDE_FROM_ALL)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
145 add_subdirectory(test EXCLUDE_FROM_ALL)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
146
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
147 # install cmake Find scripts (disabled per default)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
148
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
149 option(INSTALL_CMAKE_MODULES "install cmake modules to locate dyncall" "NO")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
150
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
151 if(INSTALL_CMAKE_MODULES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
152 file(GLOB INSTALL_CMAKE_MODULES_FILES buildsys/cmake/Modules/Find*.cmake)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
153 install(FILES ${INSTALL_CMAKE_MODULES_FILES} DESTINATION ${CMAKE_ROOT}/Modules)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
154 endif(INSTALL_CMAKE_MODULES)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
155