annotate CMakeLists.txt @ 553:a93bb23fca8c

win build fix
author Tassilo Philipp
date Mon, 20 Jun 2022 15:25:01 +0200
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