mirror of
				https://github.com/janet-lang/janet
				synced 2025-10-31 07:33:01 +00:00 
			
		
		
		
	Merge pull request #672 from Luewd/cc-file-ext
Allow .cc file extension in jpm declare-native
This commit is contained in:
		
							
								
								
									
										44
									
								
								jpm
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								jpm
									
									
									
									
									
								
							| @@ -968,17 +968,18 @@ int main(int argc, const char **argv) { | ||||
|   (var has-cpp false) | ||||
|   (def objects | ||||
|     (seq [src :in sources] | ||||
|       (cond | ||||
|         (string/has-suffix? ".cpp" src) | ||||
|         (let [op (out-path src ".cpp" objext)] | ||||
|           (compile-cpp opts src op) | ||||
|           (set has-cpp true) | ||||
|           op) | ||||
|         (string/has-suffix? ".c" src) | ||||
|         (let [op (out-path src ".c" objext)] | ||||
|           (compile-c opts src op) | ||||
|           op) | ||||
|         (errorf "unknown source file type: %s, expected .c or .cpp" src)))) | ||||
|       (def suffix | ||||
|         (cond | ||||
|           (string/has-suffix? ".cpp" src) ".cpp" | ||||
|           (string/has-suffix? ".cc" src) ".cc" | ||||
|           (string/has-suffix? ".c" src) ".c" | ||||
|           (errorf "unknown source file type: %s, expected .c, .cc, or .cpp" src))) | ||||
|       (def op (out-path src suffix objext)) | ||||
|       (if (= suffix ".c") | ||||
|         (compile-c opts src op) | ||||
|         (do (compile-cpp opts src op) | ||||
|           (set has-cpp true))) | ||||
|       op)) | ||||
|  | ||||
|   (when-let [embedded (opts :embedded)] | ||||
|     (loop [src :in embedded] | ||||
| @@ -1016,16 +1017,17 @@ int main(int argc, const char **argv) { | ||||
|     # Get static objects | ||||
|     (def sobjects | ||||
|       (seq [src :in sources] | ||||
|         (cond | ||||
|           (string/has-suffix? ".cpp" src) | ||||
|           (let [op (out-path src ".cpp" sobjext)] | ||||
|             (compile-cpp opts src op true) | ||||
|             op) | ||||
|           (string/has-suffix? ".c" src) | ||||
|           (let [op (out-path src ".c" sobjext)] | ||||
|             (compile-c opts src op true) | ||||
|             op) | ||||
|           (errorf "unknown source file type: %s, expected .c or .cpp")))) | ||||
|         (def suffix | ||||
|           (cond | ||||
|             (string/has-suffix? ".cpp" src) ".cpp" | ||||
|             (string/has-suffix? ".cc" src) ".cc" | ||||
|             (string/has-suffix? ".c" src) ".c" | ||||
|             (errorf "unknown source file type: %s, expected .c, .cc, or .cpp" src))) | ||||
|         (def op (out-path src suffix sobjext)) | ||||
|         (if (= suffix ".c") | ||||
|           (compile-c opts src op true) | ||||
|           (compile-cpp opts src op true)) | ||||
|         op)) | ||||
|  | ||||
|     (when-let [embedded (opts :embedded)] | ||||
|       (loop [src :in embedded] | ||||
|   | ||||
| @@ -2,20 +2,24 @@ | ||||
|   :name "testmod") | ||||
|  | ||||
| (declare-native | ||||
|     :name "testmod" | ||||
|     :source @["testmod.c"]) | ||||
|   :name "testmod" | ||||
|   :source @["testmod.c"]) | ||||
|  | ||||
| (declare-native | ||||
|     :name "testmod2" | ||||
|     :source @["testmod2.c"]) | ||||
|   :name "testmod2" | ||||
|   :source @["testmod2.c"]) | ||||
|  | ||||
| (declare-native | ||||
|     :name "testmod3" | ||||
|     :source @["testmod3.cpp"]) | ||||
|   :name "testmod3" | ||||
|   :source @["testmod3.cpp"]) | ||||
|  | ||||
| (declare-native | ||||
|     :name "test-mod-4" | ||||
|     :source @["testmod4.c"]) | ||||
|   :name "test-mod-4" | ||||
|   :source @["testmod4.c"]) | ||||
|  | ||||
| (declare-native | ||||
|   :name "testmod5" | ||||
|   :source @["testmod5.cc"]) | ||||
|  | ||||
| (declare-executable | ||||
|   :name "testexec" | ||||
|   | ||||
| @@ -2,7 +2,8 @@ | ||||
| (use /build/testmod2) | ||||
| (use /build/testmod3) | ||||
| (use /build/test-mod-4) | ||||
| (use /build/testmod5) | ||||
|  | ||||
| (defn main [&] | ||||
|   (print "Hello from executable!") | ||||
|   (print (+ (get5) (get6) (get7) (get8)))) | ||||
|   (print (+ (get5) (get6) (get7) (get8) (get9)))) | ||||
|   | ||||
							
								
								
									
										42
									
								
								test/install/testmod5.cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								test/install/testmod5.cc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,42 @@ | ||||
| /* | ||||
| * Copyright (c) 2020 Calvin Rose and contributors | ||||
| * | ||||
| * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| * of this software and associated documentation files (the "Software"), to | ||||
| * deal in the Software without restriction, including without limitation the | ||||
| * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | ||||
| * sell copies of the Software, and to permit persons to whom the Software is | ||||
| * furnished to do so, subject to the following conditions: | ||||
| * | ||||
| * The above copyright notice and this permission notice shall be included in | ||||
| * all copies or substantial portions of the Software. | ||||
| * | ||||
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||
| * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||||
| * IN THE SOFTWARE. | ||||
| */ | ||||
|  | ||||
| /* A very simple native module */ | ||||
|  | ||||
| #include <janet.h> | ||||
| #include <iostream> | ||||
|  | ||||
| static Janet cfun_get_nine(int32_t argc, Janet *argv) { | ||||
|     (void) argv; | ||||
|     janet_fixarity(argc, 0); | ||||
|     std::cout << "Hello!" << std::endl; | ||||
|     return janet_wrap_number(9.0); | ||||
| } | ||||
|  | ||||
| static const JanetReg array_cfuns[] = { | ||||
|     {"get9", cfun_get_nine, NULL}, | ||||
|     {NULL, NULL, NULL} | ||||
| }; | ||||
|  | ||||
| JANET_MODULE_ENTRY(JanetTable *env) { | ||||
|     janet_cfuns(env, NULL, array_cfuns); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Calvin Rose
					Calvin Rose